รู้จักกับ OWASP TOP 10 (อะไรคือ OWASP TOP 10)

ในปี 2010 OWASP ได้ทำการจัดอันดับช่องโหว่ที่มีความรุนแรงและพบเจอได้บ่อยในเว็บแอปพลิเคชัน 10 อันดับขึ้นมาเป็นครั้งแรก และได้รับกระแสการตอบรับอย่างดีจากนักพัฒนาเว็บแอปพลิเคชันทั่วโลก โดย OWASP TOP 10 2010 ได้รับการยึดถือเป็นมาตรฐานการตรวจสอบช่องโหว่เว็บแอปพลิเคชันก่อนในหลายองค์กร และในปี 2013 OWASP ได้เผยแพร่เอกสาร OWASP TOP 10 2013 ที่อธิบายรายละเอียดช่องโหว่ที่พบได้บ่อยและมีความรุนแรง 10 อันดับแรกขึ้นมาอีกครั้ง บทความนี้จะเขียนอธิบายช่องโหว่ของ OWASP TOP 10 ปี 2013 พร้อมคำอธิบายโดยสังเขป หากผู้อ่านต้องการทราบถึงรายละเอียดแต่ละช่องโหว่สามารถคลิกเข้าไปอ่านรายละเอียดพร้อมตัวอย่างได้ในแต่ละหัวข้อ

จุดเริ่มต้นด้านความปลอดภัยของเว็บแอปพลิเคชัน

ในยุคปัจจุบันคงไม่มีใครไม่รู้จักคำเว็บไซต์และอินเทอร์เน็ต จำนวนผู้ใช้งานอินเทอร์เน็ตและเว็บไซต์เพิ่มขึ้นหลายเท่าตัวในช่วง 10 ปีที่ผ่านมา โปรแกรมคอมพิวเตอร์ต่างถูกเปลี่ยนมาพัฒนาเป็นเว็บแอปพลิเคชันเพื่อให้สามารถใช้งานได้จากทุกที่ทุกเวลาทำให้เทคโนโลยีในการพัฒนาเว็บแอปพลิเคชันมีความก้าวหน้าและซับซ้อนกว่ายุคแรกเริ่มอย่างมาก ไม่เพียงแต่เว็บแอปพลิเคชันจะมีความซับซ้อนมากขึ้น ข้อมูลที่ถูกเก็บและใช้งานบนเว็บแอปพลิเคชันก็เริ่มที่จะมีความสำคัญมากขึ้นด้วยเช่นกัน ไม่ว่าจะเป็นข้อมูลการทำธุรกรรมการเงินผ่านอินเทอร์เน็ต การชำระเงินด้วยบัตรเครดิตเพื่อซื้อสินค้าออนไลน์ การเก็บข้อมูลที่เป็นความลับ เช่น ข้อมูลส่วนบุคคล ประวัติผู้ป่วย ไว้ในเว็บแอปพลิเคชันให้ผู้ใช้งานสามารถเข้าถึงได้สะดวกมากขึ้น ทำให้เว็บแอปพลิเคชันตกเป็นเป้าหมายลำดับต้น ๆ ของอาชกรรมบนอินเทอร์เน็ต (Cyber Crime) เนื่องด้วยข้อมูลสำคัญเหล่านี้มีคุณค่ามหาศาล

รู้จัก OWASP

Open Web Application Security Project (OWASP) เป็นองค์การไม่แสวงหาผลกำไร (Non-profit organization) ถูกจัดตั้งขึ้นที่ประเทศสหรัฐอเมริกาเมื่อวันที่ 21 เมษายน 2004 โดยมีจุดประสงค์เพื่อเป็นองค์กรสากลที่เป็นศูนย์ร่วมในการร่วมมือจากนักพัมนาเว็บแอปพลิเคชันทั่วโลกในการสร้างเว็บแอปพลิเคชันให้มีความปลอดภัย โดย OWASP ได้รับการสนับสนุนจากบริษัท IT ชั้นนำทั่วโลกในการจัดสัมนาและการจัดอบรมเกี่ยวกับความปลอดภัยเว็บแอปพลิเคชัน อีกทั้งยังมีเว็บไซต์ที่ใช้ในการเก็บรวบรวมและเผยแพร่ความรู้เกี่ยวกับช่องโหว่ที่พบได้บ่อยและวิธีการป้องกัน

owasp_logo

OWASP TOP 10 ปี 2013 ประกอบไปด้วยช่องโหว่ที่มีความร้ายแรงและพบได้บ่อยเรียงตามลำดับได้ดังต่อไปนี้

  1. Injection ช่องโหว่ด้านความปลอดภัยประเภท Injection ถูกพบได้บ่อยและมีผลกระทบด้านความปลอดภัยอย่างรุนแรงต่อเว็บแอปพลิเคชัน ซึ่งช่องโหว่ประเภทนี้ประกอบไปด้วย SQL Injection ที่อนุญาตให้ผู้ไม่หวังดีเรียกดูข้อมูลที่เป็นความลับในฐานข้อมูล หรือแม้กระทั้งลบหรือแก้ไขข้อมูลในฐานข้อมูลบนเว็บไซต์ และ Code Injection ที่อนุญาตให้ผู้ไม่หวังดีทำการส่ง code ขึ้นมาทำงานบนเซิร์ฟเวอร์ซึ่งอาจนำไปสู่การโจรกรรมข้อมูลจนไปถึงการเข้าควบคุมเครื่องเซิร์ฟเวอร์

  2. Broken Authentication and Session Management ช่องโหว่ด้านความปลอดภัยประเภทนี้ได้รับการเลื่อนลำดับจากอันดับ 3 ในปี 2010 ขึ้นมาเป็นอันดับ 2 ในปี 2013 เนื่องกระบวนการพิสูจน์ตัวตน มีความซับซ้อนมากขึ้นกว่าแต่ก่อน ตัวอย่างช่องโหว่ชนิดนี้ได้แก่ การเก็บข้อมูล password ไว้ใน cookie ของผู้ใช้งานโดยไม่ได้ทำการเข้ารหัส หรือ การแสดงข้อมูล session บน url ที่อาจจะดูแอบดูหรือดักจับจากผู้ไม่หวังดีได้

  3. Cross-Site Scripting (XSS) XSS เคยเป็นช่องโหว่ที่อยู่ในอันดับ 2 ในปี 2010 และถูกลดอันดับลงมาเป็นอันดับ 3 ในปี 2013 โดย XSS เป็นช่องโหว่ที่เคยแพร่หลายในยุคสมัยที่ MySpace ได้รับความนิยม ช่องโหว่ของ XSS เกิดจากการอนุญาตให้ผู้ใช้งานฝัง JavaScript ลงในเว็บไซต์ซึ่งนำไปสู่การขโมยข้อมูล session ของผู้ใช้งานคนอื่น แม้ว่า XSS จะไม่มีผลกระทบต่อตัวเว็บแอปพลิเคชันโดยตรง แต่ก่อนให้เกิดความเสียหายต่อผู้ใช้งานเว็บไซต์อย่างรุนแรง

  4. Insecure Direct Object References ช่องโหว่ลำดับที่ 4 คือเกิดจากการที่ผู้พัฒนาอนุญาตให้ผู้ใช้งานเข้าถึงข้อมูลหรือเอกสารที่ไม่สมควร ตัวอย่างเช่น การเข้าถึงข้อมูลธุรกรรมทางการเงินผ่านทาง user id http://www.somebank.com?account_transaction.php?user_id=20 หากผู้ใช้งานสามารถดูธุรกรรมทางการเงินของคนอื่นได้ผ่านการเปลี่ยน user_id จาก 20 เป็น 10 30 40 ใน url ก็อาจเป็นการทำให้ข้อมูลความลับข้อผู้ใช้งานอื่นรั่วไหล

  5. Security Misconfiguration  ช่องโหว่ Security Misconfiguration ถูกจัดให้เป็นช่องโหว่อันดับ 5 ใน TOP 10 OWASP ซึ่งขอบเขตของช่องโหว่นั้นค่อนข้างกว้างเพราะการตั้งค่าความปลอดภัยนั้นรวมทั้ง web application, web server, web server software, database และส่วนที่เกี่ยวข้องทั้งหมดที่อาจจะส่งผลกับความปลอดภัยของเว็บแอปพลิเคชัน การตั้งค่าที่ผิดพลาดของส่วนประกอบต่าง ๆ ที่เกี่ยวข้อง เช่น การลืมลบ default user ไม่ทำการอัพเดท security patch ทำให้เว็ปแอปพลิเคชันมีช่องโหว่ที่ปล่อยให้ผู้ไม่หวังดีโจรกรรมข้อมูลหรือหยุดการทำงานของเว็บแอปพลิเคชันได้

  6. Sensitive Data Exposure  ช่องโหว่ที่ 6 นี้เป็นช่องโหว่เกี่ยวกับการรั่วโหลของข้อมูลที่เก็บอยู่ในเซิร์ฟเวอร์และข้อมูลที่ส่งผ่านอินเทอร์เน็ต ตัวอย่างเช่น การ login เว็บไซต์ที่ไม่ได้ใช้ HTTPS ในการเข้ารหัสข้อมูล การเก็บข้อมูล password หรือข้อมูลที่เป็นความลับโดยไม่ได้เข้ารหัส หรือ การใช้  weak algorithm ในการเข้ารหัส ข้อผิดพลาดเหล่านี้ทำให้ข้อมูลที่เป็นความลับตกอยู่ในสภาวะเสี่ยงต่อการรั่วไหล

  7. Missing Function Level Access Control ช่องโหว่นี้เป็นช่องโหว่เกี่ยวกับการจำกัดสิทธิ์ในการใช้งานเว็บแอปพลิเคชัน ตัวอย่างเช่น หากผู้ใช้งานสามารถเข้าถึง www.somebank.com/admin ได้โดยไม่ได้ทำการ login ด้วย admin account ก็เป็นการอนุญาตให้ใครก็ตามที่เป็น user ของเว็บไซต์สามารถเข้าไปใช้งานฟังก์ชันของ admin ได้โดยไม่ได้รับอนุญาต

  8. Cross-Site Request Forgery (CSRF)  ช่องโหว่ CSRF เคยเป็นช่องโหว่ที่ถูกจัดอยู่ในอันดับที่ 5 ในปี 2010 แต่ถูกลดลำดับมาในปี 2013 โดยลักษณะของ CSRF คือการที่ผู้ไม่หวังดีสามารถสั่งให้ผู้ใช้งานเว็บแอปพลิเคชันทำกิจกรรมบางอย่าง เช่น การโอนเงิน โดยที่ผู้ใช้งานไม่ได้ตั้งใจที่จะทำได้ ตัวอย่างเช่น นาย A เป็นผู้ใช้งานเว็บไซต์ธนาคารแห่งหนึ่ง (www.somebank.com) หลักจากที่นาย A ได้ทำการ login กับทางเว็บไซด์ธนาคารแล้ว นาย A ไปเข้าเว็บไซต์ www.attacker.com ของนาย B ซึ่งนาย B ทำการ redirect นาย A ไปที่ www.somebank.com/transfer.php?to=B&amount=100000 เพื่อให้โอนเงินเข้าบัญชีนาย B เป็นจำนวนเงิน 100000 บาทโดยที่นาย B ไม่ได้ตั้งใจ

  9. Using Components with Known Vulnerabilities ช่องโหว่นี้เคยถูกร่วมเป็นส่วนหนึ่งของ security misconfiguration แต่ว่าถูกแยกออกมาในปี 2013 โดยช่องโหว่ประเภทนี้จะเกิดจากการที่เว็บแอปพลิเคชันทำงานร่วมกับส่วนประกอบต่าง ๆ ที่มีช่องโหว่ เช่น libraries หรือ framework ที่มีช่องโหว่ ผู้ดูแลระบบควรตรวจสอบช่องโหว่ต่าง ๆ ที่ประกาศบน http://cve.mitre.org และค่อยอัพเดท patch เพื่อปิดช่องโหว่เหล่านี้หากตรวจพบ

  10. Unvalidated Redirects and Forwards Unvalidated เป็นช่องโหว่ที่อนุญาตให้ผู้ไม่หวังดีทำการ redirect ผู้ใช้งานเว็บไซต์ที่ไปยังเว็บไซต์อันตราย ตัวอย่างเช่น หากเว็บไซต์ธนาคารแห่งหนึ่งมีหน้าที่ใช้ในการ redirect ผู้ใช้งานไปยังเว็บไซต์ย่อยของแต่ละประเทศ www.somebank.com/redirect.php?target=th.somebank.com ผู้ไม่หวังดีอาจจะทำการแก้ไข link เป็น www.somebank.com/redirect.php?target=attacker.com ซึ่งเป็นเว็บไซต์ที่ร้องให้ผู้ใช้งานติดตั้งมัลแวร์ เนื่องจากผู้ใช้งานเข้าใจว่าเป็นเว็บไซต์ที่ redirect มาจากเว็บไซต์ธนาคารก็อาจจะตกเป็นเหยื่อของมัลแวร์ได้

 

หวังว่าผู้อ่านคงจะได้รับความรู้และความเข้าใจเบื้องต้นเกี่ยวกับ OWASP TOP 10 ซึ่งรายละเอียดของแต่ละช่องโหว่นั้น ผมได้สรุปไว้ในบทความด้านล่างแล้ว

อ่านเพิ่มเติม

  1. Injection
  2. Broken Authentication and Session Management
  3. Cross-Site Scripting (XSS)
  4. Insecure Direct Object References
  5. Security Misconfiguration
  6. Sensitive Data Exposure
  7. Missing Function Level Access Control
  8. Cross-Site Request Forgery (CSRF)
  9. Using Components with Known Vulnerabilities
  10. Unvalidated Redirects and Forwards Unvalidated

อ้างอิง

1. Category:OWASP Top Ten 2013 Project 

 


Leave a Reply