Lỗ hổng CVE-2025-38236 nghiêm trọng: Khai thác kernel Linux

Một lỗ hổng nghiêm trọng CVE-2025-38236 trong nhân Linux đã được chuyên gia Jann Horn thuộc Google Project Zero phát hiện. Lỗ hổng này mở ra con đường cho kẻ tấn công thực thi mã gốc trong sandbox của trình duyệt Chrome, từ đó leo thang đặc quyền lên quyền kiểm soát cấp độ kernel trên các hệ thống Linux.
CVE-2025-38236: Tổng quan về Lỗ hổng
Bản chất của Lỗ hổng
Lỗ hổng này liên quan trực tiếp đến tính năng MSG_OOB (out-of-band) ít được biết đến trong UNIX domain sockets. Nó ảnh hưởng đến nhân Linux phiên bản 6.9 trở lên, gây ra những cảnh báo nghiêm trọng về bảo mật của các sandbox trình duyệt và những rủi ro tiềm ẩn từ các chức năng kernel chuyên biệt.
Được phát hiện vào đầu tháng 6 năm 2025 trong quá trình xem xét mã của một tính năng nhân Linux mới, lỗ hổng CVE-2025-38236 bắt nguồn từ chức năng MSG_OOB được giới thiệu trong Linux 5.15 vào năm 2021.
Mặc dù chủ yếu được sử dụng trong các ứng dụng Oracle chuyên biệt, MSG_OOB đã được bật mặc định trong các nhân hỗ trợ UNIX domain sockets. Nó vô tình có thể truy cập được từ sandbox renderer của Chrome trên Linux do các cờ syscall không được lọc. Để hiểu rõ hơn về cơ chế hoạt động, có thể tham khảo thêm tài liệu về dữ liệu out-of-band trong UNIX domain sockets.
Cơ chế Khai thác (Use-After-Free)
Lỗi này kích hoạt tình trạng Use-After-Free (UAF). Horn đã chứng minh rằng điều kiện này có thể bị khai thác bằng một chuỗi thao tác socket đơn giản. Điều này cho phép kẻ tấn công thao túng bộ nhớ kernel và có khả năng giành được quyền đặc quyền cao hơn, dẫn đến khả năng khai thác kernel toàn diện.
Chi tiết về phương pháp khai thác CVE-2025-38236 đã được trình bày trên trình theo dõi lỗi của Google Project Zero, mô tả một cuộc tấn công phức tạp trên hệ thống Debian Trixie kiến trúc x86-64. Bạn có thể xem chi tiết về khai thác tại đây.
Bằng cách tận dụng primitive đọc được tạo ra từ UAF, kẻ tấn công có thể sao chép bộ nhớ kernel tùy ý vào không gian người dùng, vượt qua các hạn chế bảo mật usercopy.
Phương pháp của Horn bao gồm việc cấp phát lại bộ nhớ đã giải phóng thành các trang pipe hoặc stack kernel. Các kỹ thuật như thao tác bảng trang và mprotect() được sử dụng để kiểm soát con trỏ OCB bị “treo” (dangling pointer). Điều này dẫn đến UAF khi lệnh recv(..., MSG_OOB) tiếp theo cố gắng truy cập vào vùng bộ nhớ đó.
Thành công của việc khai thác CVE-2025-38236 phụ thuộc vào tính năng CONFIG_RANDOMIZE_KSTACK_OFFSET của Debian. Tính năng này giúp ngẫu nhiên hóa offset stack cho mỗi syscall.
Horn đã biến biện pháp giảm thiểu này thành lợi thế, sử dụng primitive đọc để phát hiện các căn chỉnh stack tối ưu. Điều này cho phép thực hiện sửa đổi bộ nhớ chính xác, làm tăng hiệu quả của cuộc khai thác kernel.
Ảnh hưởng và Tầm quan trọng của Sandbox
Rủi ro từ các Tính năng Kernel Ít dùng
Cuộc khai thác này tiết lộ bề mặt tấn công rộng lớn trong sandbox renderer của Chrome trên Linux. Sandbox này phơi bày các giao diện như anonymous VMAs, UNIX sockets, pipes và các syscall như sendmsg() và mprotect().
Nhiều trong số các giao diện và syscall này không thực sự cần thiết cho chức năng của renderer, làm tăng đáng kể nguy cơ bị khai thác CVE-2025-38236 và các lỗ hổng tương tự.
Các lỗ hổng Chrome trước đây, bao gồm những lỗ hổng liên quan đến futex(), memfd_create(), và pipe2(), nhấn mạnh cách các tính năng kernel ít được biết đến có thể tạo ra các lỗ hổng ngoài ý muốn khi bị phơi bày trong sandbox.
Thách thức trong Phát hiện Lỗ hổng
Lỗi ban đầu đã được công cụ fuzzing syzkaller của Google phát hiện vào tháng 8 năm 2024. Nó yêu cầu sáu syscall để kích hoạt. Trong khi đó, một vấn đề liên quan phức tạp hơn do Horn tìm thấy cần đến tám syscall.
Điều này cho thấy thách thức mà các fuzzer phải đối mặt khi điều hướng các cấu trúc dữ liệu kernel phức tạp như socket buffers (SKBs). Khả năng tìm ra một lỗ hổng CVE như thế này đòi hỏi sự tinh vi cao của công cụ.
Horn đề xuất cải thiện các fuzzer để tập trung vào các hệ thống con kernel cụ thể nhằm phát hiện tốt hơn các lỗ hổng như vậy. Xác suất ngẫu nhiên đạt được chuỗi syscall chính xác giảm theo cấp số nhân với mỗi cuộc gọi bổ sung, làm phức tạp quá trình phát hiện.
Những phát hiện của Horn cũng đặt ra thách thức đối với hiệu quả của các biện pháp giảm thiểu xác suất như ngẫu nhiên hóa stack trên mỗi syscall, chống lại kẻ tấn công có khả năng đọc tùy ý. Chúng có thể bị vượt qua bằng cách kiểm tra liên tục kết quả ngẫu nhiên hóa.
Việc sử dụng mprotect() để trì hoãn các thao tác copy_from_user() cũng cho thấy rằng việc hạn chế các tính năng như userfaultfd có thể không giảm thiểu hoàn toàn những rủi ro này. Các phương pháp thay thế có thể đạt được sự trì hoãn tương tự trong quá trình khai thác kernel.
Biện pháp Khắc phục và Khuyến nghị
Cập nhật và Bản vá Bảo mật
Để giải quyết lỗ hổng CVE-2025-38236, nhân Linux đã được vá lỗi. Song song đó, Chrome cũng đã cập nhật sandbox của mình để chặn các thông báo MSG_OOB, từ đó đóng lại vectơ tấn công cụ thể này.
Người dùng Linux được khuyến nghị mạnh mẽ áp dụng các bản vá bảo mật Linux kernel mới nhất càng sớm càng tốt để bảo vệ hệ thống của mình khỏi các cuộc tấn công tiềm tàng.
Khuyến nghị Bảo mật Chung
Lỗ hổng này nhấn mạnh sự cần thiết của các hạn chế sandbox nghiêm ngặt hơn và việc đánh giá lại các tính năng kernel được phơi bày cho các tiến trình không có đặc quyền.
Các nhà phát triển được khuyến khích xem xét kỹ lưỡng các tính năng kernel chuyên biệt được nhúng trong các giao diện hệ thống cốt lõi. Việc này nhằm ngăn chặn các khai thác tương tự trong tương lai, giúp tăng cường an ninh tổng thể của hệ thống.
Horn có kế hoạch tiến hành phân tích sâu hơn về sandbox renderer của Chrome trên Linux trong một báo cáo trong tương lai, hứa hẹn cung cấp thêm thông tin chi tiết về các biện pháp bảo mật.









