NULL dereference trong OpenBSD httpd có thể làm gián đoạn dịch vụ

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

Lỗ hổng CVE-2024-11148 là lỗ hổng NULL Pointer Dereference ảnh hưởng tới OpenBSD (phiên bản bị ảnh hưởng: 7.4 – < 7.4 errata 006 và 7.3 – < 7.3 errata 020). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 8.7. 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 OpenBSD 7.4 trước errata 006 và OpenBSD 7.3 trước errata 020, httpd(8) có lỗ hổng NULL dereference khi xử lý một yêu cầu fastcgi bị malformed.

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

Các nhánh bị ảnh hưởng được xác định như sau:

  • OpenBSD 7.4 trước errata 006.
  • OpenBSD 7.3 trước errata 020.

Các errata tương ứng là ranh giới bản sửa được nguồn OpenBSD cung cấp. Bằng chứng hiện có không xác định trạng thái của các nhánh OpenBSD khác.

Chi tiết kỹ thuật

Lỗ hổng thuộc CWE-476, xảy ra khi httpd(8) xử lý dữ liệu do máy khách kiểm soát trong một yêu cầu FastCGI bị malformed. Bản vá cho thấy đường đi lỗi liên quan đến trạng thái của client trong server_fcgi.c và xử lý đóng kết nối trong server_close. Bản vá thêm trường clt_fcgi_count, thay đổi cách ghi nhận lỗi và điều phối việc gọi server_abort_http(), cho thấy vấn đề nằm ở việc phối hợp giữa xử lý nội dung HTTP, lỗi FastCGI và vòng đời client. Các chú thích trong bản vá đề cập đến một workaround cho tình huống use-after-free, nhưng bằng chứng hiện có không đủ để kết luận rằng use-after-free là nguyên nhân riêng của lỗ hổng này. Hình dạng chính xác của yêu cầu FastCGI malformed và vị trí dereference NULL cụ thể không được công bố.

Khả năng khai thác

Lỗ hổng có thể bị tiếp cận qua mạng bằng một yêu cầu FastCGI malformed. Theo dữ liệu được cung cấp, việc khai thác không yêu cầu xác thực, không cần người dùng tương tác và có độ phức tạp thấp. Bản ghi không xác định cần có cấu hình đặc biệt nào ngoài việc yêu cầu đi vào đường xử lý FastCGI của httpd(8). Bản ghi đánh dấu không có public exploit được xác định và trường known exploited không có giá trị, nhưng các trường này không chứng minh rằng việc khai thác chưa từng xảy ra. Không có chiến dịch, nạn nhân hoặc IOC cụ thể nào được nguồn bằng chứng nêu tên.

Tác động kỹ thuật

Kết quả kỹ thuật chính là NULL dereference trong đường xử lý yêu cầu FastCGI, có thể dẫn đến lỗi tiến trình hoặc suy giảm tính sẵn sàng của dịch vụ. Đường tấn công có thể bắt đầu từ mạng và không yêu cầu quyền truy cập hay tương tác của người dùng theo dữ liệu được cung cấp. Tác động được xác lập là đối với availability của dịch vụ; chưa có bằng chứng xác lập tác động trực tiếp đến confidentiality hoặc integrity. Phạm vi ảnh hưởng cụ thể phụ thuộc vào cách httpd(8) xử lý yêu cầu malformed trong môi trường triển khai, và nguồn không mô tả chính xác hành vi sau khi dereference NULL.

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

Lỗi có thể làm suy giảm hoặc làm gián đoạn khả năng phục vụ của httpd(8), khiến các ứng dụng web hoặc endpoint phụ thuộc vào dịch vụ này tạm thời không khả dụng. Với máy chủ có thể truy cập từ mạng không tin cậy, một yêu cầu được tạo đặc biệt có thể tạo ra sự cố ngoài dự kiến trong quá trình xử lý FastCGI. Nếu sự cố lặp lại, tổ chức có thể phải khởi động lại dịch vụ hoặc xử lý gián đoạn vận hành, nhưng mức độ lặp lại và phạm vi ảnh hưởng thực tế không được nguồn công bố. Không có bằng chứng được cung cấp cho thấy lỗ hổng này trực tiếp dẫn đến tiết lộ hoặc thay đổi dữ liệu.

Cách khắc phục

  1. Đối với OpenBSD 7.4, áp dụng bản sửa errata 006; đối với OpenBSD 7.3, áp dụng bản sửa errata 020.
  2. Xác minh chữ ký của bản vá bằng khóa base tương ứng trước khi áp dụng, theo quy trình xác thực bản vá của OpenBSD.
  3. Áp dụng bản vá vào source tree, sau đó rebuild và cài đặt lại httpd(8) từ /usr/src/usr.sbin/httpd bằng các bước make obj, make và make install.
  4. Xác nhận tiến trình httpd(8) đang chạy sử dụng binary đã được rebuild và đã áp dụng errata. Nguồn hiện có không cung cấp một workaround riêng ngoài việc áp dụng bản vá và rebuild thành phần bị ảnh hưởng.
  5. Nếu chưa thể cập nhật, giảm khả năng máy chủ nhận yêu cầu FastCGI từ mạng không tin cậy chỉ khi biện pháp này phù hợp với kiến trúc triển khai; đây là biện pháp giảm phơi nhiễm thận trọng, không phải workaround được OpenBSD xác nhận.

Cách phát hiện

  1. Lập inventory các hệ thống OpenBSD đang chạy httpd(8) và ghi nhận release cùng trạng thái errata của từng máy.
  2. Xác định các triển khai có nhận hoặc chuyển tiếp lưu lượng FastCGI để ưu tiên kiểm tra, nhưng không xem cấu hình này là bằng chứng duy nhất về trạng thái an toàn.
  3. Nếu hệ thống được build từ source, kiểm tra source tree hoặc hồ sơ build để xác nhận có thay đổi liên quan đến clt_fcgi_count, server_close và server_fcgi.
  4. Rà soát telemetry của httpd(8) để tìm các yêu cầu FastCGI bất thường đi kèm crash, restart hoặc gián đoạn dịch vụ. Đây chỉ là biện pháp phát hiện bổ sung vì nguồn hiện có không công bố log event hay IOC đặc thù.
  5. Không coi việc không thấy log hoặc không thấy crash là bằng chứng hệ thống không bị ảnh hưởng; cần xác nhận release và errata đã áp dụng.
Nguồn (10)
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.