AI漏掉的Linux内核提权漏洞,普通用户也能拿到Root权限,Android手机也受影响
原创
suntiger
suntiger
二进制空间安全
2026年7月6日 08:30
北京
在小说阅读器读本章
去阅读
将二进制空间安全设为\"星标⭐️\"
第一时间收到文章更新
漏洞背景
2026年7月初,安全圈又迎来一枚Bad 系列内核漏洞:Bad Epoll。
它允许没有任何特权的本地用户,通过Linux内核 epoll 子系统里一个极窄的竞态窗口,把权限一路提升到root。受影响的不只是传统 Linux 服务器,还包括Android手机,而这一点,恰恰是多数Linux本地提权漏洞做不到的。而Anthropic的前沿AI模型Mythos曾在同一段epoll代码里挖出了另一个竞态漏洞(CVE-2026-43074),却漏掉了 Bad Epoll。
epoll是什么?为什么关不掉?
在Linux里,epoll 是一种高效 I/O多路复用机制:一个进程可以同时监听成百上千个文件描述符,包括:网络连接、管道、定时器等,哪个就绪就处理哪个。基础工作原理模型如下:
┌─────────────┐ epoll_wait() ┌──────────────────┐│ Nginx/Chrome│ ◄──────────────────► │ 内核 epoll 子系统 ││ Node.js/Go │ epoll_ctl() │ (fs/eventpoll.c) │└─────────────┘ epoll_create() └──────────────────┘
如Nginx、Chrome、Node.js、Android系统服务,几乎所有高并发程序都依赖 epoll。最麻烦的地方是它并不是一个可卸载的内核模块,因此没有一键关闭的解决方案。唯一的解决方案是等待补丁发布。
epoll竞态漏洞原理
Bad Epoll的本质, 是一个经典的Use-After-Free竞态问题:两条内核清理路径同时操作同一个对象,一条把内存释放了,另一条还在往这块内存里写。漏洞原理如下图:
漏洞形成过程遵循如下步骤:
ep_remove()在file->f_lock保护下清空了file->f_ep,但随后仍在临界区内继续使用is_file_epoll()、hlist_del_rcu()等操作)。- 与此同时,并发的
__fput()走eventpoll_release()快速路径,看到 transient NULL 后跳过了eventpoll_release_file(),直接执行f_op->release/file_free()。 - 当epoll监听epoll(epoll-watches-epoll)时,
f_op->release会触发ep_eventpoll_release()→ep_clear_and_put()→ep_free(),提前 kfree 了被监听的struct eventpoll。 - 被释放对象的
->refshlist 头,恰好是epi->fllink.pprev指向的位置。随后ep_remove()里的hlist_del_rcu()执行\"*pprev = next\",往已释放的 kmalloc-192内存里写入8字节,这就是攻击者可控的 UAF 写。 - 由于
struct file标记为SLAB_TYPESAFE_BY_RCU,同一块内存还可能被alloc_empty_file()回收复用,导致攻击者可控的跨cache释放,进一步放大危害。
两条清理路径真正\"撞车\"的地方,大约只有6条机器指令宽,随机触发几乎不可能成功, 这也是AI和人类都极难发现它的原因之一。
该漏洞的研究者通过精密的exploit设计,将极窄的窗口变成了99%成功率的稳定攻击。以下是完整的权限提升利用链:
权限提升攻击链过程如下:
(1).布局:创建4个epoll对象,分成2对,一对触发竞态,一对成为受害者。
(2).触发UAF:同时关闭关联epoll,驱动竞态,获得8字节可控写。
(3).升级UAF:跨cache攻击,污染file对象,完全控制 file 结构体内容。
(4).任意读:通过/proc/self/fdinfo读取任意内核内存。
(5).提权:利用ROP链劫持控制流,获取root shell。
完整的exploit代码和POC已公开:
Exploit Wirteup:
https://github.com/J-jaeyoung/security-research/blob/submit-cve-2026-46242/pocs/linux/kernelctf/CVE-2026-46242\_lts\_cos/docs/exploit.md
POC源码:
https://github.com/J-jaeyoung/security-research/blob/submit-cve-2026-46242/pocs/linux/kernelctf/CVE-2026-46242\_lts\_cos/exploit/lts-6.12.67/exploit.cpp
以下是漏洞时间线参考:
(全文完)
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论