Lỗ hổng CVE Nghiêm trọng better-auth: Chiếm quyền Điều khiển

Lỗ hổng CVE Nghiêm trọng better-auth: Chiếm quyền Điều khiển

Một lỗ hổng CVE nghiêm trọng đã được phát hiện trong plugin API keys của thư viện better-auth, cho phép kẻ tấn công chưa xác thực tạo ra các khóa API có đặc quyền cho bất kỳ người dùng nào. Sự cố này đặt ra nguy cơ cao về việc chiếm quyền điều khiển tài khoản và truy cập trái phép hệ thống.

Lỗ hổng này, được theo dõi với mã định danh CVE-2025-61928, ảnh hưởng đến tất cả các phiên bản của thư viện better-auth trước 1.3.26. Đây là một gói phần mềm quan trọng, ghi nhận khoảng 300.000 lượt tải xuống hàng tuần trên npm và được sử dụng rộng rãi để cung cấp tính năng xác thực cho nhiều tổ chức.

Nội dung
Phân Tích Chuyên Sâu Lỗ Hổng CVE-2025-61928

Cơ Chế Khai Thác Chi Tiết
Tác Động và Rủi Ro từ Lỗ Hổng Nghiêm Trọng

Chỉ Số Nhận Dạng (IOCs) và Phát Hiện Xâm Nhập
Biện Pháp Khắc Phục và Cập Nhật Bản Vá Khẩn Cấp

Phân Tích Chuyên Sâu Lỗ Hổng CVE-2025-61928

Việc phát hiện ra lỗ hổng CVE-2025-61928 diễn ra vào ngày 01 tháng 10 năm 2025. ZeroPath đã sử dụng bộ quét SAST tự động của mình để phân tích nhánh canary của thư viện better-auth trong quá trình xây dựng quy trình đánh giá các phụ thuộc bên thứ ba cho các tổ chức lớn.

Cơ Chế Khai Thác Chi Tiết

Các nhà nghiên cứu của ZeroPath đã xác định rằng cốt lõi của lỗ hổng CVE này nằm trong trình xử lý createApiKey của plugin API keys. Trình xử lý này có nhiệm vụ quyết định liệu một yêu cầu tạo khóa API có cần xác thực hay không. Cơ chế kiểm tra dựa trên sự hiện diện của một phiên (session) đã được xác thực và việc có hay không trường userId trong phần thân yêu cầu.

Vấn đề phát sinh khi không có phiên nào tồn tại, nhưng một userId vẫn được cung cấp trong phần thân JSON của yêu cầu. Trong kịch bản này, biến nội bộ authRequired bị đánh giá sai thành false.

Hậu quả trực tiếp của việc đánh giá sai này là trình xử lý bỏ qua hoàn toàn các quy trình xác thực và ủy quyền cần thiết. Thay vì xác thực người dùng, hệ thống trực tiếp xây dựng một đối tượng người dùng từ dữ liệu đầu vào do kẻ tấn công cung cấp.

Luồng kiểm soát lỗi này không chỉ bỏ qua bước xác thực mà còn bỏ qua nhánh mã có trách nhiệm chặn các trường có đặc quyền. Các trường này bao gồm rateLimitMax (giới hạn tốc độ tối đa), remaining (số lượt sử dụng còn lại), refillAmount (lượng bổ sung) và quan trọng nhất là permissions (quyền hạn).

Do đó, một kẻ tấn công không cần xác thực có thể gửi một yêu cầu POST được cấu tạo đặc biệt tới endpoint /api/auth/api-key/create. Chỉ cần cung cấp ID người dùng của nạn nhân trong phần thân yêu cầu, kẻ tấn công sẽ nhận được một khóa API hoàn toàn hợp lệ, được gán cho tài khoản đó và có thể được gán các quyền hạn nâng cao.

Ví dụ về cấu trúc yêu cầu độc hại có thể được sử dụng để khai thác lỗ hổng CVE-2025-61928:

POST /api/auth/api-key/create HTTP/1.1
Host: your-application.com
Content-Type: application/json
Content-Length: <length>

{
  "userId": "victim_user_id",
  "permissions": ["admin", "read", "write", "all"],
  "rateLimitMax": 9999999999,
  "remaining": 9999999999,
  "refillAmount": 9999999999
}

Điều đáng lo ngại là cùng một logic lỗi này cũng tồn tại và ảnh hưởng đến trình xử lý updateApiKey. Điều này mở rộng bề mặt tấn công, cho phép kẻ tấn công không chỉ tạo mới mà còn sửa đổi các khóa API hiện có, có khả năng nâng cao đặc quyền của chúng. Đường dẫn mã dễ bị tổn thương này đã tồn tại trong mọi bản phát hành có chứa plugin API keys, nghĩa là tất cả các phiên bản trước 1.3.26 đều có thể bị khai thác bởi lỗ hổng nghiêm trọng này.

Tác Động và Rủi Ro từ Lỗ Hổng Nghiêm Trọng

Tác động của lỗ hổng CVE này là cực kỳ đáng kể đối với bất kỳ tổ chức nào sử dụng thư viện better-auth. Khóa API thường có vòng đời dài hơn nhiều so với các phiên trình duyệt và thường được cấp các đặc quyền tự động hóa cao cấp để tương tác với các dịch vụ và dữ liệu nhạy cảm.

Với một khóa API hợp lệ trong tay, kẻ tấn công có thể dễ dàng bỏ qua các cơ chế xác thực mạnh mẽ, bao gồm cả xác thực đa yếu tố (MFA). Khả năng này cho phép thực hiện các cuộc chiếm quyền điều khiển tài khoản một cách có hệ thống trên bất kỳ định danh tài khoản nào đã biết hoặc có thể đoán được. Điều này có thể dẫn đến truy cập trái phép vào dữ liệu nhạy cảm, thực thi các hành động không mong muốn và gây ra thiệt hại đáng kể cho hệ thống.

Chỉ Số Nhận Dạng (IOCs) và Phát Hiện Xâm Nhập

Để phát hiện sớm các dấu hiệu khai thác lỗ hổng CVE-2025-61928, các quản trị viên hệ thống và đội ngũ bảo mật nên thực hiện việc rà soát kỹ lưỡng nhật ký ứng dụng (application logs) và nhật ký của các proxy ngược (reverse-proxy logs). Cần tìm kiếm các hoạt động đáng ngờ, đặc biệt là các cuộc gọi không xác thực (unauthenticated calls) tới các endpoint sau:

  • /api/auth/api-key/create
  • /api/auth/api-key/update

Các yêu cầu cần đặc biệt chú ý là những yêu cầu thiếu cookie phiên đã xác thực (authenticated session cookies) nhưng trong phần thân yêu cầu lại thiết lập các trường sau:

  • userId: Chỉ định người dùng mục tiêu.
  • rateLimitMax: Cố gắng đặt giới hạn tốc độ cao bất thường.
  • permissions: Cố gắng gán các quyền hạn nâng cao (ví dụ: “admin”, “all”).

Bất kỳ hoạt động nhật ký nào có tính chất mơ hồ hoặc khớp với các mẫu trên đều cần được xem xét là một cảnh báo nghiêm trọng. Trong trường hợp này, cần phải tiến hành phát hành lại toàn bộ thông tin xác thực cho các tài khoản bị ảnh hưởng, bao gồm việc xoay vòng tất cả khóa API và thay đổi mật khẩu.

Sau đó, cần thiết lập giám sát liên tục để theo dõi việc sử dụng API, đặc biệt là các yêu cầu phát sinh từ các địa chỉ IP hoặc token dịch vụ không quen thuộc. Đây là biện pháp phòng thủ chủ động nhằm ngăn chặn nguy cơ chiếm quyền điều khiển tiếp theo.

Biện Pháp Khắc Phục và Cập Nhật Bản Vá Khẩn Cấp

Để bảo vệ hệ thống khỏi lỗ hổng CVE-2025-61928, các tổ chức đang sử dụng plugin API keys của thư viện better-auth phải nâng cấp ngay lập tức lên phiên bản 1.3.26 hoặc mới hơn. Phiên bản này đã chứa bản vá khắc phục triệt để kiểm tra ủy quyền bị lỗi, loại bỏ bề mặt tấn công nguy hiểm.

Sau khi hoàn tất việc cập nhật bản vá, một bước quan trọng không kém là xoay vòng (rotate) tất cả các khóa API đã được tạo thông qua plugin trong khoảng thời gian hệ thống dễ bị tổn thương. Đồng thời, cần hủy bỏ hiệu lực (invalidate) mọi thông tin đăng nhập không còn được sử dụng để giảm thiểu rủi ro.

Đội ngũ duy trì thư viện better-auth đã thể hiện trách nhiệm cao và phản ứng nhanh chóng sau khi được tiết lộ một cách có trách nhiệm về lỗ hổng CVE này. Họ đã phát hành bản vá trong vòng chưa đầy 24 giờ. Thông báo bảo mật trên GitHub:

GHSA-99h5-pjcv-gr6v

và việc gán mã định danh CVE-2025-61928 đã được công bố ngay sau đó. Toàn bộ quá trình phối hợp từ khi phát hiện lỗ hổng đến khi công bố thông báo công khai chỉ kéo dài tám ngày, một minh chứng cho khả năng phản ứng mạnh mẽ và chuyên nghiệp từ phía nhà cung cấp trước một lỗ hổng nghiêm trọng.