การเจาะระบบยืนยันตัวตนสองขั้นตอน: ความผิดพลาดจากการเชื่อมโยงที่คาดไม่ถึง

การเจาะระบบยืนยันตัวตนสองขั้นตอน: ความผิดพลาดจากการเชื่อมโยงที่คาดไม่ถึง

ระบบยืนยันตัวตนแบบหลายปัจจัย หรือ MFA (Multi-Factor Authentication) ถือเป็นเกราะป้องกันชั้นดีเยี่ยมที่ช่วยเพิ่มความปลอดภัยให้กับบัญชีผู้ใช้งานจากภัยคุกคามทางไซเบอร์ แต่บางครั้งช่องโหว่ที่ร้ายแรงกลับไม่ได้ซ่อนอยู่ในจุดใดจุดหนึ่งของระบบอย่างโดดเดี่ยว ทว่ามันกลับแอบแฝงอยู่ตรงช่องว่างระหว่างการทำงานของฟีเจอร์สองอย่างที่เกี่ยวข้องกันโดยไม่คาดคิด

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

สองเส้นทางสู่ระบบ แต่ดันใช้หัวใจดวงเดียวกัน

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

  • การล็อกอินแบบปกติ: ผู้ใช้กรอกอีเมลและรหัสผ่าน จากนั้นระบบจะขอให้ยืนยันตัวตนด้วย MFA ไม่ว่าจะเป็น OTP หรือการยืนยันผ่านแอปพลิเคชัน
  • การล็อกอินด้วย Magic Link: ผู้ใช้กรอกแค่อีเมล ระบบจะส่งลิงก์พิเศษไปยังกล่องจดหมาย เมื่อคลิกลิงก์นั้นก็จะเข้าสู่ระบบได้โดยตรงทันทีโดยไม่ต้องใช้รหัสผ่าน บางระบบอาจจะมีการขอ MFA เพิ่มเติมหลังจากนี้ แต่บางระบบก็อาจจะไม่ได้ทำในทันที

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

แผนการโจมตีที่อาศัยความสับสนของระบบ

ช่องโหว่นี้ถูกค้นพบและสามารถนำไปใช้โจมตีได้จริงผ่านขั้นตอนที่ไม่ซับซ้อนนัก:

  • ขั้นที่ 1: เริ่มต้นด้วยการล็อกอินแบบปกติ ผู้โจมตีพยายามเข้าสู่ระบบด้วยอีเมลและรหัสผ่านที่ถูกต้อง ระบบจะตรวจสอบและตอบกลับมาว่า “ต้องยืนยันตัวตนด้วย MFA เพิ่มเติม” ณ จุดนี้ ผู้โจมตียังไม่ได้ดำเนินการยืนยัน MFA แต่อย่างใด
  • ขั้นที่ 2: สร้าง Magic Link สำหรับบัญชีเดียวกัน ในขณะที่การล็อกอินแบบปกติกำลังรอ MFA ผู้โจมตีจะไปเริ่มต้นกระบวนการ “ล็อกอินด้วย Magic Link” สำหรับบัญชีผู้ใช้คนเดียวกัน
  • ขั้นที่ 3: คลิก Magic Link ระบบจะส่งลิงก์พิเศษไปยังอีเมลของผู้ใช้ (ซึ่งผู้โจมตีต้องเข้าถึงได้) เมื่อผู้โจมตีคลิกลิงก์ Magic Link นี้ ระบบจะถือว่าเป็นการเข้าสู่ระบบที่สำเร็จ โดยที่ เส้นทางการล็อกอินแบบ Magic Link ไม่ได้บังคับให้มีการยืนยัน MFA ในทันที
  • ผลลัพธ์: MFA หายไปอย่างไร้ร่องรอย! เมื่อ Magic Link ทำงานสำเร็จ ระบบจะทำการอัปเดต session ของผู้ใช้งานที่กำลังดำเนินการอยู่ และเนื่องจาก session นี้ถูกใช้ร่วมกับเส้นทางการล็อกอินแบบปกติ คำขอ MFA ที่เคยถูกเรียกจากขั้นตอนแรกจึงถูก “ล้างทิ้ง” หรือ “เขียนทับ” ไปด้วยสถานะใหม่ที่มาจาก Magic Link ทำให้ผู้โจมตีสามารถเข้าถึงบัญชีได้โดยสมบูรณ์ โดยไม่ต้องผ่านด่าน MFA เลยแม้แต่น้อย

บทเรียนสำคัญสำหรับการออกแบบระบบความปลอดภัย

เหตุการณ์นี้เน้นย้ำให้เห็นว่า การรักษาความปลอดภัยของระบบไม่ได้ขึ้นอยู่กับความแข็งแกร่งของแต่ละองค์ประกอบเพียงอย่างเดียว แต่ยังรวมถึง ปฏิสัมพันธ์ และ การทำงานร่วมกัน ของฟีเจอร์ต่างๆ ด้วย

นักพัฒนาและผู้ดูแลระบบจึงต้องพิจารณาอย่างรอบคอบถึงผลกระทบของการแชร์ session state ระหว่างเส้นทางการเข้าสู่ระบบที่แตกต่างกัน ต้องแน่ใจว่าไม่ว่าผู้ใช้จะเข้ามาจากช่องทางใด กลไกการป้องกันความปลอดภัย เช่น MFA จะยังคงถูกบังคับใช้อย่างสม่ำเสมอและไม่สามารถถูกบายพาสได้ง่ายๆ

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