เข้าสู่ระบบได้ แต่ทำไมยังเข้าถึงข้อมูลไม่ได้? ไขความลับที่หลายคนสับสน

เข้าสู่ระบบได้ แต่ทำไมยังเข้าถึงข้อมูลไม่ได้? ไขความลับที่หลายคนสับสน

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

นี่คือช่องโหว่ด้านความปลอดภัยที่พบบ่อยครั้ง แต่หลายคนยังมองข้ามไป

ความแตกต่างระหว่าง การพิสูจน์ตัวตน กับ การตรวจสอบสิทธิ์

ระบบออนไลน์ทุกวันนี้มีกระบวนการสำคัญสองอย่างที่ทำงานควบคู่กัน

อย่างแรกคือ การพิสูจน์ตัวตน (Authentication)

นี่คือขั้นตอนที่เว็บไซต์ยืนยันว่าบุคคลที่กำลังพยายามเข้าใช้งานนั้นเป็น “ใคร”

พูดง่ายๆ คือการถามว่า “คุณคือคนที่คุณบอกว่าเป็นใช่หรือไม่?”

โดยทั่วไปก็คือการกรอก ชื่อผู้ใช้ และ รหัสผ่าน นั่นเอง เมื่อระบบยืนยันได้ ก็จะถือว่าเข้าสู่ระบบสำเร็จ

ส่วนอย่างที่สองคือ การตรวจสอบสิทธิ์ (Authorization)

นี่คือขั้นตอนที่ระบบตัดสินใจว่า “คุณสามารถทำอะไรได้บ้าง” หรือ “คุณสามารถเข้าถึงข้อมูลใดได้บ้าง”

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

ลองนึกภาพเหมือนคุณมี กุญแจรถ (Authentication) ที่สามารถสตาร์ทรถได้ แต่คุณยังต้องมี ใบขับขี่ (Authorization) เพื่อที่จะขับขี่รถคันนั้นบนท้องถนนได้จริงนั่นเอง

เมื่อระบบเชื่อใจ “รหัสประจำตัว” เกินไป: ช่องโหว่ IDOR

ปัญหาใหญ่ที่มักเกิดขึ้นคือ เมื่อระบบจัดการสิทธิ์ไม่รอบคอบ

แอปพลิเคชันจำนวนมากใช้ รหัสประจำตัว (Object Identifiers) เพื่ออ้างอิงถึงข้อมูลต่างๆ เช่น รหัสผู้ใช้, รหัสเอกสาร หรือรหัสสินค้า

สมมติว่าคุณเข้าสู่ระบบและเห็น URL ว่า example.com/profile?user_id=123 ซึ่งแสดงข้อมูลโปรไฟล์ของคุณ

ช่องโหว่ IDOR (Insecure Direct Object Reference) เกิดขึ้นเมื่อระบบไม่ได้ตรวจสอบสิทธิ์อย่างถูกต้อง

หากผู้โจมตีลองเปลี่ยน user_id=123 เป็น user_id=456 และระบบแสดงข้อมูลโปรไฟล์ของบุคคลอื่นทันที นั่นหมายความว่าเว็บไซต์มีช่องโหว่ IDOR แล้ว

ระบบเพียงแค่ดูว่า “คุณเข้าสู่ระบบแล้ว” แต่ไม่ได้ตรวจสอบว่า “คุณมีสิทธิ์เข้าถึง user_id=456 หรือไม่”

ช่องโหว่นี้อนุญาตให้ผู้ที่เข้าสู่ระบบแล้ว (Authenticated User) สามารถเข้าถึงหรือจัดการข้อมูลของคนอื่นได้อย่างง่ายดาย

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

ผลกระทบที่มองข้ามไม่ได้

IDOR ไม่ใช่ช่องโหว่เล็กๆ แต่เป็นภัยคุกคามร้ายแรงที่ติดอันดับต้นๆ ในรายการความเสี่ยงด้านความปลอดภัยของเว็บแอปพลิเคชัน

ผู้โจมตีสามารถใช้ช่องโหว่นี้เพื่อ:

  • เข้าถึงข้อมูลส่วนตัว: ดูข้อมูลโปรไฟล์, ที่อยู่, เบอร์โทรศัพท์, หรือแม้แต่ข้อมูลทางการเงินของผู้อื่น
  • แก้ไขข้อมูล: เปลี่ยนรหัสผ่าน, อัปเดตข้อมูลบัญชี, หรือทำการสั่งซื้อในนามของผู้อื่น
  • ยกระดับสิทธิ์: หากพบช่องโหว่ในส่วนของผู้ดูแลระบบ ผู้โจมตีอาจสามารถควบคุมระบบทั้งหมดได้

ความเสียหายที่เกิดขึ้นอาจมหาศาล ทั้งในแง่ของความเสียหายทางการเงินและชื่อเสียงขององค์กร

การป้องกันง่ายๆ ที่ได้ผลจริง

การป้องกันช่องโหว่ IDOR นั้นตรงไปตรงมา แต่ต้องใช้ความระมัดระวังอย่างสม่ำเสมอ

สิ่งสำคัญที่สุดคือ ทุกครั้งที่แอปพลิเคชันประมวลผลคำขอที่เกี่ยวข้องกับรหัสประจำตัว (Object Identifier)

ระบบจะต้องทำการ ตรวจสอบสิทธิ์ (Authorization Check) ที่ฝั่งเซิร์ฟเวอร์เสมอ

ไม่ว่าคำขอนั้นจะมาจากผู้ใช้ที่เข้าสู่ระบบแล้วหรือไม่ก็ตาม

ระบบจะต้องถามตัวเองเสมอว่า “ผู้ใช้คนนี้ มีสิทธิ์เข้าถึงทรัพยากรที่มีรหัส XYZ นี้หรือไม่?” ก่อนที่จะส่งข้อมูลใดๆ กลับไป

นอกจากนี้ การใช้รหัสอ้างอิงที่ไม่เป็นตัวเลขแบบต่อเนื่อง หรือการใช้รหัสที่ไม่สามารถคาดเดาได้ ก็เป็นอีกหนึ่งวิธีช่วยเพิ่มความยากในการโจมตี

แต่หัวใจหลักยังคงอยู่ที่การตรวจสอบสิทธิ์ที่เข้มงวดที่ฝั่งเซิร์ฟเวอร์นั่นเอง

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