AI一小时发现Copy Fail漏洞 732字节代码可Root全系Linux
CVE-2026-31431,代号 Copy Fail,是过去十年 Linux 内核安全领域最值得关注的漏洞之一。
它的核心是一个 732 字节的 Python 脚本(仅依赖 Python 3.10+ 标准库),能在 Ubuntu、RHEL、Amazon Linux、SUSE 等所有主流发行版上,从普通用户权限直接提权到 root。不需要竞争条件,不需要按发行版适配偏移量,单次执行成功率 100%。
漏洞机理:
问题出在内核 authencesn 模块对 AF_ALG 加密套接字的处理上。2017 年合入的一个 in-place 优化,导致加密操作结束后会向调用者的缓冲区外写入 4 个字节。当调用者通过 splice() 将页缓存(page cache)中的页面传入加密子系统时,这 4 个字节就写入了内核页缓存——也就是 execve 读取二进制文件时实际使用的内存副本。
攻击者只需要修改 /usr/bin/su 或其他 setuid 程序在页缓存中的几个字节,下次执行该程序时就能获得 root shell。而磁盘上的文件没有任何变化,文件完整性检测工具在缓存被逐出或重启后也看不出异常。这是 Dirty Pipe 同类家族的最新成员,但比 Dirty Cow(需要竞争条件)和 Dirty Pipe(需要特定内核版本)更加可靠和通用。
为什么说这是在 AI 基础设施层面必须关注的安全事件:
Copy Fail 不仅是本地提权漏洞,还是一个容器逃逸原语——页缓存宿主机内共享,一个容器内的攻击者可以越容器、越租户地攻陷同一台机器上的所有工作负载。这意味着:
- 多租户 Linux 主机(Shell 即服务、跳板机、构建服务器)——任何用户都能变 root。
- Kubernetes 集群——一个 Pod 即可攻陷节点,跨越租户边界。
- CI 运行器(GitHub Actions 自托管运行器、GitLab Runner、Jenkins)——一个恶意 PR 就能 root 运行器。
- Agent 沙箱和 Serverless 函数——租户代码可能突破容器隔离。
AI 发现了它:
值得特别提及的是,这个漏洞由 Xint Code 的安全研究员 Taeyang Lee 在 AI 辅助下发现。Xint Code 对其整个 crypto/ 子系统的审计在大约一小时内完成,Copy Fail 是这次扫描中严重等级最高的发现。这是 AI 辅助做安全审计首次产出如此高影响力的 0day 内核漏洞。
缓解措施:
主流发行版已推送补丁(内核主线 commit a664bf3d603d)。在无法更新内核的情况下,可通过禁用 algif_aead 模块来缓解:echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf。对于运行不可信工作负载的容器和沙箱,建议通过 seccomp 阻止 AF_ALG 套接字创建,无论补丁状态如何。