OpenBSD ldapd áp dụng nhầm kết quả xác thực, cho phép Bind dưới danh tính khác

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-103547 là gì?

Lỗ hổng CVE-2026-103547 là lỗ hổng Incorrect Authorization ảnh hưởng tới OpenBSD (phiên bản bị ảnh hưởng: 7.8 – < errata 057 và 7.9 – < errata 021). Lỗ hổng này được xếp hạng ở mức Nghiêm trọng, với điểm CVSS 9.2. Các nguồn hiện có chưa ghi nhận lỗ hổng này bị khai thác.

Giới thiệu chung

Dữ liệu gốc

Trong ldapd của OpenBSD 7.8 trước errata 057 và 7.9 trước errata 021, các kết quả xác thực BSD được ủy quyền chỉ được ghép dựa trên file descriptor của client trong tiến trình con LDAP và LDAP message ID. Sau khi một kết nối đóng, một kết nối sau đó tái sử dụng cùng file descriptor và message ID có thể nhận kết quả xác thực trước đó. Kẻ tấn công từ xa có thể truy cập ldapd có thể hoàn tất một Bind dưới một danh tính khác. Một kết nối bị thiếu cũng có thể gây ra NULL pointer dereference. (ldapd không được bật mặc định.)

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

• OpenBSD 7.8: bị ảnh hưởng trước errata 057. Errata tương ứng là 057_ldapd.patch.sig. • OpenBSD 7.9: bị ảnh hưởng trước errata 021. Errata tương ứng là 021_ldapd.patch.sig. • ldapd không được bật mặc định. Trạng thái của các nhánh hoặc bản phát hành khác không được xác định bởi các dữ kiện đã kiểm tra, vì vậy không nên suy luận rằng chúng được bao phủ hoặc không bị ảnh hưởng.

Chi tiết kỹ thuật

Lỗi nằm trong cơ chế ldapd chuyển yêu cầu xác thực BSD được ủy quyền sang tiến trình con LDAP rồi ghép kết quả trả về với yêu cầu Bind đang chờ. Trước bản sửa, việc ghép này chỉ dựa trên file descriptor của client trong tiến trình con LDAP và LDAP message ID. Khi một kết nối đóng, file descriptor có thể được tái sử dụng cho kết nối mới; nếu message ID cũng trùng, kết quả xác thực cũ có thể được áp dụng cho kết nối mới, tạo ra lỗi CWE-863 Incorrect Authorization.

Bản sửa gán cho mỗi kết nối một định danh 64-bit riêng, truyền định danh này trong yêu cầu và kết quả xác thực, rồi tra cứu bằng conn_by_id thay vì conn_by_fd. Bản sửa cũng kiểm tra trường hợp không còn kết nối tương ứng trước khi tiếp tục xử lý kết quả, tránh dereference con trỏ NULL. Điều kiện khai thác cụ thể về thứ tự gói tin, thời điểm đóng mở kết nối và cách tạo lại message ID không được tài liệu công khai xác định đầy đủ.

Khả năng khai thác

Lỗi có thể bị khai thác từ xa qua mạng bởi đối tượng có thể truy cập dịch vụ ldapd. Bản ghi đánh giá yêu cầu không có quyền xác thực trước và không cần tương tác người dùng, nhưng độ phức tạp cao và có điều kiện khai thác liên quan đến việc tái sử dụng kết nối và message ID. Kết quả là kẻ tấn công có thể hoàn tất LDAP Bind dưới một danh tính khác; một đường xử lý khác có thể dẫn đến NULL pointer dereference. Bản ghi và các tài liệu nguồn được kiểm tra không nêu exploit công khai, chiến dịch khai thác hoặc nạn nhân cụ thể; điều này không chứng minh rằng chưa từng có khai thác.

Tác động kỹ thuật

Lỗi có thể làm kết quả xác thực thành công của một giao dịch được áp dụng cho giao dịch khác, dẫn đến xác thực sai danh tính và vượt qua kiểm soát truy cập trong phạm vi quyền của danh tính bị nhận nhầm. Kẻ tấn công không cần tài khoản trước theo thông tin đánh giá, nhưng phải tiếp cận được ldapd và đáp ứng điều kiện ghép kết nối, file descriptor và message ID với độ phức tạp cao. Nếu không tìm thấy kết nối tương ứng khi xử lý kết quả, ldapd có thể gặp NULL pointer dereference và mất khả năng cung cấp dịch vụ. Bản ghi không xác định rằng mọi cấu hình LDAP hoặc mọi luồng Bind đều có thể bị khai thác, nên tác động thực tế phụ thuộc vào việc dùng delegated BSD authentication và quyền của các danh tính LDAP.

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

• Một người dùng từ xa có thể được xác thực nhầm thành danh tính khác, có khả năng vượt qua các quyết định kiểm soát truy cập dựa trên LDAP nếu điều kiện ghép sai xảy ra. • Các thao tác đọc hoặc thay đổi được phép theo danh tính bị nhận nhầm có thể làm lộ dữ liệu hoặc thay đổi dữ liệu; phạm vi thực tế phụ thuộc vào ACL và quyền của danh tính đó. • NULL pointer dereference có thể làm ldapd dừng hoặc mất khả năng phục vụ xác thực, gây gián đoạn đăng nhập và các dịch vụ phụ thuộc. • Rủi ro chỉ áp dụng cho các triển khai có bật và cho phép truy cập đến ldapd; các hệ thống không chạy daemon này không được mô tả là bị ảnh hưởng bởi cơ chế nêu trên.

Cách khắc phục

  1. Ưu tiên áp dụng errata chính thức cho nhánh đang sử dụng: errata 057 cho OpenBSD 7.8 hoặc errata 021 cho OpenBSD 7.9.
  2. Xác minh chữ ký của patch bằng khóa base tương ứng trước khi áp dụng. Patch chính thức yêu cầu áp dụng vào cây mã nguồn rồi xây dựng và cài đặt lại ldapd.
  3. Sau khi áp dụng patch, thực hiện lại quy trình make obj, make và make install trong usr.sbin/ldapd theo hướng dẫn của OpenBSD.
  4. Nếu ldapd không cần thiết, duy trì daemon ở trạng thái tắt và hạn chế khả năng truy cập mạng đến dịch vụ như một biện pháp giảm thiểu tạm thời.
  5. Kiểm tra lại daemon và các dịch vụ phụ thuộc sau khi cập nhật, đồng thời xác nhận rằng bản dựng đang chạy chứa thay đổi dùng định danh kết nối riêng thay cho file descriptor.

Cách phát hiện

  1. Kiểm kê các máy OpenBSD có cài đặt hoặc chạy ldapd; dịch vụ này không được bật mặc định nên cần kiểm tra cả cấu hình khởi động và tiến trình thực tế.
  2. Xác định nhánh phát hành và trạng thái errata của từng máy, sau đó đối chiếu với các ranh giới bị ảnh hưởng trong phần affected summary.
  3. Với bản dựng từ mã nguồn, kiểm tra ldapd đã dùng định danh kết nối 64-bit, conn_by_id và nhánh xử lý kết nối không tồn tại hay chưa.
  4. Rà soát log của ldapd cho các thông báo auth result with no connection hoặc spurious auth result. Đây là tín hiệu chẩn đoán được mã nguồn sửa lỗi sử dụng, không phải IOC đã được xác nhận; việc không có các log này không chứng minh hệ thống an toàn.
  5. Kiểm tra các sự kiện Bind bất thường, đặc biệt là kết quả xác thực không phù hợp với kết nối hoặc danh tính mà ứng dụng LDAP ghi nhận, như một biện pháp giám sát bổ sung.
Nguồn (17)
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.