Linux爆0-day漏洞已被公开,允许获得几乎所有自2017年以来发布的主要发行版的root权限
Linux 内核中一个关键的零日漏洞已被公开披露,允许任何非特权本地用户获得几乎所有自 2017 年以来发布的主要 Linux 发行版的 root 权限。该漏洞被称为“复制失败”,编号为 CVE-2026-31431,由理论研究员李泰阳发现,并由 Xint 代码研究团队利用 AI 辅助分析扩展为完整的利用链。复制失败是 Linux 内核 authencesn 加密模板中的直线逻辑错误,而非竞赛条件,可通过 AF_ALG socket 接口结合 splice() 系统调用访问。与前身如 Dirty Cow(CVE-2016-5195) 或 Dirty Pipe(CVE-2022-0847) 不同,该漏洞无需竞速胜利、内核版本偏移、无需重新编译或编译有效载荷。仅使用标准库模块的单个 732 字节 Python 脚本,就能在每个测试发行版和架构上实现确定性根。该漏洞针对内核的页面缓存 ,即文件的内存表示,通过触发对攻击者可读取任意文件的页面缓存页进行受控 的 4 字节写入 。由于 Linux 内核从未将损坏页面标记为脏页面以便写回,磁盘文件保持不动,导致基于校验和的文件完整性工具完全忽略修改。攻击者随后执行损坏的内存内版本的 setuid 二进制文件,如 /usr/bin/su,实现根壳执行。该漏洞源自 2017 年引入 algif_aead.c 的原地优化(提交代码 72548b093ee3)。当用户将文件拼接到管道中并输入 AF_ALG 套接字时,AEAD 输入散点表直接引用该文件的内核物理页面缓存页——而非副本。对于 AEAD 解密操作,algif_aead.c 将 req->src = req->dst 设为,使源点和目的点指向同一合并散点表。这将页面缓存页面放入可写的目标散布表中。IPsec 用于支持 64 位扩展序列号(ESN)的 authencesn 算法,随后利用调用者的目的缓冲区作为暂存空间,重新排列 ESN 字节,将 4 字节以偏移 assoclen + cryptlen 写入声明输出边界之外,直接写入链式页面缓存页。2011年、2015年和2017年三次独立且合理的规范变更汇聚,导致近十年无人连接其交叉口。除了本地权限提升外,Copy Fail 还作为 Kubernetes 容器的逃逸原语。由于页面缓存在主机上所有进程之间共享,包括跨容器边界,被攻破的容器可能会破坏其他容器和主机内核可见的 setuid 二进制文件。Xint Code 研究系列的第二部分涵盖了完整的 Kubernetes 节点攻破。官方修复(提交 a664bf3d603d)将 algif_aead.c 恢复为不在位的 AEAD 操作,永久将 TX 散点表(可能包含页面缓存页)与 RX 散点表(用户输出缓冲区)分离。这消除了将页面缓存页面链接到可写目的地的 sg_chain() 机制。2、禁用 algif_aead 内核模块以消除攻击面:bashecho "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.confrmmod algif_aead 2>/dev/null
该漏洞于 2026 年 3 月 23 日向 Linux 内核安全团队报告,补丁于 2026 年 4 月 1 日提交至主线,CVE 于 2026 年 4 月 22 日分配,4 月 29 日公开披露。系统管理员被敦促立即应用内核更新。