Lỗi memory-safety trong NFS của OpenBSD: double-free mbuf và biến chưa khởi tạo

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

Lỗ hổng CVE-2024-10934 là lỗ hổng thuộc các loại Double Free và Use of Uninitialized Variable, ảnh hưởng tới OpenBSD (phiên bản bị ảnh hưởng: 7.5 và 7.4). 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 OpenBSD 7.5 trước errata 008 và OpenBSD 7.4 trước errata 021, tránh khả năng double-free mbuf trong phần triển khai NFS client và server, không sử dụng biến chưa được khởi tạo trong xử lý lỗi của NFS server.

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

  • OpenBSD 7.5: bị ảnh hưởng trước errata 008; errata 008 chứa bản sửa cho lỗi NFS này.
  • OpenBSD 7.4: bị ảnh hưởng trước errata 021; errata 021 chứa bản sửa cho lỗi NFS này.
  • Bản ghi chuẩn hóa không xác định trạng thái mặc định bên ngoài các nhánh nêu trên. Không nên suy luận rằng các nhánh OpenBSD khác được sửa hoặc không bị ảnh hưởng nếu chưa có bằng chứng riêng.

Chi tiết kỹ thuật

Lỗi nằm trong phần triển khai NFS ở kernel của OpenBSD. Một số nhánh xử lý retry và lỗi có thể gọi m_freem trên mbuf rồi tiếp tục giữ con trỏ cũ, tạo điều kiện cho double-free; bản vá đặt con trỏ về NULL sau khi giải phóng trong các đường dẫn liên quan. Bản vá cũng thay đổi macro xử lý kích thước tên phía NFS server để đặt giá trị về 0 trước khi gửi phản hồi lỗi, tránh sử dụng biến chưa được khởi tạo. Dữ liệu đầu vào có thể tác động đến các đường dẫn này là lưu lượng NFS được xử lý bởi client hoặc server, phù hợp với đặc tính có thể truy cập qua mạng trong bản ghi. Chuỗi request bất thường cụ thể cần để kích hoạt từng đường dẫn không được nguồn cung cấp xác định.

Khả năng khai thác

Bản ghi mô tả khả năng truy cập qua mạng, độ phức tạp thấp, không yêu cầu quyền đặc biệt và không yêu cầu tương tác của người dùng. Yêu cầu xác thực được ghi nhận là không cần quyền truy cập trước. Đánh giá cũng thể hiện một điều kiện tấn công bổ sung, nhưng bằng chứng được cung cấp không giải thích điều kiện đó là gì. Bản ghi chuẩn hóa đánh dấu không có public exploit và không xác định trạng thái khai thác đã biết; điều này không đủ để kết luận rằng chưa từng có khai thác trong thực tế.

Tác động kỹ thuật

Double-free có thể dẫn đến hỏng bộ nhớ kernel, crash hoặc hành vi không xác định; đây là hậu quả có thể xảy ra, không phải exploit path đã được chứng minh trong bản ghi. Việc sử dụng biến chưa khởi tạo trong xử lý lỗi của NFS server có thể làm sai lệch logic phản hồi lỗi và góp phần tạo ra hành vi không an toàn. Đánh giá được cung cấp cho thấy hậu quả tiềm tàng ở cả confidentiality, integrity và availability. Về tổ chức, hệ quả thực tế có thể là gián đoạn file service, mất khả năng truy cập dữ liệu qua NFS hoặc phải phục hồi các máy chủ bị ảnh hưởng. Bằng chứng hiện có không xác nhận thực thi mã tùy ý, chiếm quyền kernel, rò rỉ dữ liệu hay một vụ xâm phạm cụ thể.

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

Một cuộc tấn công thành công có thể làm hỏng trạng thái bộ nhớ kernel và gây gián đoạn NFS client hoặc server. Hệ thống phụ thuộc vào NFS có thể mất khả năng truy cập file, gián đoạn workload hoặc cần khôi phục dịch vụ sau sự cố kernel. Bản ghi đánh giá khả năng ảnh hưởng đến tính bí mật, toàn vẹn và sẵn sàng, nhưng không xác nhận đã xảy ra truy cập dữ liệu, thay đổi dữ liệu hoặc một vụ xâm nhập cụ thể. Do đó, mức độ ảnh hưởng thực tế phụ thuộc vào khả năng điều khiển đường dẫn lỗi và môi trường NFS của từng hệ thống.

Cách khắc phục

  1. Trên OpenBSD 7.5, áp dụng errata 008. Trên OpenBSD 7.4, áp dụng errata 021.
  2. Sử dụng patch đã ký tương ứng với từng nhánh, xác minh bằng khóa openbsd-75-base.pub hoặc openbsd-74-base.pub theo hướng dẫn của OpenBSD.
  3. Sau khi áp dụng patch, rebuild và install kernel mới theo quy trình của OpenBSD, sau đó xác nhận kernel đang chạy là kernel đã được cập nhật.
  4. Kiểm tra lại cả NFS client và NFS server sau khi cập nhật, đặc biệt các hệ thống cung cấp NFS cho workload quan trọng.
  5. Bằng chứng hiện có không nêu một workaround đã được xác nhận. Nếu chưa thể cập nhật, hãy coi các hệ thống NFS vẫn còn phơi nhiễm và ưu tiên giảm thời gian tồn tại của trạng thái chưa vá.

Cách phát hiện

  1. Lập danh sách các hệ thống OpenBSD đang sử dụng NFS client hoặc cung cấp NFS server.
  2. Kiểm tra release, hồ sơ cập nhật kernel và trạng thái áp dụng errata tương ứng; việc chỉ thấy dịch vụ NFS đang chạy không chứng minh hệ thống đã được sửa.
  3. Với hệ thống build từ source, kiểm tra lịch sử build hoặc source tree để xác nhận các thay đổi trong sys/nfs/nfs_socket.c và sys/nfs/nfsm_subs.h đã được đưa vào kernel đang chạy.
  4. Rà soát hiện tượng kernel panic, crash hoặc restart bất thường của hệ thống NFS như một biện pháp phát hiện bổ sung. Đây là tín hiệu giám sát chung, không phải indicator of compromise riêng cho lỗi này.
  5. Không có log event, IOC hoặc mẫu request cụ thể nào được nguồn cung cấp xác nhận; việc không thấy các dấu hiệu trên không chứng minh hệ thống an toàn.
Nguồn (12)
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.