ระวัง! ช่องโหว่ Path Traversal: อันตรายใกล้ตัวที่นักพัฒนาต้องรู้

ระวัง! ช่องโหว่ Path Traversal: อันตรายใกล้ตัวที่นักพัฒนาต้องรู้

เว็บแอปพลิเคชันเป็นส่วนสำคัญในชีวิตยุคดิจิทัล แต่ก็มีช่องโหว่ที่อาจเข้าถึงข้อมูลสำคัญของระบบได้ หนึ่งในภัยคุกคามที่ร้ายแรงคือ ช่องโหว่ Path Traversal หรือที่รู้จักกันในชื่อ Directory Traversal

ภัยคุกคามนี้เปรียบเสมือนกุญแจที่ช่วยให้ผู้ไม่หวังดีสามารถ “เดินทาง” ออกนอกขอบเขตไดเรกทอรีที่กำหนด เพื่อสำรวจไฟล์และโฟลเดอร์อื่น ๆ บนเซิร์ฟเวอร์ หากแอปพลิเคชันของคุณมีการจัดการไฟล์ที่ผู้ใช้สามารถกำหนดเส้นทางได้ ต้องระมัดระวังเป็นพิเศษ


Path Traversal คืออะไรกันแน่?

Path Traversal คือ ช่องโหว่ด้านความปลอดภัย ซึ่งเกิดขึ้นเมื่อเว็บแอปพลิเคชันอนุญาตให้ผู้โจมตีอ่านไฟล์ที่อยู่นอกเหนือจากไดเรกทอรีที่ตั้งใจไว้ได้

ผู้โจมตีใช้เทคนิคจัดการ file path โดยส่งค่าพิเศษเข้าไปในพารามิเตอร์ของ URL เพื่อหลอกให้ระบบเข้าใจผิด

ตัวอย่างเช่น หากแอปพลิเคชันแสดงรูปภาพจากโฟลเดอร์ /images ผ่านพารามิเตอร์ ?image=photo.jpg ผู้โจมตีอาจลองเปลี่ยนค่าพารามิเตอร์นี้


ภัยคุกคามมันมายังไง?

ลองนึกภาพเว็บไซต์มีฟังก์ชันแสดงรูปภาพ โดยมี URL เช่น www.example.com/show_image.php?file=cat.jpg ระบบจะดึงไฟล์ cat.jpg จากโฟลเดอร์ /var/www/html/images/

แต่หากผู้โจมตีเปลี่ยน URL เป็น www.example.com/show_image.php?file=../../../../etc/passwd จะเกิดอะไรขึ้น?

สัญลักษณ์ ../ ในที่นี้คือคีย์เวิร์ดสำคัญที่หมายถึง “ย้อนกลับไปหนึ่งไดเรกทอรี”

เมื่อผู้โจมตีส่ง ../../../../etc/passwd เข้าไป ระบบที่ไม่มีการตรวจสอบที่เข้มงวด อาจถูกหลอกให้ย้อนกลับไปยังไดเรกทอรีราก และพยายามอ่านไฟล์ /etc/passwd ซึ่งเป็นไฟล์สำคัญที่เก็บข้อมูลผู้ใช้งานระบบปฏิบัติการ Linux/Unix

ไฟล์เหล่านี้มักจะถูกเก็บไว้นอกเหนือจากโฟลเดอร์สาธารณะของเว็บไซต์ แต่ช่องโหว่นี้กลับเปิดประตูให้ผู้โจมตีเข้าถึงได้ง่ายๆ


ผลกระทบที่อาจเกิดขึ้น

การโจมตี Path Traversal อาจนำไปสู่ผลกระทบร้ายแรงหลายอย่าง หลักๆ คือ การเปิดเผยข้อมูลลับ เช่น ข้อมูลผู้ใช้, รหัสผ่านที่ถูกเข้ารหัส, หรือแม้แต่ Source Code ของแอปพลิเคชัน

ผู้โจมตีอาจอ่าน configuration files ของเว็บเซิร์ฟเวอร์หรือฐานข้อมูล เพื่อหาข้อมูลการตั้งค่าเพิ่มเติม

ในบางกรณี หากช่องโหว่นี้ถูกใช้ร่วมกับช่องโหว่อื่นๆ และระบบไม่รัดกุมพอ ผู้โจมตีอาจสามารถเขียนไฟล์เข้าไปในระบบ นำไปสู่การติดตั้ง Malware หรือควบคุมเซิร์ฟเวอร์ได้

นี่คือเรื่องที่ต้องเฝ้าระวังอย่างยิ่ง


ป้องกันยังไงดี?

การป้องกันช่องโหว่ Path Traversal ทำได้หลายวิธี และควรนำไปปรับใช้ทุกวิธีเท่าที่ทำได้

1. การตรวจสอบและกรองอินพุต (Input Validation): นี่คือหัวใจสำคัญ ทุกข้อมูลที่มาจากผู้ใช้ต้องถูกตรวจสอบอย่างเข้มงวด ควรใช้ Whitelist กำหนดรายการชื่อไฟล์หรือชนิดไฟล์ที่อนุญาตเท่านั้น แทนที่จะใช้ Blacklist ซึ่งมักจะหาวิธีหลบเลี่ยงได้

2. จำกัดขอบเขตไดเรกทอรี (Directory Jailing): ใช้ฟังก์ชันหรือการตั้งค่าของระบบปฏิบัติการ เช่น chroot เพื่อจำกัดให้กระบวนการทำงานอยู่ภายในไดเรกทอรีที่กำหนดเท่านั้น ไม่ให้สามารถเข้าถึงไฟล์ภายนอกได้

3. ไม่เชื่อใจผู้ใช้ (Never Trust User Input): เป็นหลักการพื้นฐานที่สำคัญ ไม่ควรนำอินพุตจากผู้ใช้มาสร้างเส้นทางไฟล์โดยตรง หากจำเป็นต้องอ้างอิงไฟล์ ควรใช้ ID หรือค่าที่ถูกสร้างขึ้นภายในระบบ แทนที่จะใช้ชื่อไฟล์จริงที่ผู้ใช้ส่งเข้ามา

4. ตั้งค่าสิทธิ์การเข้าถึงไฟล์ (File Permissions): กำหนดสิทธิ์การเข้าถึงไฟล์และโฟลเดอร์บนเซิร์ฟเวอร์อย่างรอบคอบ ให้สิทธิ์เฉพาะที่จำเป็นเท่านั้น (Least Privilege) หากไม่มีความจำเป็นจริงๆ ไฟล์สำคัญไม่ควรมีสิทธิ์ที่เว็บเซิร์ฟเวอร์สามารถอ่านได้

การทำความเข้าใจและป้องกันช่องโหว่ Path Traversal เป็นสิ่งจำเป็นอย่างยิ่งสำหรับผู้ที่พัฒนาและดูแลเว็บแอปพลิเคชัน ความปลอดภัยไม่ได้เกิดขึ้นเอง แต่ต้องอาศัยความเข้าใจและการลงมือปฏิบัติอย่างสม่ำเสมอ การลงทุนในเรื่องความปลอดภัยตั้งแต่เนิ่น ๆ จะช่วยลดความเสี่ยงและความเสียหายที่อาจเกิดขึ้นได้ในอนาคต