Lỗ hổng CVE nghiêm trọng: Chiếm quyền root Linux khẩn cấp!

Lỗ hổng CVE nghiêm trọng: Chiếm quyền root Linux khẩn cấp!

Các nhà nghiên cứu bảo mật đã công bố chi tiết về một lỗ hổng CVE nghiêm trọng thuộc dạng Use-After-Free (CVE-2025-38001). Lỗ hổng này ảnh hưởng đến cơ chế quản lý hàng đợi HFSC (Hierarchical Fair Service Curve) trong bộ lập lịch gói tin mạng của nhân Linux. Đặc biệt, lỗ hổng này đã được vũ khí hóa thành công, cho phép chiếm quyền kiểm soát các phiên bản Google kernelCTF, bao gồm LTS, COS, và cả những hệ thống đã áp dụng biện pháp giảm thiểu. Ngoài ra, các hệ thống Debian 12 được cập nhật đầy đủ cũng bị ảnh hưởng và khai thác thành công.

Việc khám phá và khai thác lỗ hổng CVE này một lần nữa khẳng định tầm quan trọng của việc kiểm tra bảo mật sâu sắc đối với các thành phần cốt lõi của hệ điều hành.

Kỹ Thuật Khai Thác CVE Nghiêm Trọng: Từ Vòng Lặp Vô Hạn Đến Chiếm Quyền Kiểm Soát

Khai thác lỗ hổng CVE-2025-38001 là một ví dụ điển hình về việc biến một hành vi tưởng chừng vô hại thành một lỗ hổng bảo mật nghiêm trọng. Cuộc tấn công này dựa trên sự kết hợp tinh vi của ba yếu tố chính trong hệ thống mạng Linux:

  • Chế độ lập lịch thời gian thực của HFSC (Hierarchical Fair Service Curve).
  • Tính năng nhân đôi gói tin của NETEM (Network Emulation).
  • Hàng đợi gốc TBF (Token Bucket Filter) được điều tiết ở tốc độ thấp.

Sự tương tác độc đáo giữa các thành phần này đã chuyển đổi một vòng lặp vô hạn tiềm ẩn thành một kỹ thuật khai thác đáng tin cậy. Nhờ đó, nhóm nghiên cứu đã thu về khoản tiền thưởng trị giá khoảng 82.000 USD.

Cơ Chế Tạo Lỗi Use-After-Free Trong RBTree

Bên trong HFSC, một cấu trúc dữ liệu quan trọng là “cây đủ điều kiện” (eligible tree), được triển khai dưới dạng cây tìm kiếm nhị phân tự cân bằng RBTree. Cây này chịu trách nhiệm quản lý các lớp gói tin đang chờ được phục vụ. Vấn đề phát sinh khi tính năng nhân đôi gói tin của NETEM được kích hoạt trong bối cảnh đường cong dịch vụ thời gian thực của HFSC.

Trong tình huống này, mỗi gói tin sẽ được thêm vào hàng đợi hai lần do một lệnh gọi lại (reentrant call) không được kiểm soát chặt chẽ. Việc chèn trùng lặp này dẫn đến sự hình thành một chu trình (cycle) trong cấu trúc RBTree. Hậu quả là thao tác xóa gói tin (dequeue operation) bị rơi vào một vòng lặp vô hạn, không bao giờ kết thúc.

Để tận dụng điểm yếu này, nhóm nghiên cứu đã giới thiệu một hàng đợi gốc TBF với tốc độ rất thấp. Hàng đợi TBF này đóng vai trò như một bộ điều tiết, ngăn chặn việc loại bỏ gói tin khỏi hàng đợi trong một khoảng thời gian đủ dài. Khoảng thời gian này đủ để giải phóng lớp gói tin dư thừa, tạo ra một nút RBTree bị treo (dangling RBTree node) trong bộ nhớ.

Khi một lớp gói tin khác được thêm vào hàng đợi (enqueue) sau đó, nó sẽ tương tác với nút RBTree bị treo này, từ đó kích hoạt điều kiện Use-After-Free. Lỗi này dẫn đến sự hỏng vùng nhớ heap của kernel (kernel heap corruption), một lỗi bảo mật cực kỳ nghiêm trọng có thể dẫn đến việc thực thi mã tùy ý hoặc làm sập hệ thống. Đây là một điểm mấu chốt để khai thác lỗ hổng CVE này.

Kỹ Thuật Chiếm Quyền Chiếm Quyền Root Bằng Page-Vector

Thay vì sử dụng chuỗi ROP (Return-Oriented Programming) truyền thống để thực hiện các thao tác đọc/ghi tùy ý, nhóm nghiên cứu đã phát triển một phương pháp độc đáo hơn: một kỹ thuật sao chép con trỏ dựa trên vector trang (page-vector-based pointer copy primitive).

Cụ thể, họ đã thay thế đối tượng lớp HFSC đã bị giải phóng bằng một vector trang kernel được kiểm soát bởi người dùng. Sau đó, bằng cách thao túng các con trỏ RBTree, họ đã buộc hệ thống phải sao chép một con trỏ trang kernel từ một vector này sang một vector khác. Sự không khớp trong số lượng tham chiếu (reference counts mismatch) giữa các đối tượng đã tạo ra một lỗi Use-After-Free ở cấp độ trang nhớ.

Nhóm nghiên cứu đã khéo léo tận dụng lỗ hổng này để ghi đè thông tin xác thực tiến trình của họ (process credentials). Điều này cho phép họ nâng cao đặc quyền từ một người dùng thông thường lên thành đặc quyền chiếm quyền root hoàn toàn trên hệ thống bị ảnh hưởng. Thành công này biến lỗ hổng CVE từ lý thuyết thành một công cụ khai thác mạnh mẽ.

Bạn có thể tìm hiểu thêm về kỹ thuật khai thác này và các nghiên cứu liên quan tại blog của Syst3mFailure: RBTREE FAMILY DRAMA: HFSC, NETEM, TBF, and an exploitable UAF in the Linux kernel.

Ảnh Hưởng Rộng Rãi và Phạm Vi Khai Thác của Lỗ Hổng CVE

Kỹ thuật khai thác được phát triển đã chứng minh độ tin cậy gần như hoàn hảo chống lại nhiều môi trường khác nhau, đặc biệt là các mục tiêu sau:

  • Các phiên bản Google kernelCTF, bao gồm:
    • LTS (Long Term Support)
    • COS (Container-Optimized OS)
    • Các phiên bản đã triển khai các biện pháp giảm thiểu (mitigation instances), cho thấy khả năng vượt qua các lớp phòng thủ bổ sung.
  • Các hệ thống Debian 12 được cập nhật đầy đủ, nhấn mạnh rằng ngay cả các bản phân phối Linux được duy trì tốt cũng có thể bị ảnh hưởng bởi lỗ hổng CVE này nếu không có bản vá cụ thể.

Sử dụng các script gửi tấn công được tối ưu hóa và công cụ giải quyết PoW (Proof-of-Work) được tăng tốc bằng GPU, nhóm nghiên cứu đã thành công trong việc đánh cắp cờ LTS chỉ trong vòng 3.6 giây. Đây là kỷ lục thời gian nhanh nhất trong lịch sử Google kernelCTF.

Sau đó, họ tiếp tục nhanh chóng thu thập các cờ COS. Đáng chú ý hơn, họ đã vượt qua thử thách giảm thiểu của Google, minh họa khả năng vượt qua chuỗi bảo vệ hoàn toàn chống lại các biện pháp phòng thủ thử nghiệm được triển khai bởi Google.

Giải Pháp Khắc Phục và Biện Pháp Giảm Thiểu Tạm Thời cho Lỗ Hổng CVE

Đội ngũ bảo mật của Google đã phản ứng nhanh chóng, khắc phục nguyên nhân gốc rễ của lỗ hổng CVE-2025-38001 thông qua commit ac9fe7dd8e73. Commit này được thiết kế để bổ sung các cơ chế xác thực và ngăn chặn các mục nhập RBTree trùng lặp, từ đó loại bỏ điều kiện dẫn đến Use-After-Free.

Bản vá này đã được hợp nhất vào upstream Linux và được tích hợp trong phiên bản Linux 6.6.8. Ngoài ra, bản vá cũng sẽ có mặt trong các bản phát hành điểm (point releases) sắp tới của Debian 12. Điều này đảm bảo rằng các bản phân phối Linux phổ biến sẽ sớm nhận được bản sửa lỗi cần thiết để bảo vệ người dùng khỏi lỗ hổng CVE này.

Thông tin chi tiết về commit vá lỗi có thể được tìm thấy trên Kernel.org: net/sched: hfsc: Fix use-after-free in hfsc_cl_dequeue.

Trong thời gian chờ đợi các hệ thống được cập nhật bản vá, có một số chiến lược giảm thiểu tạm thời mà các quản trị viên hệ thống có thể áp dụng để giảm thiểu rủi ro từ lỗ hổng CVE này:

  • Vô hiệu hóa tính năng nhân đôi của NETEM: Tránh sử dụng hoặc vô hiệu hóa tính năng nhân đôi gói tin của NETEM khi HFSC đang được sử dụng.
  • Tránh sử dụng HFSC_RSC trên các máy chủ không đáng tin cậy: Nếu có thể, hãy tránh sử dụng HFSC_RSC (HFSC Real-time Service Curve) trên các máy chủ hoặc giao diện mạng mà bạn không tin cậy.

Bài Học Kinh Nghiệm và Khuyến Nghị Sau Phát Hiện Lỗ Hổng CVE

Nghiên cứu về lỗ hổng CVE-2025-38001 một lần nữa khẳng định tầm quan trọng vượt thời gian của việc kiểm toán mã thủ công (manual code auditing) song song với các phương pháp kiểm tra tự động như fuzzing. Các tương tác phức tạp giữa các thành phần bộ lập lịch gói tin có thể tạo ra những lỗ hổng không rõ ràng (nonobvious vulnerabilities), mà các công cụ tự động khó có thể phát hiện.

Hơn nữa, nghiên cứu này chỉ ra rằng ngay cả việc điều tiết hàng đợi một cách sáng tạo cũng có thể chuyển đổi một vòng lặp tưởng chừng vô hại thành một lỗ hổng có khả năng khai thác mạnh mẽ.

Với việc lỗ hổng CVE-2025-38001 đã được giải quyết, điều tối quan trọng là các quản trị viên hệ thống cần hành động ngay lập tức. Cụ thể, họ nên cập nhật kernel Linux của mình lên phiên bản 6.6.8 hoặc các bản phát hành điểm mới nhất của Debian 12 một cách kịp thời. Ngoài ra, việc xem xét lại các cấu hình kiểm soát lưu lượng (traffic-control configurations) để loại bỏ bất kỳ sự kết hợp HFSC+NETEM nào tiềm ẩn rủi ro là cần thiết để đảm bảo an ninh hệ thống và tránh bị khai thác bởi lỗ hổng CVE tương tự trong tương lai.