导语:Anthropic公司的AI模型Mythos在审计Linux内核代码时,在同一段约2500行的epoll代码中发现了两个竞态条件漏洞。第一个就是CVE-2026-43074,已于2026年4月修复;但AI在修复后审查时”顺手放过”的第二个漏洞——后来的CVE-2026-46242(Bad Epoll,脏epoll)——才是真正的杀招。这篇文章,我们先把目光聚焦在第一个漏洞上。
一、漏洞概述
CVE-2026-43074是Linux内核fs/eventpoll.c中的一个对象生命周期管理失误导致的释放后重用(Use-After-Free)漏洞。
CVSS 3.1评分:7.8 High
| 字段 | 值 |
|---|---|
| 攻击向量 | 本地(Local) |
| 攻击复杂度 | 低(Low) |
| 所需权限 | 低(Low) |
| 用户交互 | 无需 |
| 影响范围 | 不变 |
| 机密性影响 | 高 |
| 完整性影响 | 高 |
| 可用性影响 | 高 |
该漏洞的核心问题在于:ep_free()函数可能在另一个线程仍在持有epi->ep(指向struct eventpoll对象的指针)时将其释放。这是一个典型的多线程竞态条件下的对象生命周期bug。
二、epoll是什么?为什么这个漏洞很危险?
epoll是Linux提供的高性能I/O事件通知机制,是高性能网络服务器的地基:
- Nginx使用epoll处理海量并发连接
- 数据库引擎(MySQL、PostgreSQL等)依赖epoll实现高效查询
- 容器运行时、Node.js、Python asyncio都在底层调用epoll
- Android和Chrome的内部事件循环也离不开它
这个漏洞之所以危险,是因为epoll无处不在。没有模块可以禁用,没有配置可以关闭,在任何通用Linux发行版上CONFIG_EPOLL都是开启的。无论你的服务器跑的是什么业务,只要用的是Linux内核,漏洞就可能存在。
三、技术原理:RCU延迟释放
3.1 竞态条件的本质
当两个线程同时关闭相互监控的epoll实例时,会发生以下情况:
线程A:正在从epoll实例A的监视列表中移除epoll实例B,清除file->f_ep字段,向其他线程宣告”这个文件不再被监控了”。但它还没完成清理工作。
线程B:同时在关闭epoll实例B,检查file->f_ep字段,发现字段已经被清除,认定B的清理工作已经完成,直接跳过了某个关键步骤,将B对应的对象内存直接释放。
结果:线程A以为自己操作的对象还活着,继续写入已经被线程B释放的内存——典型的Use-After-Free。
3.2 修复方案
上游补丁标题原文是:
“eventpoll: defer struct eventpoll free to RCU grace period”
翻译过来就是:将struct eventpoll的释放推迟到RCU宽限期之后。
修复方法是把 kfree(ep) 改为 kfree_rcu(ep, rcu)——引入RCU(Read-Copy-Update)机制,延迟内存回收,确保所有读者安全越过读端临界区后再真正释放对象。
这意味着漏洞的技术本质是:对象移除和对象释放不是原子操作,在并发场景下会产生一个可利用的”空窗期”。
四、Mythos AI发现了什么?
Anthropic公司的AI安全模型Mythos(迷索斯)在2026年初审计这段epoll代码时,成功识别出了这个竞态条件。这是AI辅助代码审计的一个真实成果——Mythos在约2500行代码中定位到了一个需要”并发执行时序推理”才能发现的内存安全问题。
但讽刺的是,Mythos当时没有发现同一个commit引入的另一个竞态条件——即后来的Bad Epoll(CVE-2026-46242)。这说明即便是最先进的AI,在面对极窄时间窗口的竞态条件时,也存在盲点。
五、影响与利用现状
5.1 风险等级
该漏洞需要本地代码执行作为前提条件,攻击者需要能够以普通用户身份运行代码。这意味着它不能被远程直接利用,但可以成为攻击链的最后一环:
- Web应用漏洞获得低权限shell → 本地提权到root
- 恶意软件落地 → 获得管理员权限
- 容器逃逸 → 获得宿主机root
高风险场景包括:CI runner(执行任意构建脚本)、Kubernetes节点(容器共享内核)、开发者工作站(持有云凭据)、多租户堡垒机。
5.2 是否有公开Exploit?
目前没有独立的CVE-2026-43074公开利用代码。 主要原因:
- 漏洞于2026年4月2日已在主线内核修复,公开利用价值大幅降低
- 竞态条件对内核版本、CPU型号、内存分配状态高度敏感,可靠利用难度大
- 安全社区的注意力更多集中在后续披露的Bad Epoll(CVE-2026-46242)上,后者有完整公开exploit(Google kernelCTF)
六、修复与缓解
6.1 官方修复
2026年4月2日,Linux内核主线已合入修复,补丁将直接kfree(ep)改为kfree_rcu(ep, rcu)。各发行版推送时间:
- Amazon Linux 2023(kernel 6.12/6.18):2026年5月9日(ALAS2023-2026-1695/1693)已修复
- Debian/Ubuntu/Red Hat:通过常规安全更新渠道推送
6.2 验证方法
# 查看当前运行内核版本
uname -r
# 检查是否已安装安全更新(以RPM为例)
rpm -q --changelog kernel | grep -i "CVE-2026-43074|eventpoll|kfree_rcu"
# 以Debian/Ubuntu为例
apt list --upgradable 2>/dev/null | grep linux-image
6.3 深度防御措施
- 限制本地用户的代码执行权限,应用白名单策略
- 强化CI runner的隔离环境,禁止执行未审查的PR构建脚本
- Kubernetes集群开启Pod安全策略,限制特权容器
- 对开发者工作站实施应用控制,防止恶意软件落地
七、总结
CVE-2026-43074是2026年AI辅助安全审计的一个真实案例。Mythos成功找到了这个漏洞,说明AI在代码审计领域确实有真本事。但Mythos同时漏掉了Bad Epoll,也说明AI在面对”极窄竞态窗口”这类bug时,能力边界依然清晰可见。
对于防御者来说,这个漏洞的教训是:内核对象生命周期管理的细节不容忽视,多线程代码中”移除”和”释放”必须原子化;对于安全社区来说,AI审计是强大的辅助工具,但永远不能替代人类专家对时序逻辑的深度推敲。
版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。











暂无评论内容