文章总结: 本文详细解析Linux内核提权漏洞BadEpoll。该漏洞源于epoll子系统两条清理路径的竞态条件导致的Use-After-Free问题,允许无特权本地用户获取root权限。因epoll为不可卸载的核心机制,此漏洞同时影响Linux服务器与Android手机。尽管触发窗口极窄,研究者仍通过跨cache攻击与ROP链实现了高成功率利用。目前POC已公开,建议受影响环境尽快安装官方补丁以规避风险。 综合评分: 86 文章分类: 漏洞分析,二进制安全,漏洞POC,漏洞预警,AI安全
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
以下是漏洞时间线参考:
(全文完)
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:二进制空间安全 suntiger suntiger《AI漏掉的Linux内核提权漏洞,普通用户也能拿到Root权限,Android手机也受影响》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论