จากรายงานด้านความปลอดภัยล่าสุด Okta ได้เปิดเผยช่องโหว่ในระบบ AD/LDAP Delegated Authentication ที่เกิดขึ้นระหว่างเดือนกรกฎาคมถึงตุลาคม 2024 การวิเคราะห์ทางเทคนิคจากชุมชนได้เผยให้เห็นถึงการตัดสินใจในการออกแบบสถาปัตยกรรมที่นำไปสู่ปัญหาด้านความปลอดภัยนี้
สาเหตุทางเทคนิค
ช่องโหว่นี้เกิดจากการใช้งาน BCrypt ในการสร้างคีย์แคช โดยระบบได้นำ userId, username และรหัสผ่านมาต่อกันเพื่อสร้างคีย์แคช แต่ข้อจำกัดของ BCrypt ที่รองรับได้เพียง 72 ไบต์กลับสร้างปัญหา เมื่อชื่อผู้ใช้มีความยาวเกิน 52 ตัวอักษร ส่วนของรหัสผ่านอาจถูกตัดออกจากคีย์แคช ซึ่งอาจทำให้สามารถเข้าสู่ระบบได้โดยใช้เพียงชื่อผู้ใช้ผ่านคีย์แคชที่ถูกเก็บไว้ก่อนหน้า
รูปแบบการออกแบบที่ไม่เหมาะสมที่พบ
ผู้เชี่ยวชาญด้านความปลอดภัยได้ชี้ให้เห็นปัญหาหลายประการในการออกแบบของ Okta ได้แก่:
- การใช้ BCrypt ซึ่งเป็นอัลกอริทึมสำหรับการแฮชรหัสผ่าน มาใช้ในการสร้างคีย์แคช
- การรวมตัวระบุ (userId, username) กับข้อมูลที่เป็นความลับ (รหัสผ่าน) ในการแฮชเดียว
- ไม่คำนึงถึงข้อจำกัดด้านความยาวที่ทราบอยู่แล้วของ BCrypt
- การจัดการตัวคั่นในกระบวนการต่อข้อความที่ไม่เหมาะสม
แนวทางการพัฒนาที่ดีกว่า
ชุมชนได้เสนอแนวทางทางเลือกหลายประการที่อาจป้องกันช่องโหว่นี้ได้:
- แยกการจัดเก็บรหัสผ่านออกจากการสร้างคีย์แคช
- ใช้ HMAC หรือฟังก์ชันสร้างคีย์เฉพาะ (KDFs) เช่น HKDF สำหรับการสร้างคีย์แคช
- ใช้การกำหนดความยาวฟิลด์ที่เหมาะสมแทนการใช้ตัวคั่น
- แยกการแฮชข้อมูลแต่ละฟิลด์ก่อนนำมาต่อกัน
ข้อพิจารณาในการใช้งานแคช
การโจมตีช่องโหว่นี้ต้องอาศัยเงื่อนไขเฉพาะ: เช่น เมื่อ AD/LDAP agent ไม่สามารถเข้าถึงได้ หรือในสถานการณ์ที่มีการจราจรสูงทำให้เกิดการใช้แคช สิ่งนี้แสดงให้เห็นถึงความละเอียดอ่อนระหว่างการเพิ่มประสิทธิภาพและความปลอดภัยในระบบยืนยันตัวตน ชุมชนเน้นย้ำว่าการล้างแคชผ่านการเปลี่ยนรหัสผ่านน่าจะเป็นข้อพิจารณาสำคัญในการออกแบบเดิม แม้ว่าการนำไปใช้จะมีข้อบกพร่อง
ผลกระทบและการแก้ไข
Okta ได้แก้ไขช่องโหว่นี้โดยเปลี่ยนจาก BCrypt เป็น PBKDF2 สำหรับการดำเนินการเข้ารหัส องค์กรที่ใช้ AD/LDAP Delegated Authentication ของ Okta ควรตรวจสอบบันทึกระบบของตนเองเพื่อหาการโจมตีที่อาจเกิดขึ้นระหว่างวันที่ 23 กรกฎาคมถึง 30 ตุลาคม 2024 โดยเฉพาะอย่างยิ่งหากมีผู้ใช้ที่มีชื่อผู้ใช้ยาว 52 ตัวอักษรขึ้นไป
การตอบสนองของอุตสาหกรรม
ชุมชนด้านความปลอดภัยได้แสดงความกังวลเกี่ยวกับจังหวะเวลาในการเปิดเผยข้อมูลของ Okta ซึ่งประกาศในช่วงบ่ายวันศุกร์ สิ่งนี้ได้จุดประเด็นการถกเถียงเกี่ยวกับความโปร่งใสในการเปิดเผยข้อมูลด้านความปลอดภัยและความจำเป็นในการมีแนวทางปฏิบัติที่เป็นมาตรฐานมากขึ้นในอุตสาหกรรมการจัดการตัวตนและการเข้าถึง