Lỗi lọc credential trong Dolibarr Members REST API làm lộ verifier mật khẩu bcrypt

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Lỗ hổng CVE-2026-71511 là gì?

Lỗ hổng CVE-2026-71511 là lỗ hổng Insufficiently Protected Credentials ảnh hưởng tới dolibarr (phiên bản bị ảnh hưởng: < 24.0.0). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 7.1. Lỗ hổng này đã có mã hoặc bằng chứng khai thác công khai, nhưng điều đó chưa xác nhận việc khai thác trong thực tế.

Giới thiệu chung

Dữ liệu gốc

Dolibarr trước 24.0.0 chứa một lỗ hổng phơi lộ dữ liệu nhạy cảm trong Members REST API, cho phép kẻ tấn công đã xác thực và có quyền đọc member lấy các verifier mật khẩu bcrypt bằng cách truy vấn các endpoint member. Kẻ tấn công có thể gọi endpoint của từng member hoặc endpoint danh sách member để lấy các trường verifier mật khẩu đã mã hóa, vốn không được base API serializer hoặc Members API class lọc bỏ, từ đó có khả năng thực hiện các cuộc tấn công cracking mật khẩu offline.

Sản phẩm và phạm vi ảnh hưởng

  • Dolibarr dolibarr: các phiên bản từ 0 và nhỏ hơn 24.0.0 được đánh dấu là affected.

  • Thành phần: Members REST API, đặc biệt các phản hồi từ endpoint lấy một member và endpoint danh sách member.

  • Bản sửa: Dolibarr 24.0.0 được xác định là bản đã sửa lỗi. Patch bổ sung việc loại bỏ pass_indatabase_crypted khỏi kết quả API và mở rộng redaction cho nhóm trường mật khẩu. Trạng thái của các nhánh song song hoặc bản dựng tùy biến không được mô tả riêng trong dữ liệu ảnh hưởng.

Chi tiết kỹ thuật

Dolibarr Members REST API thực hiện kiểm tra quyền hợp lệ trước khi trả dữ liệu, nhưng bộ lọc phản hồi không loại bỏ đầy đủ các trường credential. Người gọi đã xác thực và có quyền đọc member, được biểu diễn bởi quyền adherent.lire, có thể truy vấn endpoint của một member hoặc danh sách member để nhận verifier mật khẩu bcrypt.

Luồng lỗi nằm ở _cleanObjectDatas() của Members API trong htdocs/adherents/class/api_members.class.php, nơi việc làm sạch đối tượng dựa vào bộ lọc dùng chung trong htdocs/api/class/api.class.php. Bộ lọc dùng chung loại bỏ pass và pass_indatabase, nhưng để lại pass_indatabase_crypted, pass_crypted và pass_temp; trong đó pass_indatabase_crypted là verifier đang được dùng để kiểm tra đăng nhập. Members API không bổ sung bước loại bỏ các trường này trước khi serialize phản hồi.

Các endpoint lấy một member và liệt kê member đều đi qua cùng logic làm sạch, vì vậy một quyền đọc hợp lệ có thể làm lộ verifier của nhiều member. Đây là lỗi bảo vệ credential không đầy đủ sau một lần đọc được cấp quyền, không phải thiếu kiểm tra xác thực cho người dùng ẩn danh. Evidence hiện có không xác định hành vi của các extension hoặc serializer tùy biến ngoài các đường xử lý nêu trên.

Khả năng khai thác

Lỗ hổng có thể bị khai thác qua mạng bằng một tài khoản đã xác thực có quyền đọc member; không cần quyền quản trị và không cần người dùng khác tương tác. Bản ghi chuẩn hóa đánh dấu đã có public exploit, và nghiên cứu công khai đã trình bày một reproduction có thể lấy verifier từ cả truy vấn member đơn lẻ và danh sách member.

Độ phức tạp khai thác thấp theo các thuộc tính đã cung cấp: kẻ tấn công chỉ cần sử dụng quyền đọc vốn đã được cấp để truy vấn API. Bản trình diễn công khai được thực hiện trên một môi trường Docker cục bộ, nên chứng minh đường rò rỉ dữ liệu chứ không tự nó xác nhận việc lạm dụng trong môi trường thực tế.

Verifier bcrypt không đăng nhập trực tiếp như mật khẩu rõ. Kẻ tấn công phải thực hiện cracking offline; khả năng thành công phụ thuộc vào độ mạnh và mức tái sử dụng của mật khẩu.

Tác động kỹ thuật

Lỗi làm mất tính bí mật của verifier mật khẩu trong các bản ghi member mà một caller có quyền đọc có thể truy cập. Verifier bcrypt không phải mật khẩu rõ và không tạo quyền đăng nhập ngay lập tức, nhưng nó cho phép thử mật khẩu offline mà không bị giới hạn tốc độ, lockout hoặc bộ đếm thất bại của hệ thống trực tuyến.

Hậu quả có thể gồm việc chiếm quyền các tài khoản member nếu mật khẩu yếu, cũng như ảnh hưởng đến các dịch vụ khác nếu mật khẩu được tái sử dụng. Có khả năng ảnh hưởng đến tài khoản back-office trong trường hợp hệ thống đã sao chép cùng verifier từ member sang staff account, nhưng tài liệu hiện có chỉ xác nhận đây là khả năng ở mức source, chưa phải đường khai thác đã được chứng minh. Lỗi này tự nó được mô tả là rò rỉ dữ liệu credential; không có bằng chứng trong record cho thấy nó trực tiếp sửa dữ liệu hoặc gây gián đoạn dịch vụ.

Tác động đến tổ chức

  • Lộ dữ liệu credential: Một key được cấp để tra cứu member có thể lấy verifier mật khẩu của member, dù chức năng nghiệp vụ không cần quyền truy cập password store.

  • Mở rộng rủi ro danh tính: Verifier có thể bị cracking offline. Nếu member dùng lại mật khẩu ở dịch vụ khác, việc lộ verifier cùng login hoặc email có thể làm tăng nguy cơ truy cập trái phép ngoài Dolibarr.

  • Khó xác định phạm vi sự cố: Một lượt đọc member hợp lệ có thể trông như truy cập vận hành bình thường. Nghiên cứu công khai cho biết đường đọc này có thể không tạo event riêng, nên dữ liệu log hiện có có thể không đủ để xác định mọi verifier đã bị truy xuất.

  • Rủi ro đặc thù đối với tài khoản nhân sự: Nghiên cứu nguồn chỉ ra khả năng verifier được dùng chung khi tạo user back-office từ member, nhưng đường leo thang này được nêu như liên kết ở mức source và chưa được chạy để chứng minh khai thác.

Cách khắc phục

  1. Nâng cấp mỗi triển khai bị ảnh hưởng lên Dolibarr 24.0.0, là bản sửa được xác định trong dữ liệu CNA, release và patch.
  2. Xem mọi verifier từng được trả về từ một triển khai bị ảnh hưởng là đã bị lộ. Yêu cầu đổi mật khẩu cho các member có khả năng nằm trong phạm vi và rà soát việc tái sử dụng các mật khẩu đó ở dịch vụ khác.
  3. Rà soát API key và user có quyền đọc member; thu hồi quyền này khỏi những key không thực sự cần dùng, đặc biệt các key phục vụ reporting, synchronization hoặc tích hợp cũ.
  4. Sau khi cập nhật, kiểm thử cả truy vấn member đơn lẻ và danh sách member bằng tài khoản có quyền đọc tối thiểu. Xác nhận response không còn pass_indatabase_crypted, pass_crypted, pass_temp hoặc các trường password tương đương.
  5. Bản ghi cung cấp không nêu một workaround đầy đủ thay thế cho việc cập nhật. Việc giảm quyền đọc chỉ là biện pháp giảm rủi ro tạm thời, không thay thế bản sửa.

Cách phát hiện

  1. Kiểm kê mọi triển khai Dolibarr và xác định phiên bản đang chạy, sau đó đối chiếu với biên ảnh hưởng trong affected_summary.
  2. Liệt kê API key, user và group có quyền đọc member, đặc biệt quyền adherent.lire. Ưu tiên xác định các key được cấp cho dashboard, CRM synchronization hoặc tài khoản vận hành không cần truy cập credential.
  3. Nếu gateway hoặc hệ thống lưu lại response body, tìm trường pass_indatabase_crypted, pass_crypted hoặc pass_temp trong phản hồi của endpoint member đơn lẻ và endpoint danh sách member. Không sao chép verifier vào hệ thống ticket hoặc log mới.
  4. Rà soát log proxy và API cho các lượt đọc member được thực hiện bởi các key có quyền thấp. Những lượt gọi này có thể trông như hoạt động đọc member thông thường, vì vậy không nên chỉ tìm một event bảo mật đặc biệt.
  5. Sau khi cập nhật, dùng một tài khoản kiểm thử chỉ có quyền đọc member để kiểm tra phản hồi đại diện và xác nhận toàn bộ nhóm trường mật khẩu không còn được trả về.
  6. Nếu từng phát hiện verifier trong response, coi đó là dấu hiệu credential đã bị lộ. Việc không thấy log bất thường không chứng minh rằng dữ liệu chưa từng bị truy xuất.
Nguồn (18)
Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.