ช่องโหว่ประเภท Using Components with Known Vulnerabilities

37722-200Using Components with Known Vulnerabilities (UCKV) เป็นช่องโหว่ที่พบเจอได้บ่อยที่สุดในช่องโหว่เกือบทุกชนิด ช่องโหว่ประเภทนี้เกิดจาการที่ผู้พัฒนาเว็บแอปพลิเคชันมีการใช้ library framwork ฯลฯ ที่มีช่องโหว่ที่เป็นที่รู้จัก ปัจจุบันเว็บแอปพลิเคชันมีความซับซ้อนและมีส่วนประกอบจำนวนมาก การเฝ้าคอย update security patch ของทุกส่วนนั้นกลายเป็นงานที่ท้าทาย บทความนี้จะอธิบายถึงช่องโหว่ประเภท UCKV ตัวอย่างช่องโหว่ และแนวทางในการป้องกันช่องโหว่ประเภทนี้

อะไรคือ Using Components with Known Vulnerability (UCKV)

UCKV เป็นช่องโหว่ที่อาจจะเรียกได้ว่าเป็นช่องโหว่ที่สามารถทำควาามเข้าใจได้ง่ายที่สุด แต่ว่าสามารถป้องกันได้ลำบาก หากแปลตรงตัว Using Components with Known Vulnerabilities แปลว่าการใช้ส่วนประกอบของเว็บแอปพลิเคชันที่มีช่องโหว่ที่เป็นที่รู้จัก ส่วนประกอบของเว็บแอปพลิเคชันในทีนี้ส่วนใหญ่จะหมายถึงช่องโหว่ในส่วนประกอบของตัวเว็บแอปพลิเคชัน เช่น web framework, JavaScript library, web module เป็นต้น ตัวอย่างเช่น นักพัฒนาใช้ WordPress เป็น CMS เวอร์ชันที่มีช่องโหว่ประกาศไว้ใน CVE ช่องโหว่ของเว็บไซต์นี้จะถูกจัดให้อยู่ในหมวดของ UCKV เนื่องจากมีการใช้ส่วนประกอบที่มีช่องโหว่เป็นที่รู้จัก

สาเหตุหลักของ Using Components with Known Vulnerability (UCKV)

โดยปกติเมื่อเริ่มต้นการพัฒเว็บแอปพลิเคชัน นักพัฒนาโปรแกรมควรที่จะใช้ส่วนประกอบทุกส่วนเวอร์ชันล่าสุด อย่างไรก็ตามมีหลายครั้งที่เราไม่สามารถใช้ซอร์ฟแวร์เวอร์ชันล่าสุดได้ ด้วยเหตุผลต่าง ๆ เช่น ความเข้ากันได้กับซอร์ฟแวร์และฮาร์ดแวร์ (software and hardware compatibility) ทำให้นักพัฒนาต้องเลือกใช้เวอร์ชันของซอร์ฟแวร์ที่ต่ำกว่าเวอร์ชันปัจจุบัน ไม่เพียงเท่านั้นการพัฒนาซอร์ฟแวร์และเว็บแอปพลิเคชันในบางครั้งใช้เวลาเป็นเวลาหลายเดือนจนถึงหลายปี ช่องโหว่ใหม่ ๆ ก็อาจจะถูกค้นพบได้ในระหว่างกันพัฒนา และสุดท้าย แม้ว่าหลังจากเสร็จสิ้นการพัฒนาซอร์ฟแวร์แล้ว ซอร์ฟแวร์ต่าง ๆ เช่น framework และ library ยังคงต้องได้รับการดูแลและคอยหมั่น update security patch อยู่เสมอ (security mantainance) การจัดการ security patch เป็นเรื่องที่มีความซับซ้อนและละเอียดอ่อน เนื่องจากการ update version ของส่วนประกอบ (component) อาจจะก่อให้เกิดปัญหาเรื่องความเข้ากันได้กับตัวเว็บแอปพลิเคชัน (compatibility problem) ด้วยเหตุดังกล่าวทำให้ UCKV เป็นช่องโหว่ที่พบได้บ่อยที่สุดของเว็บแอปพลิเคชัน

จะรู้ได้อย่างไรว่าส่วนประกอบไหนของเว็บแอปพลิเคชันมีช่องโหว่

Common Vulnerabilities and Exposures (CVE) และ National Vulnerability Database (NVD) เป็นสองแหล่งข้อมูลในการค้นหาช่องโหว่ของซอร์ฟแวร์ต่าง ๆ นักพัฒนาเว็บแอปพลิเคชันและผู้ดูแลระบบควรหมั่นเข้าไปดูช่องโหว่ใหม่ ๆ ที่ถูกประกาศไว้ที่สองเว็บไซต์แห่งนี้ ศึกษาถึงผลกระทบของช่องโหว่และหาทางแก้ไข

รู้จักกับ CVE (Common Vulnerability and Exposure)

CVE เป็นรายชื่อของช่องโหว่ของซอร์ฟแวร์ของผู้ผลิตรายใหญ่ต่าง ๆ เช่น Adobe, Microsoft, Apple, HP, IBM, Dell ฯลฯ โดยจุดมุ่งหมายของ CVE คือการออกหมายเลขของช่องโหว่ เช่น CVE-2015-3113 (หมายเลข 4 ตัวแรกคือปีที่ออก และหมายเลขสี่ตัวหลังคือหมายเลขของช่องโหว่) เพื่อเป็นหมายเลขที่ใช้ในระบุช่องโหว่เวลาสื่อสารกัน เนื่องจากช่องโหว่ด้านซอร์ฟแวร์มีจำนวนมากและมีช่องโหว่ใหม่ ๆ เกิดขึ้นทุกวัน หมายเลขของ CVE ช่วยให้ผู้ผลิตซอร์ฟแวร์ และผู้ใช้งานสามารถสื่อสารกันได้อย่างราบรื่น โดยข้อมูลที่ถูกเก็บอยู่ใน CVE list จะประกอบไปด้วย หมายเลข CVE คำอธิบายช่องโหว่โดยสังเขป และ link ไปยังรายละเอียดที่ลึกขึ้นของผู้ผลิตซอร์ฟแวร์

cvebanner

รู้จักกับ NVD (National Vulnerability Database)

NVD เป็นฐานข้อมูลที่เก็บข้อมูลเกี่ยวกับช่องโหว่ด้านซอร์ฟแวร์ของรัฐบาลสหรัฐอเมริกา เรียกได้ว่า NVD เป็นฐานข้อมูลที่รวมเอาช่องโหว่จากหลาย ๆ ที่ไว้ด้วยกันเพื่อให้สะดวกแก่การค้นหาและเรียกดูข้อมูล โดย CVE เป็นส่วนหนึ่งของฐานข้อมูล NVD ดังนั้นเรียกได้ว่า NVD จะมีข้อมูลของช่องโหว่ที่เยอะกว่า CVE list เนื่องจากเก็บข้อมูลรวบรวมจากหลายแหล่ง อย่างไรก็ตาม CVE list นั้นเป็นแหล่งข้อมูลหลักของ NVD

Screen Shot 2559-01-21 at 6.44.14 PM

แนวทางการป้องกัน Using Components with Known Vulnerability

การป้องกันช่องโหว่ประเภทนี้สามารถทำได้โดยการหมั่นตรวจสอบช่องโหว่ที่เกิดขึ้นใหม่ ๆ ในแต่ละวัน แนวทางการจัดการกับช่องโหว่ประเภทนี้ดีที่คือ ให้ทำการ list ส่วนประกอบของเว็บแอปพลิเคชันทั้งหมดพร้อมทั่งเวอร์ชัน จากนั้นให้คอยเฝ้าตรวจสอบ CVE ใหม่ ๆ ที่ออกมาว่ามีช่องโหว่ใดที่อาจจะส่งผลต่อความปลอดภัยของเว็บแอปพลิเคชัน (ผู้ดูแลระบบอาจจะเข้าไปตรวจสอบ CVE ได้ที่ https://www.cvedetails.com/)

Screen Shot 2559-01-22 at 9.35.41 AM

จะทำอย่างไรเมื่อจำเป็นจะต้องใช้ส่วนประกอบที่มีช่องโหว่

ในบางครั้งการไม่ใช้ส่วนประกอบที่ไม่มีช่องโหว่นั้นเป็นไปได้อย่าง ด้วยสาเหตุต่าง ๆ เช่น

  1. ยังไม่มี security patch เนื่องจากช่องโหว่พึ่งถูกค้นพบ
  2. software ไม่ได้ทำการ support แล้ว (ผู้ผลิตไม่ออก patch ให้กับ version นั้น ๆ)
  3. มี security patch แต่ว่าไม่สามารถ update ได้เนื่องจากปัญหาด้านเข้ากันกับเว็บแอปพลิเคชัน (update แล้วอาจะเกิดปัญหา)
  4. ไม่กล้า update security patch เนื่องจากไม่สามารถวิเคราะห์ผลกระทบได้

อุปสรรค์เหล่านี้เป็นสาเหตุให้ช่องโหว่ประเภท UCKV เป็นช่องโหว่ที่พบได้บ่อย แนวทางการแก้ไขปัญหาอื่น ๆ อาจจะต้องถูกนำมาใช้ เช่น การใช้ web application firewall ในการปกป้องเว็บแอปพลิเคชันเป็นต้น อย่างไรก็ตามทางแก้ที่ดีที่สุดคือการ update security patch ให้กับส่วนประกอบที่มีช่องโหว่ เนื่องจากช่องโหว่บางชนิดนั้นไม่สามารถแก้ไขได้ด้วย web application firewall

สรุป

Using Components with Known Vulnerabilities (UCKV) เป็นช่องโหว่ที่พบเจอได้บ่อยที่สุดในช่องโหว่ทั้งหมด เนื่องจากการดูแลบำรุงรักษาส่วนประกอบให้เป็นเวอร์ชันปัจจุบันนั้นสามารถทำได้ยากและอาจส่งผลกระทบต่อการทำงานของเว็บแอปพลิเคชัน การใช้ web application firewall อาจจะสามารถช่วยปิดช่องโหว่ได้บางส่วน แต่ว่าช่องโหว่บางชนิดก็ไม่สามารถแก้ไขได้ด้วยการเพิ่ม security layer ดังนั้น การมีทีมดูแลที่คอยตรวจสอบช่องโหว่ใหม่ ๆ ที่ถูกค้นพบและวิเคราะห์ผลกระทบที่อาจจะเกิดกับเว็บแอปพลิเคชันนั้นเป็นวิธีที่ดีที่สุดในการป้องกันภัยคุกคามที่อาจจะเกิดขึ้นได้

อ้างอิง

  1. Top 10 2013-A9-Using Components with Known Vulnerabilities
  2. Security Testing – Using Components with Known Vulnerabilities

Leave a Reply