ช่องโหว่การข้ามการยืนยันตัวตนระดับวิกฤตในปลั๊กอิน better-auth API keys ทำให้ผู้โจมตีที่ไม่ได้รับการยืนยันตัวตนสามารถสร้าง API Key ที่มีสิทธิ์สูงสำหรับผู้ใช้ใด ๆ ได้ ซึ่งนำไปสู่การเข้ายึดบัญชีโดยไม่ได้รับอนุญาต ช่องโหว่นี้ (CVE-2025-61928) ส่งผลกระทบต่อ better-auth library ทุกเวอร์ชันก่อน 1.3.26 ซึ่งเป็นไลบรารีที่มีการดาวน์โหลดผ่าน npm ประมาณ 300,000 ครั้งต่อสัปดาห์ และใช้สำหรับการยืนยันตัวตนในองค์กรตั้งแต่สตาร์ทอัพไปจนถึงองค์กรขนาดใหญ่ เช่น Equinor
Severity: วิกฤต
System Impact:
- better-auth API keys plugin
- better-auth library (เวอร์ชันก่อน 1.3.26)
- ระบบที่ใช้ better-auth สำหรับการยืนยันตัวตน (เช่น Equinor)
Technical Attack Steps:
- ช่องโหว่อยู่ใน handler `createApiKey` ภายในปลั๊กอิน API keys
- เงื่อนไขของ handler `authRequired` จะประเมินเป็น `false` หากไม่มี session แต่มี `userId` อยู่ใน JSON request body
- สถานการณ์นี้ทำให้ handler สร้าง object ผู้ใช้โดยตรงจาก input ที่ผู้โจมตีควบคุมได้
- การตรวจสอบสำหรับ fields ที่มีสิทธิ์สูง (เช่น `rateLimitMax`, `remaining`, `refillAmount`, `permissions`) จะถูกข้ามไป
- ผู้โจมตีที่ไม่มีการยืนยันตัวตนสามารถส่งคำขอ POST ไปยัง `/api/auth/api-key/create` โดยใส่ `userId` ของเหยื่อใน body
- ผู้โจมตีจะได้รับ API Key ที่ถูกต้องและมีสิทธิ์สูงสำหรับบัญชีนั้น
- Handler `updateApiKey` ก็ได้รับผลกระทบด้วย ซึ่งอนุญาตให้แก้ไขข้อมูลประจำตัวได้
- การโจมตีนี้สามารถข้ามการยืนยันตัวตนแบบหลายปัจจัย (MFA) และนำไปสู่การเข้ายึดบัญชีอย่างเป็นระบบ
Recommendations:
Short Term:
- อัปเกรดปลั๊กอิน better-auth API keys เป็นเวอร์ชัน 1.3.26 หรือใหม่กว่าทันที
- หมุนเวียน (rotate) API Key ทั้งหมดที่สร้างขึ้นผ่านปลั๊กอินในช่วงที่ได้รับผลกระทบ
- เพิกถอนข้อมูลประจำตัวที่ไม่ได้ใช้งาน
Long Term:
- ตรวจสอบบันทึก (logs) ของแอปพลิเคชันและ reverse-proxy สำหรับการเรียกใช้ `/api/auth/api-key/create` หรือ `/api/auth/api-key/update` ที่ไม่ได้รับการยืนยันตัวตน โดยเฉพาะคำขอที่ไม่มี session cookies ที่ผ่านการยืนยันตัวตนและมีการตั้งค่า fields เช่น `userId`, `rateLimitMax`, หรือ `permissions`
- ตรวจสอบการใช้งาน API ที่มาจาก IP ที่ไม่คุ้นเคยหรือ service tokens
- หากพบกิจกรรมที่น่าสงสัยในบันทึก ควรดำเนินการออกข้อมูลประจำตัวใหม่ทั้งหมดสำหรับบัญชีที่ได้รับผลกระทบ
Source: https://cybersecuritynews.com/authentication-bypass-better-auth-api-keys/
Share this content: