Copy Fail 是 Linux 内核加密子系统中的一个逻辑漏洞(CVE-2026-31431)。2017 年对 algif_aead.c 的一项优化意外地将页缓存页面放入了可写的 scatterlist 中。authencesn AEAD 算法在解密过程中会在输出边界之外写入 4 个临时字节,这些字节通过就地(in-place)scatterlist 直接落入攻击者 splice 进来的任何文件的内核缓存副本中。这使得无特权的本地用户能够对任何可读文件的页缓存进行受控的 4 字节写入,从而通过破坏 setuid 二进制文件轻松提权至 root。
本仓库包含干净、可读的 C 和 Python 版 PoC 漏洞利用代码,已在 Ubuntu 24.04 LTS(内核 6.8.0-1012-aws)上验证通过。
$ ./copy_fail
# id
uid=0(root) gid=1000(user) groups=1000(user)
git clone https://github.com/rvizx/CVE-2026-31431.git
cd CVE-2026-31431
python3 copy_fail.py
git clone https://github.com/rvizx/CVE-2026-31431.git
cd CVE-2026-31431
gcc -o copy_fail copy_fail.c
./copy_fail
仅限授权的安全测试和研究使用。请勿在非您所有或未经书面许可的系统上运行。该漏洞利用会修改 setuid 二进制文件的页缓存——由此获得的 root shell 是真实有效的。
Ravindu Wickramasinghe (@rvz) - Zyenra Security