Lỗ hổng CVE KSMBD: RCE nguy hiểm trên Linux Kernel

Lỗ hổng CVE KSMBD: RCE nguy hiểm trên Linux Kernel

Một lỗ hổng CVE nghiêm trọng vừa được phát hiện trong module KSMBD của nhân Linux, cho phép kẻ tấn công thực thi mã tùy ý trên hệ thống mục tiêu mà không yêu cầu bất kỳ tương tác nào từ người dùng.

KSMBD là một máy chủ SMB3 chạy ở không gian kernel, chuyên xử lý chia sẻ file qua mạng. Các nhà nghiên cứu đã chứng minh một khai thác ổn định chống lại KSMBD trên nhân Linux 6.1.45, đạt được remote code execution (RCE) với tỷ lệ thành công trên 95%. Xem chi tiết nghiên cứu tại willsroot.io.

Phân tích kỹ thuật lỗ hổng KSMBD và chuỗi khai thác

Khai thác này tận dụng hai lỗ hổng CVE đã biết, được Zero Day Initiative vá lỗi vào đầu năm 2024 và cuối năm 2023. Chuỗi tấn công kết hợp nhiều kỹ thuật để đạt được chiếm quyền điều khiển hệ thống từ xa.

Cơ chế khai thác ban đầu: Heap Overflow (CVE-2023-52440)

Giai đoạn đầu tiên là một lỗi tràn bộ nhớ heap (heap overflow) không yêu cầu xác thực, xảy ra trong quá trình xác thực NTLM. Lỗi này được gán mã CVE-2023-52440.

Bằng cách tạo một khối khóa phiên (session key blob) quá khổ trong thông điệp

SMB2_SESSION_SETUP

, khai thác buộc một tràn SLUB có kiểm soát trong phân bổ

kmalloc-512

. Lỗi này hoạt động như một primitive “writeheap”, cho phép kẻ tấn công làm hỏng bộ nhớ kernel liền kề mà không cần xác thực. Xem thông tin chi tiết về CVE-2023-52440 tại NVD.

Khai thác thông tin: Out-of-Bounds Read (CVE-2023-4130)

Một lỗ hổng CVE thứ hai, CVE-2023-4130, yêu cầu xác thực và nằm trong bộ phân tích Extended Attributes (EA). Lỗi này cung cấp một primitive đọc ngoài giới hạn (out-of-bounds read).

Bằng cách tạo một buffer EA độc hại, kẻ tấn công có thể rò rỉ nội dung heap tùy ý thông qua metadata

xattr

, tương đương với một primitive “writeleak”. Lỗ hổng này đóng vai trò quan trọng trong việc thu thập thông tin hệ thống.

Chuỗi khai thác hoàn chỉnh và kỹ thuật vượt qua KASLR dẫn đến remote code execution

Việc kết hợp hai primitive này cho phép tạo ra một chuỗi tấn công hoàn chỉnh, dẫn đến khả năng remote code execution trên hệ thống mục tiêu. Đây là một mối đe dọa nghiêm trọng đối với các hệ thống dễ bị tổn thương.

Kết hợp các Primitive và vượt qua KASLR

Kỹ thuật “writeleak” giúp rò rỉ các con trỏ kernel và bỏ qua KASLR (Kernel Address Space Layout Randomization). Điều này được thực hiện bằng cách đọc các con trỏ từ một slab

kmalloc-1k

chứa các đối tượng kết nối KSMBD.

Các nhà nghiên cứu sử dụng kỹ thuật “kernel object spray” bằng cách mở nhiều kết nối và phiên SMB, sau đó liên tục kích hoạt lỗi tràn cho đến khi một kết nối bị hỏng. Một vòng lặp “spray-and-check” có hướng dẫn được sử dụng để định vị nạn nhân tràn và các con trỏ bị rò rỉ một cách đáng tin cậy.

Xây dựng ROP Chain và chiếm quyền điều khiển

Với khả năng vượt qua KASLR, kẻ tấn công có thể xây dựng các gadget ROP (Return-Oriented Programming) của kernel để chiếm quyền điều khiển con trỏ

local_nls

của phiên. Một primitive giải phóng tùy ý (arbitrary free) gây ra sự chồng chéo giữa một khối heap của phiên với một đối tượng kết nối.

Điều này cho phép ghi đè lên các con trỏ hàm trong

kmalloc-1k

. Cuối cùng, một yêu cầu SMB được tạo cẩn thận sẽ phân bổ một khối lớn chứa một ROP chain. Chuỗi này chuyển đổi stack vào bộ nhớ được kiểm soát, thiết lập các đối số và gọi

call_usermodehelper

để khởi chạy một reverse shell ở chế độ người dùng. Một gadget sleep giữ cho luồng kernel hoạt động, ngăn chặn hệ thống bị crash. Đây là một ví dụ điển hình về khai thác lỗ hổng CVE ở mức độ cao.

Tác động và điều kiện khai thác

Mặc dù KSMBD thường bị vô hiệu hóa trong các môi trường sản xuất, điều này hạn chế tác động lan rộng của lỗ hổng CVE này. Tuy nhiên, bất kỳ hệ thống nào chạy nhân 6.1.x lỗi thời với KSMBD được bật và tiếp xúc với các mạng không đáng tin cậy đều có nguy cơ bị tấn công.

Khả năng khai thác 0-click làm tăng mức độ nghiêm trọng, đặc biệt trong các môi trường có yêu cầu hiệu suất cao và KSMBD được kích hoạt.

Biện pháp phòng ngừa và bản vá bảo mật

Các quản trị viên hệ thống cần khẩn trương nâng cấp lên nhân 6.1.46 hoặc phiên bản mới hơn, nơi cả hai lỗ hổng CVE này đã được vá. Đây là biện pháp bản vá bảo mật quan trọng nhất để chống lại khai thác này.

  • Cập nhật hệ thống: Đảm bảo nhân Linux được cập nhật lên phiên bản 6.1.46 trở lên.
  • Cấu hình hardening: Kích hoạt các tùy chọn hardening tiêu chuẩn như SMEP, SMAP, KPTI, và random slab freelist. Mặc dù các biện pháp này có thể giảm độ tin cậy của khai thác, chúng không loại bỏ hoàn toàn mối đe dọa.
  • Đánh giá dịch vụ: Lỗ hổng CVE N-Day này làm nổi bật rủi ro khi chạy các dịch vụ phức tạp trong không gian kernel. Mặc dù KSMBD mang lại lợi ích về hiệu suất, nó cũng mở rộng bề mặt tấn công cho remote code execution.
  • Ưu tiên SMB User-Space: Các quản trị viên nên ưu tiên sử dụng các máy chủ SMB ở không gian người dùng trừ khi hiệu suất cấp độ kernel là yếu tố thiết yếu.
  • Giám sát liên tục: Thực hiện giám sát liên tục để phát hiện lưu lượng SMB bất thường.
  • Kiểm soát truy cập: Vô hiệu hóa quyền ghi ẩn danh (anonymous write access) để giảm thiểu rủi ro.
  • Đánh giá định kỳ: Thường xuyên xem xét các module kernel và triển khai thận trọng các dịch vụ mới là rất quan trọng để duy trì an ninh hệ thống. Việc áp dụng bản vá bảo mật kịp thời là chìa khóa.