Linux 内核漏洞 CVE-2026-31431(又称 Copy Fail)的概念验证漏洞复现。
致谢:Copy Fail
/usr/bin/su)的备份git clone https://github.com/MohamedKarrab/Copy-Fail-CVE-2026-31431.git
cd Copy-Fail-CVE-2026-31431
# 默认目标为 /usr/bin/su
python fail.py
# 或任何 setuid-root 程序(passwd、mount、chsh、sudo、pkexec...)
python fail.py /usr/bin/passwd
若漏洞利用失败,目标二进制文件可能无法恢复至原始状态。可通过以下方式修复:
直接重启设备。重启会清除页缓存(该漏洞利用不会修改磁盘上的二进制文件)。
或者,从可信软件包中恢复干净的 /usr/bin/su(或所选二进制文件)。
Debian / Ubuntu:
sudo apt-get install --reinstall util-linux
Fedora / RHEL:
sudo dnf reinstall util-linux
Arch:
sudo pacman -S util-linux
此漏洞利用滥用 AF_ALG AEAD 实现,向 /usr/bin/su(一个 setuid-root 二进制文件)的内核页缓存中写入任意 4 字节数据块。
sendmsg/splice 配对,将数据注入 AES-CBC-HMAC 处理过程/usr/bin/su 内存中的 .text 段最后,执行 /usr/bin/su 会加载被污染的页缓存,由于 setuid 特性,注入的代码将以 root 权限运行。
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null