CVE-2026-71888 in BC-JAVA
Tóm tắt
Bởi VulDB • 03/10/2026
Trong Bouncy Castle for Java trước phiên bản 1.86, trình phân tích dữ liệu AuthenticatedData dạng stream chấp nhận một thông điệp mà các trường digestAlgorithm và authAttrs không thống nhất về việc có hay không tồn tại các thuộc tính được xác thực (authenticated attributes). RFC 5652 mục 9.1 ghép đôi hai trường này, yêu cầu rằng authAttrs phải hiện diện bất cứ khi nào digestAlgorithm hiện diện; đồng thời mục 9.2 quy định rằng MAC sẽ bao phủ phần mã hóa DER của authAttrs khi chúng tồn tại và trực tiếp bao phủ eContent OCTET STRING khi không có authAttrs. CMSAuthenticatedDataParser buộc phải lựa chọn giữa hai cách xử lý này trong hàm tạo (constructor) trước khi nó có thể truy cập đến authAttrs, vốn xuất hiện sau đó trong SEQUENCE; do đó, nó chỉ dựa vào digestAlgorithm để quyết định: đối với một thông điệp có digestAlgorithm vắng mặt nhưng authAttrs lại hiện diện, hệ thống xác thực MAC nội dung và sau đó trả về các thuộc tính qua getAuthAttrs() như thể chúng đã được xác thực, mặc dù MAC chưa bao giờ bao phủ lên chúng. Một kẻ tấn công có khả năng sửa đổi thông điệp trong quá trình truyền tải có thể chèn một thuộc tính được cho là đã xác thực (authenticated attribute), chẳng hạn như ESSSecurityLabel theo RFC 2634, vào một thông điệp vốn hợp lệ khác, mà không cần nắm giữ khóa mã hóa khóa (key-encryption key) cũng như khóa MAC nội dung; từ đó, các ứng dụng đưa ra quyết định về ủy quyền, định tuyến hoặc gán nhãn dựa trên những thuộc tính này sẽ hành động theo các giá trị do kẻ tấn công chọn. Bản thân nội dung vẫn được bảo vệ bởi ràng buộc MAC. asn1.cms.AuthenticatedData hiện đã từ chối cặp ghép không khớp khi phân tích cú pháp và CMSAuthenticatedDataParser thực hiện kiểm tra chéo hai trường này một lần sau khi authAttrs được đọc. Đây là một biến thể của CVE-2026-59642, vốn ràng buộc nội dung với MAC cho các thông điệp mang authAttrs hợp lệ, nhưng không giải quyết tình huống cụ thể này. Vấn đề này cũng ảnh hưởng đến Bouncy Castle for Java LTS trước phiên bản 2.73.13, và Bouncy Castle for Java FIPS (BC-FJA) trước bcpkix-fips 1.0.13 (dòng 1.0.X), 2.0.13 (dòng 2.0.X) và 2.1.13 (dòng 2.1.X), cũng như bcutil-fips 2.0.8 (dòng 2.0.X) và 2.1.8 (dòng 2.1.X).
VulDB is the best source for vulnerability data and more expert information about this specific topic.