CVE-2025-37899 là lỗ hổng Zero-Day nghiêm trọng ảnh hưởng trực tiếp đến ksmbd (module máy chủ chia sẻ tệp tin SMB chạy trực tiếp trong không gian nhân Linux Kernel). Lỗ hổng cho phép kẻ tấn công từ xa thực thi mã tùy ý với đặc quyền nhân hệ điều hành (Ring 0) mà không cần xác thực tài khoản.

📋 Bảng Thuộc Tính Kỹ Thuật:

Mã Lỗ HổngCVE-2025-37899
Điểm CVSS v3.19.8 / 10.0 (Critical)
Loại Lỗ HổngUse-After-Free (UAF) trong không gian Kernel Memory
Hệ Thống Bị Ảnh HưởngLinux Kernel phiên bản 5.15 trở lên có bật module ksmbd (cổng TCP 445)
Điều Kiện Khai ThácTừ xa, không cần tài khoản đăng nhập (Pre-Auth RCE)

1. Bối cảnh: Vì sao ksmbd được đưa vào Linux Kernel?

Trước đây, dịch vụ chia sẻ tệp tin SMB trên Linux hầu như đều sử dụng Samba (chạy ở không gian người dùng – User Space). Nhằm tối ưu hóa băng thông I/O và độ trễ truyền dữ liệu trên các cụm lưu trữ đám mây tốc độ cao, dự án ksmbd được tích hợp thẳng vào cây mã nguồn nhân Linux từ phiên bản 5.15.

Tuy nhiên, việc chạy trực tiếp parser phân tích các giao thức mạng phức tạp như SMB2/SMB3 trong nhân kernel tiềm ẩn rủi ro rất lớn: bất kỳ lỗi quản lý bộ nhớ nào cũng dẫn đến việc kiểm soát hoàn toàn hệ thống máy chủ vật lý.

2. Phân tích nguyên nhân gốc rễ (Root Cause Analysis)

Lỗ hổng xuất hiện trong tiến trình xử lý gói tin SMB2_SESSION_SETUP khi client thiết lập kênh kết nối mã hóa (Session Key Negotiation):

  1. Khi nhận một gói tin yêu cầu ngắt kết nối bất thường xen kẽ giữa giai đoạn xác thực NTLM/Kerberos, hàm giải phóng tài nguyên ksmbd_session_destroy() thu hồi cấu trúc dữ liệu phiên làm việc.
  2. Tuy nhiên, con trỏ quản lý kết nối TCP (Socket Context) vẫn giữ tham chiếu cũ trỏ tới vùng nhớ đã giải phóng.
  3. Gói tin tiếp theo gửi tới endpoint sẽ kích hoạt lỗi Use-After-Free (UAF), cho phép kẻ tấn công ghi đè con trỏ hàm trong kernel slab cache (kmalloc-512) để chuyển hướng luồng thực thi tới shellcode đặc quyền root.
// Đoạn mã lỗi trong fs/smb/server/mgmt/user_session.c:
void ksmbd_session_destroy(struct ksmbd_session *sess) {
    // Thu hồi session struct nhưng không xóa con trỏ trong connection struct
    kfree(sess); 
    // sess->conn->active_session vẫn trỏ tới con trỏ rác -> UAF Trigger!
}

3. Dấu hiệu nhận diện và phát hiện tấn công

  • Xuất hiện lỗi Kernel Panic hoặc thông báo BUG: unable to handle page fault for address trong nhật ký dmesg liên quan đến module ksmbd.ko.
  • Lưu lượng TCP port 445 tăng đột biến với các gói tin SMB2 Session Setup chứa độ dài trường payload dị biệt.

4. Khuyến nghị khắc phục khẩn cấp

  1. Cập nhật Linux Kernel: Nâng cấp ngay lên phiên bản Kernel LTS mới nhất đã vá lỗi từ các bản phân phối Ubuntu, Debian, RHEL.
  2. Vô hiệu hóa ksmbd nếu không sử dụng: Gỡ bỏ hoặc chặn nạp module: echo "blacklist ksmbd" > /etc/modprobe.d/blacklist-ksmbd.conf.
  3. Sử dụng tường lửa mạng: Chặn toàn bộ cổng TCP 445 từ Internet công cộng, chỉ cho phép truy cập qua VPN nội bộ.

🛡️ Dịch Vụ Đánh Giá An Ninh Máy Chủ VietCyber:

VietCyber hỗ trợ doanh nghiệp rà quét toàn diện các lỗ hổng Kernel, kiểm tra cấu hình dịch vụ mạng và tư vấn phương án phòng thủ Zero-Day (Kiểm thử an ninh Pentest).