【风险提示】天融信关于Linux Kernel本地权限提升漏洞CVE-2026-46242(Bad Epoll)的风险提示
0x00 背景介绍
近日,天融信阿尔法实验室监测到Linux Kernel主线修复了一个本地权限提升漏洞CVE-2026-46242(Bad Epoll)。成功利用该漏洞不仅可以在Linux桌面版和服务器版上获取root权限,还可以在安卓设备上获取root权限,且可以在Chrome渲染器的沙箱内触发,所以该漏洞的影响较大,这是由于大多数Linux本地提权漏洞无法在安卓内核中进行利用,也无法在Chrome渲染器的沙箱内触发。当前,此漏洞的细节及Exp已经公开,部分主流Linux发行版已发布针对该问题的补丁或更新,因此,请受影响用户立即根据修复建议对该漏洞进行防御。
Linux内核是一个开源、宏内核但支持动态模块加载的操作系统核心,负责管理硬件资源并为上层软件提供运行环境。它通过进程调度、内存管理、虚拟文件系统、网络协议栈和设备驱动等关键子系统,实现对CPU、内存、磁盘及外设的抽象与调度,并提供稳定、安全和高效的接口供应用程序使用。凭借高可移植性、丰富的驱动支持和强大的社区协作,其已成为从嵌入式设备到超级计算机、从安卓系统到云服务器广泛采用的基础核心。
CVE-2026-46242(Bad Epoll)是Linux Kernel eventpoll子系统的一个条件竞争导致的释放后重用UAF漏洞。成功利用该漏洞的本地攻击者可以获取目标系统的root权限。当一个eventpoll文件描述符监视另一个eventpoll文件描述符时,同时关闭这两个文件描述符会触发fs/eventpoll.c中的条件竞争漏洞。当__ep_remove()函数执行WRITE_ONCE(file->f_ep, NULL)时,对同一目标文件并发的__fput()操作会在eventpoll_release()函数的无锁快速路径上检测到f_ep==NULL,从而跳过执行eventpoll_release_file()函数,直接释放目标的eventpoll和file对象。__ep_remove()会继续通过指针写入这些已释放的对象,导致释放后重用UAF漏洞。
虽然该漏洞的竞争窗口仅有6条指令左右,通常的尝试几乎不可能赢得竞争条件,但漏洞利用可以扩大竞争窗口,并运行一个永远不会导致内核崩溃的重试循环,使漏洞利用成功率达到99%。
利用条件:
1、Capabilities:不需要
2、内核配置:CONFIG_EPOLL
3、是否需要用户命名空间:否
epoll是Linux的I/O事件多路复用机制,允许单个程序同时监视大量文件描述符与网络连接。Nginx、Node.js、Chrome等几乎所有现代服务与浏览器都依赖它,且无法关闭。Bad Epoll的本质是内核中两条对象清理路径并发执行时引发的条件竞争:一条路径已将某内核对象释放,另一条路径仍在向其写入,从而导致释放后重用(UAF)。
该漏洞的触发过程如下所示。
上图创建了两个epoll文件描述符ep_waiter和ep_target,其中ep_waiter监视ep_target。对于每个文件描述符ep_X,epoll_X 是其结构体eventpoll,file_X是其结构体file。
线程B释放了两个对象epoll_target和file_target,而线程A的__ep_remove()函数仍然引用它们,因此,条件竞争导致了两次不同的释放后重用UAF。
[1]处是对结构体file的静默UAF,epi->ffd.file持有目标file,但其f_count始终未增加,因此,__ep_remove()会持续操作已释放(可能已被回收)的file_target,同时持有其f_lock。is_file_epoll(file)读取的结果即为UAF读取。如果释放的file立即被回收为非事件轮询文件[0],则free_ephead()会将 &epoll_target->refs释放到错误的缓存(kmalloc-192)中,导致无效释放[3]。
[2]处是对结构体eventpoll的UAF(在偏移量160字节处写入 0,在kmalloc-192中分配)。hlist_del_rcu(&epi->fllink)通过悬空的epi->fllink.pprev写入*pprev=0,该指针指向已释放的&epoll_target->refs(已释放的eventpoll对象内部160字节处)。
Linux Kernel对此漏洞的补丁如下所示。
在ep_remove()的开头,通过epi_fget()锁定@file,并在锁定成功时触发临界区。由于锁定成功,@file无法达到引用计数为零,从而阻止__fput()的执行,并间接地保持被监视的struct eventpoll在hlist_del_rcu()和f_lock使用期间处于活动状态,最终关闭两个UAF。
58c9b016e128 <= Linux Kernel Commit < a6dc643c693
已知受影响的发行版:
Red Hat Enterprise Linux 10
Red Hat Enterprise Linux 9
Ubuntu 24.04 LTS
Ubuntu 25.10
Ubuntu 26.04 LTS
Debian 13 (Trixie)
Debian 14 (Forky)
已知的安卓设备影响范围:
Google Pixel 10(Linux内核版本6.6及以上):受影响。
Google Pixel 8和其他基于Linux内核6.1的设备:不受影响,因为该漏洞在Linux内核6.4中引入。
Linux Kernel已发布正式补丁,建议受影响用户尽快将Linux Kernel升级到包含补丁的安全版本。官方补丁链接:
https://git.kernel.org/stable/c/a6dc643c69311677c574a0f17a3f4d66a5f3744b
各个Linux发行版漏洞公告链接:
Debian:https://security-tracker.debian.org/tracker/CVE-2026-46242
Ubuntu:https://ubuntu.com/security/CVE-2026-46242
Red Hat:https://access.redhat.com/security/cve/cve-2026-46242
由于Linux Kernel的epoll子系统操作系统、网络服务和浏览器都依赖的核心内核功能,无法像Copy Fail及其变种漏洞那样通过卸载受攻击的模块来进行临时缓解,修复此漏洞的唯一方法就是应用补丁,将Linux Kernel升级至安全版本。
0x07 声明
天融信阿尔法实验室拥有对此公告的修改和解释权,如欲转载,必须保证此公告的完整性。由于传播、利用此公告而造成的任何后果,均由使用者本人负责,天融信阿尔法实验室不为此承担任何责任。
天融信阿尔法实验室成立于2011年,一直以来,阿尔法实验室秉承“攻防一体”的理念,汇聚众多专业技术研究人员,从事攻防技术研究,在安全领域前瞻性技术研究方向上不断前行。作为天融信的安全产品和服务支撑团队,阿尔法实验室精湛的专业技术水平、丰富的排异经验,为天融信产品的研发和升级、承担国家重大安全项目和客户服务提供强有力的技术支撑。