用途:该工具包用于检测和演示 CVE-2026-31431(“Copy Fail”)。该漏洞位于 Linux 内核 algif_aead,使用 authencesn(hmac(sha256),cbc(aes)) 时通过 splice() 执行原地 AEAD 操作,会写入普通文件的页缓存页,使非特权用户可篡改内核内存中 /etc/passwd 等全局可读文件的视图,从而实现本地提权。
主要能力:包含两个脚本。test_cve_2026_31431.py 为非破坏性检测器,仅操作临时哨兵文件,退出码 0 表示不易受攻击、1 表示测试错误、2 表示存在漏洞。exploit_cve_2026_31431.py 为提权演示,将 /etc/passwd 页缓存中的 UID 改为 0,随后调用 su。
使用方式:无需安装,克隆仓库后直接运行。
git clone https://github.com/rootsecdev/cve_2026_31431.git cd cve_2026_31431 python3 --version # requires 3.10+
检测:python3 test_cve_2026_31431.py
提权演示(仅页缓存补丁,退出时自动还原):python3 exploit_cve_2026_31431.py
补丁并启动 root shell:python3 exploit_cve_2026_31431.py --shell
适用场景:仅限自有系统或明确授权的评估环境。受影响系统为包含提交 72548b093ee3(2017 年原地 AEAD)且未回退的上游修复的 Linux 内核;已确认受影响的有 Ubuntu 24.04 LTS、Amazon Linux 2023、RHEL 14.3、SUSE 16。
限制:提权需运行用户 UID 为 4 位(1000–9999),且无 NSS 缓存守护进程(nscd、sssd、systemd-userdbd)掩盖 /etc/passwd 读取,补丁与 su 执行之间 /etc/passwd 页需保留在缓存中。磁盘文件不会被修改。缓解方式为永久禁用 algif_aead 模块:
sudo tee /etc/modprobe.d/disable-algif-aead.conf <<< 'install algif_aead /bin/false' sudo rmmod algif_aead 2>/dev/null
还原页缓存可执行 posix_fadvise 驱逐、echo 3 > /proc/sys/vm/drop_caches 或重启。未经授权使用在多数司法管辖区属违法。