Skip to main content

Command Palette

Search for a command to run...

Lỗ hổng leo thang đặc quyền root trên Linux Kernel và Android với tỷ lệ khai thác thành công 99%

Updated
7 min readView as Markdown
Lỗ hổng leo thang đặc quyền root trên Linux Kernel và Android với tỷ lệ khai thác thành công 99%

Vừa qua, nhà nghiên cứu bảo mật Jaeyoung Chung thuộc CompSec Lab đã công bố lỗ hổng leo thang đặc quyền cục bộ (LPE) mang tên "Bad Epoll" (CVE-2026-46242) trong epoll subsystem của Linux kernel. Lỗ hổng cho phép bất kỳ người dùng không có đặc quyền nào leo thang lên quyền root trên Linux desktops, servers, và thiết bị Android. Điểm đáng chú ý là mã khai thác proof-of-concept (PoC) đã được công bố công khai với tỷ lệ thành công lên tới 99%, mức độ ổn định hiếm gặp đối với một race-condition bug vốn nổi tiếng khó khai thác tin cậy. Lỗ hổng được báo cáo riêng vào tháng 02/2026 và được vá upstream vào ngày 24/04/2026, tuy nhiên bản vá cấp distro vẫn đang trong quá trình triển khai. Hiện chưa có bằng chứng khai thác thực tế ngoài tự nhiên, nhưng việc PoC được công bố công khai đã rút ngắn đáng kể cửa sổ thời gian an toàn.

Bad Epoll cũng mang theo một câu chuyện đặc biệt: lỗ hổng nằm trong cùng đoạn mã epoll mà AI Mythos của Anthropic đã tìm ra lỗ hổng anh em CVE-2026-43074 trước đó nhưng Mythos đã bỏ sót Bad Epoll. Điều này minh chứng rằng dù AI frontier đã có khả năng phát hiện các race-condition bug phức tạp trong kernel, những bug có cửa sổ race cực hẹp và ít dấu hiệu runtime vẫn đòi hỏi chuyên môn của nhà nghiên cứu con người.

Thông tin chi tiết

  • Định danh lỗ hổng: CVE-2026-46242

  • Điểm CVSS(3.1): 7.8

  • Mức độ nghiêm trọng: HIGH – Nghiêm trọng cao

  • Mô tả: Bad Epoll là lỗ hổng race-condition use-after-free trong epoll subsystem của Linux kernel. Đây là cơ chế thông báo I/O event cốt lõi được sử dụng bởi hầu hết mọi ứng dụng hiệu năng cao trên Linux như nginx, Apache, Node.js, Python asyncio, database, trình duyệt web, và event loop của Android). Lỗ hổng phát sinh từ một close-vs-close race condition trong đường dẫn giải phóng file ep_remove() của epoll. Khi một epoll instance giám sát một epoll instance khác và cả hai được đóng đồng thời, một luồng kernel giải phóng vùng nhớ backing object trong khi luồng khác vẫn đang ghi vào đó và tạo ra trạng thái use-after-free 8 byte. Kẻ tấn công khai thác stray write này, kết hợp với kỹ thuật cross-cache heap reclamation và ROP chain, để đạt được arbitrary kernel read và control-flow hijack, từ đó leo thang lên root shell một cách đáng tin cậy. Epoll là thành phần không thể tắt trên Linux, nghĩa là không có workaround nào ngoài việc vá lỗi.

  • Phiên bản bị ảnh hưởng:

Nền tảng Phiên bản bị ảnh hưởng
Linux kernel Phiên bản 6.4 trở lên
Android Thiết bị chạy kernel 6.6 trở lên

![](https://cdn.hashnode.com/uploads/covers/669e7a2f2c109ecd663148bd/6ab3a71a-6e0b-434a-8a50-ae5fdd899b2d.gif align="middle")

Tổng quát quá trình khai thác CVE-2026-46242

Quá trình khai thác có thể được chia thành các giai đoạn sau:

Bước 1: Thu thập thông tin (Reconnaissance)

  • Mục tiêu: Xác định hệ thống mục tiêu chạy Linux kernel 6.4 trở lên hoặc Android kernel 6.6 trở lên với môi trường multi-user (shared hosting, CI/CD runner, container node, Kubernetes worker, dev server).

  • Hành động: Kẻ tấn công đã có quyền truy cập cục bộ (local access) qua tài khoản thấp quyền hợp lệ, SSH, web shell từ lỗ hổng khác, hoặc container escape. Kiểm tra kernel version (uname -r) để xác nhận điều kiện khai thác. Bước 2: Kích hoạt Race Condition (Exploitation)

  • Kẻ tấn công tạo bốn epoll file descriptor liên kết với nhau theo cấu trúc hai cặp: hai cặp đầu (driver pair) được dùng để kích hoạt race, hai cặp còn lại (victim pair) là nạn nhân.

  • Đóng hai epoll instance giám sát nhau đồng thời, kích hoạt close-vs-close race condition trong ep_remove().

  • Cửa sổ race chỉ khoảng sáu instruction cực kỳ hẹp, nhưng kỹ thuật bốn-descriptor liên tục trigger race đã đẩy tỷ lệ thành công lên ~99%.

Bước 3: Khai thác Use-After-Free (Memory Corruption)

  • Race condition thành công tạo ra 8-byte use-after-free write vào vùng nhớ đã giải phóng.

  • Kẻ tấn công sử dụng kỹ thuật cross-cache heap reclamation: sau khi backing object bị free, thao túng heap allocator của kernel để cấp phát struct file object vào vùng nhớ vừa được giải phóng.

  • 8-byte stray write ghi đè lên struct file object — cho phép kiểm soát một file object trong kernel.

Bước 4: Đọc Bộ nhớ Kernel (Arbitrary Kernel Read)

  • Từ struct file bị kiểm soát, kẻ tấn công đọc thông tin qua /proc/self/fdinfo.

  • Thu thập địa chỉ kernel và thông tin layout cần thiết để bypass KASLR (Kernel Address Space Layout Randomization).

Bước 5: Leo thang Đặc quyền Root (Privilege Escalation)

  • Xây dựng và thực thi ROP chain (Return-Oriented Programming) để chiếm quyền điều khiển CPU instruction pointer.

  • ROP chain thực thi payload trong kernel context, thay đổi credential của tiến trình attacker thành UID 0 (root).

  • Sinh Spawn root shell.

![](https://cdn.hashnode.com/uploads/covers/669e7a2f2c109ecd663148bd/779ac909-e08a-4aee-adae-d12582296387.jpg align="middle")

Bước 6: Hậu khai thác (Post-Exploitation)

  • Cài đặt backdoor hoặc persistence mechanism để duy trì quyền truy cập root lâu dài.

  • Thoát khỏi container isolation nếu đang trong môi trường containerized.

  • Trên Android: khai thác thêm để bypass SELinux và đạt persistent root.

  • Lateral movement vào các hệ thống khác trong mạng nội bộ sử dụng quyền root đã có.

  • Đánh cắp SSH host key, credentials, và dữ liệu nhạy cảm.

Khuyến nghị & Khắc phục

Đội ngũ FPT Threat Intelligence khuyến nghị người dùng và quản trị viên thực hiện ngay các hành động sau:

  • Cập nhật bản vá khẩn cấp: Cài đặt ngay bản cập nhật kernel từ kênh bảo mật chính thức của bản phân phối đang sử dụng.

  • Ưu tiên môi trường multi-user và untrusted code: Bad Epoll đặc biệt nguy hiểm trong các môi trường mà local privilege escalation là ranh giới bảo mật duy nhất. Ưu tiên vá ngay:

    • Shared hosting server.

    • CI/CD runner chạy untrusted code.

    • Container và Kubernetes worker node.

    • Dev server đa người dùng.

    • HPC cluster với nhiều tài khoản.

  • Không có workaround: Epoll là thành phần cốt lõi không thể tắt trên Linux. Patching là biện pháp duy nhất. Các biện pháp hardening như bật KASLR và SLUB randomization có thể làm tăng độ khó khai thác nhưng không ngăn chặn được hoàn toàn. SELinux/AppArmor có thể hạn chế những gì process đã leo thang được phép làm nhưng không ngăn bản thân việc leo thang.

  • Android: Áp dụng ngay Google Security Update cho các thiết bị chạy kernel 6.6 trở lên (Pixel 10 và các thiết bị tương đương). Toàn bộ chuỗi khai thác root trên Android chưa được công bố công khai, nhưng memory corruption PoC đã được xác nhận, bản vá cần được áp dụng trước khi full chain xuất hiện.

  • Giám sát bảo mật: Rà soát log để phát hiện dấu hiệu khai thác:

    • Kernel panic hoặc instability bất thường trong epoll teardown path.

    • Tiến trình người dùng thấp quyền đột ngột chạy lệnh với UID 0.

    • Tạo SSH key, tài khoản mới, hoặc service/scheduled task bất thường sau khi có local login.

    • Kernel OOPS hoặc BUG trace liên quan đến ep_remove(), eventpoll, hoặc epi_fget().

Tham khảo

More from this blog

F

FPT IS Security

891 posts

Dedicated to providing insightful articles on cybersecurity threat intelligence, aimed at empowering individuals and organizations to navigate the digital landscape safely.