Giới thiệu chung
Dữ liệu gốcCó một lỗ hổng nhầm kiểu liên quan đến việc xử lý địa chỉ X.400 bên trong một X.509 GeneralName. Địa chỉ X.400 được phân tích thành ASN1_STRING nhưng định nghĩa cấu trúc công khai của GENERAL_NAME lại chỉ định không chính xác kiểu của trường x400Address là ASN1_TYPE. Sau đó, trường này được hàm OpenSSL GENERAL_NAME_cmp diễn giải như ASN1_TYPE thay vì ASN1_STRING. Khi bật kiểm tra CRL, tức là ứng dụng đặt cờ X509_V_FLAG_CRL_CHECK, lỗ hổng này có thể cho phép kẻ tấn công truyền các con trỏ tùy ý vào một lệnh gọi memcmp, qua đó đọc nội dung bộ nhớ hoặc gây từ chối dịch vụ. Trong hầu hết trường hợp, cuộc tấn công yêu cầu kẻ tấn công cung cấp cả chuỗi chứng chỉ và CRL, và không đầu vào nào trong hai đầu vào này cần có chữ ký hợp lệ. Nếu kẻ tấn công chỉ kiểm soát một trong hai đầu vào, đầu vào còn lại phải chứa sẵn một địa chỉ X.400 làm điểm phân phối CRL, đây là trường hợp không phổ biến. Do đó, lỗ hổng này nhiều khả năng chỉ ảnh hưởng đến các ứng dụng đã tự triển khai chức năng lấy CRL qua mạng.
Sản phẩm và phạm vi ảnh hưởng
OpenSSL được đánh dấu bị ảnh hưởng trong các nhánh sau:
- Nhánh
3.0: từ3.0.0đến trước3.0.8. - Nhánh
1.1.1: từ1.1.1đến trước1.1.1t. - Nhánh
1.0.2: từ1.0.2đến trước1.0.2zg.
Bản ghi chuẩn hóa đặt trạng thái mặc định của các phiên bản không được liệt kê là unaffected. Tuy nhiên, việc đánh giá một sản phẩm đóng gói OpenSSL vẫn cần dựa trên phiên bản thư viện mà sản phẩm thực sự sử dụng và thông báo riêng của nhà cung cấp sản phẩm đó.
Chi tiết kỹ thuật
Lỗi nằm trong quá trình xử lý địa chỉ X.400 bên trong X.509 GeneralName. Địa chỉ X.400 được phân tích thành ASN1_STRING, nhưng định nghĩa cấu trúc công khai của GENERAL_NAME lại khai báo trường x400Address là ASN1_TYPE. Khi hàm GENERAL_NAME_cmp xử lý trường này như ASN1_TYPE thay vì ASN1_STRING, dữ liệu có thể bị diễn giải sai kiểu và dẫn đến việc truyền các con trỏ tùy ý vào memcmp. Điều kiện kích hoạt là ứng dụng bật kiểm tra CRL bằng cờ X509_V_FLAG_CRL_CHECK và cho phép dữ liệu chứng chỉ hoặc CRL do bên ngoài kiểm soát đi vào quá trình xác minh. Trong kịch bản thường gặp, kẻ tấn công cần cung cấp cả chuỗi chứng chỉ và CRL; chữ ký hợp lệ không bắt buộc đối với hai đầu vào này. Nếu chỉ kiểm soát một đầu vào, đầu vào còn lại phải sẵn có địa chỉ X.400 trong điểm phân phối CRL, một trường hợp không phổ biến. Bằng chứng công khai không xác định một primitive đọc bộ nhớ đáng tin cậy, giá trị con trỏ cụ thể hay một đường khai thác tổng quát ngoài các điều kiện nêu trên.
Khả năng khai thác
Lỗi có thể bị tiếp cận qua mạng trong các ứng dụng OpenSSL tự triển khai việc lấy CRL qua mạng. Đánh giá được cung cấp mô tả rằng không cần quyền xác thực và không cần tương tác người dùng, nhưng độ phức tạp khai thác cao vì dữ liệu đầu vào cần thỏa mãn các điều kiện về chuỗi chứng chỉ, CRL và kiểm tra CRL. Trong phần lớn trường hợp, kẻ tấn công phải kiểm soát cả chuỗi chứng chỉ và CRL, đồng thời chữ ký của chúng không cần hợp lệ. Nếu chỉ kiểm soát một đầu vào, đầu vào kia phải chứa địa chỉ X.400 làm điểm phân phối CRL. Bản ghi không xác lập việc khai thác trong thực tế; trường public exploit được đánh dấu false và trạng thái khai thác đã biết không được xác định.
Tác động kỹ thuật
Lỗi có thể cho phép dữ liệu chứng chỉ hoặc CRL được chế tạo dẫn đến việc sử dụng sai kiểu con trỏ trong memcmp, từ đó làm lộ nội dung bộ nhớ hoặc gây crash tiến trình. Đánh giá đi kèm bản ghi mô tả khả năng tiếp cận qua mạng, không yêu cầu quyền xác thực và không yêu cầu tương tác người dùng, nhưng điều kiện khai thác có độ phức tạp cao. Tác động được mô tả chủ yếu là ảnh hưởng đến tính bí mật và tính sẵn sàng của tiến trình xử lý chứng chỉ; không có bằng chứng trong bản ghi về sửa đổi dữ liệu hoặc vượt qua một phạm vi tin cậy khác. Khả năng ảnh hưởng thực tế bị giới hạn bởi yêu cầu bật kiểm tra CRL và thường cần kiểm soát đồng thời chuỗi chứng chỉ cùng CRL. Chi tiết về khả năng biến primitive này thành đọc bộ nhớ có kiểm soát hoặc thực thi mã vẫn chưa được xác lập.
Tác động đến tổ chức
- Bảo mật dữ liệu: Kẻ tấn công có thể khiến tiến trình gọi
memcmpvới các con trỏ tùy ý, dẫn đến khả năng đọc nội dung bộ nhớ của tiến trình bị ảnh hưởng. - Tính sẵn sàng: Dữ liệu được chế tạo có thể làm ứng dụng bị crash hoặc ngừng xử lý xác minh chứng chỉ, gây từ chối dịch vụ.
- Phạm vi vận hành: Rủi ro tập trung vào các ứng dụng bật kiểm tra CRL và tự triển khai việc lấy CRL qua mạng, thay vì mặc định ảnh hưởng mọi ứng dụng sử dụng OpenSSL.
- Giới hạn: Bằng chứng hiện có không xác nhận việc sửa đổi dữ liệu, thực thi mã tùy ý, hay một kịch bản xâm nhập cụ thể.
Cách khắc phục
- Nâng cấp OpenSSL theo đúng nhánh phát hành: người dùng nhánh
3.0nên nâng cấp lên3.0.8; người dùng nhánh1.1.1nên nâng cấp lên1.1.1t; người dùng nhánh1.0.2nên nâng cấp lên1.0.2zg. Bản sửa cho nhánh1.0.2chỉ dành cho khách hàng có hỗ trợ cao cấp. - Kiểm tra các sản phẩm hoặc appliance đóng gói OpenSSL và áp dụng bản cập nhật tương ứng của nhà cung cấp, không chỉ cập nhật gói OpenSSL của hệ điều hành.
- Ưu tiên xử lý các ứng dụng bật
X509_V_FLAG_CRL_CHECKvà tự lấy CRL qua mạng, đặc biệt khi chúng tiếp nhận chuỗi chứng chỉ hoặc CRL từ nguồn không tin cậy. - Bằng chứng được kiểm tra không cung cấp workaround được OpenSSL xác nhận. Không nên tự tắt kiểm tra CRL nếu điều đó làm suy yếu yêu cầu xác minh chứng chỉ của ứng dụng.
Cách phát hiện
- Kiểm kê các tiến trình và sản phẩm liên kết với OpenSSL, sau đó đối chiếu phiên bản thư viện thực tế đang được nạp thay vì chỉ kiểm tra gói cài đặt.
- Rà soát mã nguồn hoặc cấu hình để tìm việc bật
X509_V_FLAG_CRL_CHECKvà các đường xử lý chuỗi chứng chỉ, CRL không tin cậy. - Xác định các ứng dụng tự triển khai cơ chế lấy CRL qua mạng, vì đây là nhóm được tư vấn OpenSSL nêu là có khả năng bị ảnh hưởng cao hơn.
- Kiểm tra kho chứng chỉ và CRL mà ứng dụng xử lý để tìm các điểm phân phối CRL có địa chỉ X.400, đặc biệt trong kịch bản ứng dụng chỉ cho phép bên ngoài kiểm soát một trong hai đầu vào.
- Có thể theo dõi bổ sung các lỗi crash hoặc hành vi bất thường trong tiến trình xác minh chứng chỉ, nhưng đây chỉ là biện pháp thận trọng, không phải indicator đã được xác nhận. Việc không thấy log hoặc crash không chứng minh hệ thống an toàn.