GitLab เผยแพร่แพตซ์แก้ไขช่องโหว่ authentication bypass ระดับ Critical ใน ** SAML **

GitLab ออกแพตซ์อัปเดตด้านความปลอดภัยเพื่อแก้ไขช่องโหว่ authentication bypass ระดับ Critical ใน SAML ซึ่งส่งผลกระทบต่อ GitLab Community Edition (CE) และ Enterprise Edition (EE)

Security Assertion Markup Language (SAML) เป็นโปรโตคอลการยืนยันตัวตนแบบ Single Sign-On (SSO) ที่อนุญาตให้ผู้ใช้เข้าสู่ระบบในบริการต่าง ๆ โดยใช้ข้อมูลเข้าสู่ระบบเดียวกัน

ช่องโหว่นี้มีหมายเลข CVE-2024-45409 โดยเกิดขึ้นจากปัญหาในไลบรารี OmniAuth-SAML และ Ruby-SAML ซึ่ง GitLab ใช้ในการจัดการการยืนยันตัวตนแบบ SAML

ช่องโหว่นี้เกิดขึ้นเมื่อ SAML response ที่ส่งโดยผู้ให้บริการข้อมูลประจำตัว (IdP) ไปยัง GitLab มีการกำหนดค่าไม่ถูกต้อง หรือถูกแก้ไข

โดยเฉพาะอย่างยิ่ง ช่องโหว่นี้เกี่ยวข้องกับการตรวจสอบองค์ประกอบสำคัญใน SAML assertions เช่น extern_uid (ID ผู้ใช้ภายนอก) ซึ่งใช้ในการระบุผู้ใช้อย่างชัดเจนในระบบต่าง ๆ

ผู้โจมตีสามารถสร้าง SAML response ที่เป็นอันตรายเพื่อหลอกให้ GitLab ยอมรับว่าเป็นผู้ใช้ที่ผ่านการยืนยันตัวตนแล้ว ทำให้สามารถ bypass การยืนยันตัวตนของ SAML และเข้าถึง GitLab ได้

ช่องโหว่ CVE-2024-45409 ส่งผลกระทบต่อ GitLab เวอร์ชัน 17.3.3, 17.2.7, 17.1.8, 17.0.8, 16.11.10 และทุกเวอร์ชันก่อนหน้าเวอร์ชันที่กล่าวมาทั้งหมด

ช่องโหว่ได้รับการแก้ไขใน GitLab เวอร์ชัน 17.3.3, 17.2.7, 17.1.8, 17.0.8, และ 16.11.10 โดยมีการอัปเกรด OmniAuth SAML เป็นเวอร์ชัน 2.2.1 และ Ruby-SAML เป็น 1.17.0

GitLab ระบุในแถลงการณ์ว่า "แนะนำให้ผู้ใช้งานที่ใช้เวอร์ชันที่ได้รับผลกระทบจากช่องโหว่ที่กล่าวมาข้างต้น ทำการอัปเกรดเป็นเวอร์ชันล่าสุดโดยเร็วที่สุด"

ผู้ใช้ที่ใช้ GitLab Dedicated instances บน GitLab.com ไม่จำเป็นต้องดำเนินการใด ๆ เนื่องจากปัญหานี้ส่งผลเฉพาะกับการติดตั้งแบบจัดการด้วยตนเองเท่านั้น

สำหรับผู้ที่ไม่สามารถอัปเกรดไปยังเวอร์ชันที่ปลอดภัยได้ทันที GitLab แนะนำให้เปิดใช้งานการยืนยันตัวตนสองปัจจัย (2FA) สำหรับทุกบัญชี และตั้งค่าให้ SAML 2FA bypass อยู่ในสถานะ "ไม่อนุญาต"

สัญญาณของการถูกโจมตี

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

สัญญาณของการพยายามโจมตี หรือการโจมตีที่สำเร็จได้แก่ :

  • Errors ที่เกี่ยวข้องกับ RubySaml::ValidationError (การพยายามที่ไม่สำเร็จ)
  • ค่า extern_uid ใหม่ หรือค่าที่ไม่ปกติใน authentication logs (การพยายามที่สำเร็จ)
  • ข้อมูลที่ขาดหาย หรือไม่ถูกต้องใน SAML responses
  • ค่า extern_uid หลายค่าที่เชื่อมโยงกับผู้ใช้คนเดียวกัน (เป็นสัญญาณว่าบัญชีอาจถูกบุกรุก)
  • SAML authentication จากที่อยู่ IP ที่ไม่คุ้นเคย หรือน่าสงสัยเมื่อเทียบกับรูปแบบการเข้าถึงตามปกติของผู้ใช้
  • ตัวอย่าง Log การโจมตีที่ประสบความสำเร็จ

ที่มา: bleepingcomputer