21 ส.ค. เวลา 04:24 • วิทยาศาสตร์ & เทคโนโลยี

แนวทางการตรวจสอบความปลอดภัยในการพัฒนาแอพพลิเคชั่น ตามรายการจัดอันดับของ OWASP และ MITRE

ปัจจุบันในแต่ละองค์กรมีการใช้งานแอพพลิเคชั่นในแทบทุกส่วนงาน ไม่ว่าจะเป็นแอพพลิเคชั่นที่พัฒนาใช้เองหรือเป็นการใช้บริการจากภายนอก ในการใช้งานแอพพลิเคชั่นต่าง ๆ เหล่านั้น จำเป็นต้องนึกถึงความปลอดภัยอยู่เสมอ เพราะมีข้อมูลที่ถูกจัดเก็บหรือส่งต่อไปในบริการเหล่านั้น
โดยเฉพาะอย่างยิ่งถ้าเป็นแอพพลิเคชั่นที่ให้บริการแก่ลูกค้า และต้องการให้ลูกค้ามีความเชื่อมั่นด้วยนั้น ยิ่งต้องมีความจำเป็นที่จะต้องคำนึงถึงความปลอดภัยของระบบที่พัฒนาขึ้น มิฉะนั้นแล้วลูกค้าอาจไม่เชื่อถือหรือมีความกังวลใจในการใช้งาน ส่งผลกระทบให้จำนวนลูกค้าลดลงหรือไม่อยากใช้บริการ
การพัฒนาแอพพลิเคชั่นเพื่อใช้งานในองค์กรเอง ก็จำเป็นต้องสร้างความปลอดภัยด้วยเช่นกัน เพราะในปัจจุบันภัยทางไซเบอร์ใกล้ตัวยิ่งกว่าที่คิด มีความหลากหลายและรุนแรงในหลายๆ รูปแบบ
หากระบบที่ให้บริการมีจุดอ่อนและช่องโหว่ถูกเปิดเผยจนข้อมูลรั่วไหลหรือถูกเจาะเข้าระบบได้ ก็จะทำให้ส่งผลต่อคนในองค์กร และอาจกระทบต่อระบบอื่น ๆ รวมทั้งธุรกิจขององค์กรเอง ซึ่งอาจแผ่ขยายไปยังส่วนการให้บริการกับภายนอกด้วย ระบบอาจจะต้องหยุดชะงักและใช้เวลาแก้ไข ไม่ว่าจะเป็นกู้ข้อมูลหรือการตอบสนองและรายงานสาเหตุกับลูกค้า สุดท้ายก็จะทำให้เกิดความเสื่อมเสียต่อชื่อเสียงขององค์กร
แล้วเราจะทราบได้อย่างไรว่าระบบหรือแอพพลิเคชั่นที่เราพัฒนานั้นได้ป้องกันจุดอ่อนต่าง ๆ ครบถ้วนแล้วหรือยัง? ในปัจจุบันมีการรวบรวมช่องโหว่หรือจุดอ่อนต่าง ๆ ที่มักถูกพบหรือเกิดขึ้นในการพัฒนาแอพพลิเคชั่น ที่เป็นที่ยอมรับและใช้กันเป็นมาตรฐาน โดยสำหรับการพัฒนาแอพพลิเคชั่นได้มีรายการจัดอันดับจุดอ่อนที่พบบ่อยในการพัฒนา เพื่อเป็นแนวทางให้กับนักพัฒนา หรือนักออกแบบระบบ หรือผู้ดูแลความปลอดภัยให้กับองค์กรได้นำไปใช้ เรียกว่า OWASP Top 10
ซึ่งเป็นรายการความเสี่ยงด้านความปลอดภัยที่มีโอกาสเกิดขึ้นได้มากที่สุด 10 อันดับในการพัฒนาเว็บแอพพลิเคชั่น ซึ่งสอดคล้องกับปัจจุบันที่หลาย ๆ องค์กรนิยมเลือกให้บริการต่าง ๆ ผ่านเว็บ
OWASP Top 10
OWASP (Open Web Application Security Project) เป็นกลุ่มองค์กรที่จัดตั้งขึ้นโดยไม่แสวงหาผลกำไร มีเป้าหมายในการทำโปรเจค ทำวิจัย และมาตรฐานต่าง ๆ ด้านความปลอดภัย โดยไม่แบ่งแยกเทคโนโลยีหรือซอฟต์แวร์การค้าใด ๆ และเผยแพร่ผลลัพธ์ต่าง ๆ เช่น เครื่องมือ ผลงานวิจัย ผลการศึกษา และแนวทางหรือมาตรฐานต่าง ๆ ที่สร้างความปลอดภัยทางไซเบอร์
โดยหนึ่งในโปรเจคที่สำคัญคือ OWASP Top 10 เป็นการสรุปรายการความเสี่ยงด้านความปลอดภัยของเว็บแอพพลิเคชั่น ซึ่งได้จัดทำขึ้นมาอย่างต่อเนื่องตั้งแต่เริ่มโครงการเมื่อปี 2003 ซึ่งในปัจจุบันเป็นเวอร์ชั่นปี 2021
รูปที่ 1 แสดงรายการ OWASP Top 10 ประจำปี 2021
ในปี 2021 OWASP จัดอันดับ 10 รายการจุดอ่อนประกอบด้วยหัวข้อดังต่อไปนี้
(รายละเอียดเพิ่มเติม https://owasp.org/Top10/)
1. Broken Access Control: จุดอ่อนทางการควบคุมการเข้าถึงระบบหรือทรัพยากรข้อมูลที่จำเป็นต้องให้ตรงตามสิทธิ์ที่กำหนด และมีการกำหนดในระบบให้ทำงานได้อย่างถูกต้องตามที่กำหนด
2. Cryptographic Failures: การหลุดรั่วของข้อมูลที่สำคัญ เนื่องจากไม่ได้มีการนำกระบวนการเข้ารหัสกับข้อมูลอ่อนไหวต่าง ๆ หรือมีความบกพร่องในกระบวนการปกป้องข้อมูล รวมทั้งการดูแลจัดการคีย์
3. Injections: การแทรกคำสั่งหรือข้อมูลเข้ามากับการส่งข้อมูล Input/Request ปกติ เพื่อให้เว็บแอพพลิเคชั่นรับคำสั่งหรือข้อมูลนั้นไปทำงานต่อ ทำให้เปิดเผยข้อมูลสำคัญในการเจาะระบบ หรือรันคำสั่งที่ให้ประโยชน์กับแฮคเกอร์
4. Insecure Design: การออกแบบและพัฒนาระบบที่ไม่ปลอดภัยหรือมีจุดบกพร่อง ทำให้แฮคเกอร์สามารถสร้างภัยคุกคามให้กับระบบได้ ไม่ว่าการเขียนโปรแกรมลอจิกที่ไม่รอบคอบ หรือการปรับแต่งระบบผิดพลาด
5. Security Misconfigurations: ความผิดพลาดหรือเลินเล่อปล่อยผ่านในการกำหนดค่าความปลอดภัยที่อยู่ในบริการของระบบ การไม่จัดการความปลอดภัยในแต่ละชั้นข้อมูลการสื่อสาร การปล่อยให้ใช้บัญชีที่เป็นค่าเริ่มต้นตั้งแต่ติดตั้ง หรือการติดตั้งโปรแกรมหรือ Feature การทำงานที่ไม่จำเป็น จนมีการเปิดพอร์ตหรือบริการที่ไม่ได้กำหนด
6. Vulnerable and Outdated Components: การเลือกใช้ชิ้นส่วนซอฟต์แวร์ที่เลิกใช้แล้วหรือไม่มีการอัพเดทอีกต่อไป หรือการไม่ตระหนักถึงข่าวสารความปลอดภัยที่ต้องปฎิบัติตามเมื่อมีการประกาศช่องโหว่ของซอฟต์แวร์ จนทำให้ระบบเกิดจุดอ่อน
7. Identification and Authentication Failures: ช่องโหว่การทำงานของส่วนที่เกี่ยวข้องกับการเข้าถึงระบบหรือช่องทางตรวจสอบยืนยันตัวตน เช่น การใช้ Password ที่ไม่เข้มแข็งหรือเดาได้ง่าย หรือการที่ถูกปล้น Session หรือสวมรอยทำให้ได้สิทธิ์เข้าถึงผ่าน Session นั้น
8. Software and Data Integrity Failure: ขาดการตรวจสอบความถูกต้องของข้อมูลหรือซอฟต์แวร์ที่เชื่อถือได้ ชิ้นส่วนซอฟต์แวร์หรือไลบรารี่ใด ๆ ควรต้องผ่านระดับตรวจสอบความน่าเชื่อถือมาก่อน และตรวจสอบหรือใช้กลวิธี Hash เพื่อเทียบความถูกต้องหรือขนาดของไฟล์ ก่อนการการติดตั้งหรือการอ่านข้อมูลที่รับมา
9. Security Logging and Monitoring Failures: การขาดการจัดเก็บข้อมูลการใช้งานหรือติดตามการทำงานของระบบ ถือเป็นจุดอ่อนหนึ่งที่เมื่อเกิดเหตุการณ์ผิดปกติแล้วทำให้ไม่สามารถรับรู้หรือตรวจสอบได้
10. Server-Side Request Forgery (SSRF): การโจมตีด้วยการปลอมแปลง Web Request แล้วทำให้ฝั่ง Server มีการเรียกไปยังปลายทางที่ไม่ได้คาดถึงหรือกำหนดไว้ โดยทั่วไปแฮคเกอร์จะส่ง URL เพื่อทำให้เกิดการ Redirect ทำให้เกิดการเปิดเผยข้อมูลสำคัญในระบบ หรือเพื่อสแกนพอร์ต เช่น แทรก URL เป็น https://our-domain/catalog?url=file://passwd หรือ url=127.0.0.1:3306 เป็นต้น ซึ่งควรทำการป้องกันในระดับเครือข่าย เช่น Network Segment หรือ Firewall หรือระดับแอพพลิเคชั่น เช่น Validate Input
นอกจาก OWASP Top 10 แล้ว ยังมีการจัดอันดับจาก CWE Top 25 (Common Weakness Enumeration) อีกด้วย ซึ่งจะครอบคลุมการพัฒนาระบบแอพพลิเคชั่นในทุกแพลตฟอร์ม ไม่จำกัดเฉพาะบนเว็บเท่านั้น
CWE Top 25
CWE (Common Weakness Enumeration) เป็นชุดรายการจุดอ่อนที่ถูกค้นพบได้ในทุกระบบ ทั้งฮาร์ดแวร์และซอฟต์แวร์ ซึ่งเป็นโครงการจัดทำและเผยแพร่โดย The MITRE Corporation (MITRE) ซึ่งเป็นหน่วยงานที่รับการสนับสนุนจาก the U.S. Department of Homeland Security (DHS) Cybersecurity และ Infrastructure Security Agency (CISA)
ชุดจุดอ่อนที่ว่านี้เป็นได้ทั้งที่เกิดจากการโปรแกรมภายในผิดพลาด ไม่ปลอดภัย หรือมีบัก และถูกรายงานจากนักวิจัย นักพัฒนา หรือนักวิเคราะห์ระบบด้านความปลอดภัยไซเบอร์ที่ค้นพบหรือจากทดสอบจากทั่วโลก ดังนั้นรายการต่าง ๆ นี้จึงถูกรวบรวมและจัดการอัพเดทอยู่โดยสม่ำเสมอ
ในปัจจุบันรายการชุดจุดอ่อนมีมากกว่า 600 ชุดรายการ และนอกจากนี้ทาง MITRE ได้มีการจัดทำชุด CWE เฉพาะรายการที่เป็นความผิดพลาดในการพัฒนาหรือช่องโหว่ในซอฟต์แวร์ ซึ่งจัดอันดับเป็นข้อผิดพลาดที่อันตรายที่สุด 25 รายการ (หรือเรียกชื่อเต็มว่า CWE Top 25 Most Dangerous Software Weaknesses) จัดว่าเป็นแนวทางหรือเช็คลิสต์ที่มีประโยชน์อย่างมากสำหรับนักพัฒนาระบบหรือแอพพลิเคชั่น ซึ่งชุดรายการอัพเดทล่าสุดถึงปี 2023
รูปที่ 2 แสดงรายการ CWE Top 25 ประจำปี 2023
ในปี 2023 CWE Top 25 สำหรับ 10 อันดับแรก มีรายละเอียดดังต่อไปนี้ ส่วนอันดับอื่น ๆ ที่เหลือ
(สามารถศึกษาเพิ่มเติมได้จาก https://cwe.mitre.org/top25/archive/2023/2023_top25_list.html)
1. Out-of-bounds Write: เป็นช่องโหว่ที่ปล่อยให้โค้ดโปรแกรมถูกแทรกข้อมูลเข้าไปก่อนหน้าหรือต่อท้ายใน Memory/Buffer ที่ใช้งาน ส่งผลทำให้แอพพลิเคชั่นทำงานผิดพลาด หยุดชะงัก หรือถูกรันคำสั่งที่แทรกเข้าไป
2. Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’): หรือช่องโหว่ Cross-Site Scripting (XSS) ที่แฮคเกอร์อาศัยการแทรกโค้ดหรือสคริปต์อันตรายหรือล้วงเอาข้อมูลใด ๆ จากการรันคำสั่งที่แทรกเข้าไปผ่านเว็บแอพพลิเคชั่นที่มีจุดอ่อนนี้
3. Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’): เป็นช่องโหว่แอพพลิเคชั่นที่มีการใช้ input มาเป็น where clause โดยตรง โดยไม่ได้มีการตรวจสอบ หรือจัดทำการเรียกใช้คำสั่ง SQL ที่ปลอดภัย เช่น Prepared Statements หรือ Stored Procedures ที่มีโครงสร้างเหมาะสม
4. Use After Free: เป็นปัญหาของการที่โปรแกรมปล่อยให้เกิดกรณีที่สามารถเข้าถึงหน่วยความจำที่ deallocate ไปแล้ว เช่น การไม่ทำลาย pointer ที่เคยชี้ไปตำแหน่งนั้น กรณีแบบนี้อาจทำให้ส่งผลข้อมูลไม่ถูกต้อง หรือถูกนำไปใช้แทรกโค้ดที่เป็นประโยชน์กับแฮคเกอร์
5. Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’): เป็นการแทรกคำสั่ง OS เข้าสู่ระบบ ซึ่งเป็นช่องโหว่หากไม่ได้มีการตรวจสอบ input อาจทำให้มีคำสั่งที่เป็นอันตรายแนบมาได้ หรือการที่ระบบไม่จำกัดสิทธิ หรืออนุญาตให้คำสั่งที่เข้ามารันด้วย root เสมอ หากไม่มีมาตรการที่ปลอดภัย และปล่อยให้คำสั่งแปลกปลอมหลุดเข้ามาก็ทำให้เกิดความเสียหายได้
6. Improper Input Validation: การปล่อยให้ input ที่อยู่นอกเหนือการคาดการณ์เข้ามาและสามารถรันคำสั่ง หรือแสดงผลที่ผิดปกติไป โดยขาดการตรวจสอบข้อมูลก่อน
7. Out-of-bounds Read: กรณีที่ไม่มีการควบคุมการเข้าถึงขนาดข้อมูลในหน่วยความจำ ทำให้แฮคเกอร์สามารถอ่านข้อมูลที่นอกเหนือจากค่าที่ควร return ให้ ซึ่งอาจเป็นข้อมูลอ่อนไหวต่าง ๆ ในบางระบบอาจทำให้ทำงานต่อไม่ได้
8. Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’): การที่โปรแกรมเกี่ยวกับการทำงานกับไฟล์ข้อมูล และมีการอ้าง path หรือ directory มักจะกำหนดให้อ่านหรือเขียนเฉพาะใน path ที่กำหนด แต่หากไม่กำหนดสิทธิ์แอพพลิเคชั่นหรือไม่มีการตรวจสอบข้อมูลการเข้าถึง อาจทำให้มีการเข้าถึง path ที่ไม่ได้กำหนดไว้ เช่น การใช้ ../ ทำให้สามารถอ่านข้อมูลภายในหรือถูกเขียนคำสั่งทับ หรือมีการเก็บไฟล์ที่เป็นภัยคุกคามได้
9. Cross-Site Request Forgery (CSRF): เป็นการโจมตีที่บังคับให้ผู้ใช้เว็บทำการเรียกใช้งานบางอย่างที่เอื้อประโยชน์ให้แฮคเกอร์ ทำให้ถูกล้วงข้อมูลส่วนตัว หรือรัน Script เพื่อทำงานบางอย่าง โดยแฮคเกอร์เข้าถึงเนื้อหาเว็บไซต์และลวงให้ผู้ใช้คลิก หรือ Activate ซึ่งถ้าเว็บไซต์ไม่มีการตรวจสอบ Session/Token เพื่อทวนสอบความถูกต้องทุกครั้งเมื่อมีการ Request มายัง Web Server ก็จะเป็นช่องโหว่ให้ถูกโจมตี และหลอกลวงผู้ใช้งานได้
10. Unrestricted Upload of File with Dangerous Type: การไม่ตรวจสอบชนิดไฟล์ที่รับเข้าหรือการเลือกใช้ Data Store ที่ไม่มีการกำหนดชนิดไฟล์จัดเก็บ ทำให้มีโอกาสได้รับไฟล์ที่เป็นภัยคุกคามเข้าในระบบ และแฮคเกอร์อาศัยไฟล์นั้นในการทำงานอื่น ๆ ต่อไป
จากรายการตัวอย่างทั้ง 10 อันดับ ของ OWASP และ CWE จะเห็นได้ว่ามีส่วนคล้ายคลึงกันอย่างมาก และที่สังเกตได้สิ่งหนึ่งคือ CWE จะมีรายละเอียดช่องโหว่เฉพาะเรื่องหรือจำเพาะเฉพาะส่วนการทำงานหนึ่ง ๆ ในขณะที่ OWASP จะเป็นลักษณะช่องโหว่ที่ครอบคลุมแนวกว้าง เช่น OWASP’s Injections ตรงกันกับ Cross-site Scripting, SQL Injection และ OS Command Injection ของ CWE หรือ OWASP’s Broken Access Control เป็นจุดอ่อนกรณีเดียวกันกับที่กล่าวถึงใน Path Traversal และ CSRF ของ CWE เป็นต้น
อีกส่วนที่แตกต่างกันคือ OWASP จะมุ่งเน้นไปในวิธีการสร้างความปลอดภัยบนระบบเว็บแอพพลิเคชั่น ส่วน CWE จะครอบคลุมช่องโหว่ในแนวลึกทุกระดับประเภทซอฟต์แวร์ ไม่ว่าจะเป็น Firmware, System, Application on desktop/web/mobile
แต่ไม่ว่าจะเป็น OWASP Top 10 หรือ CWE Top 25 อาจกล่าวได้ว่าสำหรับนักพัฒนาแล้ว ถือเป็นแนวทางที่ช่วยสร้างความเข้าใจ และทำให้มองเห็นช่องโหว่ที่พวกแฮคเกอร์มักนำมาใช้ในการโจมตีได้ชัดเจนขึ้น การทำความคุ้นเคยและปฎิบัติตามแนวทางดังกล่าว นับว่าเป็นสิ่งที่นักพัฒนาควรใส่ใจและตระหนักอยู่เสมอ รวมถึงควรจัดทำให้เป็นมาตรฐานหลักของการพัฒนาแอพพลิเคชั่นภายในองค์กร
อย่างไรก็ตามแนวทางเหล่านี้ แม้แต่ OWASP เองก็ให้ข้อคิดเห็นว่าเป็นเพียงแค่ความปลอดภัยขั้นต้นที่ควรมีเป็นอย่างน้อยที่สุดเท่านั้น หรือจุดอ่อนต่าง ๆ ใน CWE ก็สามารถถูกค้นพบได้เพิ่มขึ้นอยู่ตลอดเวลา ดังนั้นแล้วการดูแล อัพเดทข้อมูล และปฎิบัติตามข้อแนะนำของมาตรฐานต่าง ๆ อย่างสม่ำเสมอ จะเป็นวิธีที่เหมาะสมที่จะปกป้องระบบ และข้อมูลทั้งขององค์กรและของลูกค้าให้ปลอดภัยได้ยาวนานที่สุด
Reference:
บทความโดย ธีร์วิช ว่องทวี
ตรวจทานและปรับปรุงโดย ดวงใจ จิตคงชื่น
โฆษณา