一、漏洞核心(CopyFail,CVE-2026-31431)
漏洞名称:CopyFail(复制失败)
CVE编号:CVE-2026-31431
漏洞类型:本地提权(LPE)+ 容器逃逸,逻辑漏洞
CVSS3.1:7.8(高危)
成因:2017年内核优化引入,algif_aead模块(AF_ALG加密接口)的原地(in-place)解密与splice系统调用异常交互,导致普通用户可篡改只读系统文件页缓存,提权root。
影响范围:2017年后所有主流内核(4.14+),含Ubuntu、RHEL、CentOS、SUSE、Debian、Amazon Linux等;容器/Pod可逃逸宿主机。
利用门槛:极低,732字节脚本即可提权,无竞态条件、无需复杂适配,成功率接近100%。
二、漏洞原理(极简说清)
正常逻辑:内核页缓存只读,普通用户不可写。
2017优化:algif_aead解密路径改用原地操作(节省内存),将只读页缓存页加入可写输出链表。
漏洞触发:用户通过AF_ALG套接字 + splice,向任意只读文件页缓存写入4字节,篡改/usr/bin/su等setuid程序,直接root提权。
容器逃逸:容器与宿主机共享页缓存,容器内可篡改宿主机页缓存,实现逃逸。
三、修复方案(优先级:官方补丁 > 临时缓解)
1. 官方永久修复(首选,必须重启)
内核补丁核心:回退2017年原地优化,恢复异地(out-of-place)操作,隔离只读/可写页。
修复版本(截至2026-05-02):
主线内核:6.18.22+、6.19.12+、7.0+
Ubuntu 22.04:≥5.15.0-178;24.04:≥6.8.0-42
RHEL/CentOS:≥6.12.0-124.46.1.el10_1
SUSE:≥6.12.0-160000.10-default
升级命令:
# Ubuntu/Debian
sudo apt update && sudo apt full-upgrade -y
sudo reboot
# RHEL/CentOS
sudo dnf update kernel -y
sudo reboot
# SUSE
sudo zypper update kernel -y
sudo reboot
2. 临时缓解(无法重启/紧急防护,无需重启)
核心:禁用algif_aead模块(漏洞载体)
# 1. 禁止模块加载(永久生效)
echo "install algif_aead /bin/false" | sudotee /etc/modprobe.d/disable-algif-aead.conf
# 2. 卸载已加载模块(立即生效)
sudo rmmod algif_aead 2>/dev/null
# 3. 验证(无输出即成功)
lsmod | grep algif_aead
备选:seccomp拦截AF_ALG(容器环境)
配置seccomp策略,阻止用户态创建AF_ALG套接字,阻断攻击入口。
四、影响与风险提示
云原生高危:容器/K8s集群需优先修复,防止批量逃逸。
通用服务器:所有Linux主机(含物理机、虚拟机)均需修复,低权限用户可一键提权。
漏洞已公开:PoC/细节已泄露,立即修复/缓解,避免被入侵。
五、自查命令
# 1. 查内核版本
uname -r
# 2. 查模块是否加载
lsmod | grep algif_aead
# 3. 查kmod缓解(Ubuntu)
dpkg -l kmod
六、Linux CopyFail CVE-2026-31431 一键自查+加固脚本
直接复制到服务器 root 执行,适配 CentOS / Ubuntu / Debian / 麒麟 通用。
#!/bin/bash
# CVE-2026-31431 CopyFail 漏洞 自查+临时加固脚本
echo "=============================="
echo " CVE-2026-31431 CopyFail 加固"
echo "=============================="
# 1. 系统信息自查
echo -e "\n[1] 内核版本检测:"
uname -r
echo -e "\n[2] 检测漏洞模块 algif_aead 是否加载:"
lsmod | grep algif_aead
# 2. 永久禁止模块加载
echo -e "\n[3] 写入模块黑名单配置..."
cat > /etc/modprobe.d/disable-algif-aead.conf <<EOF
install algif_aead /bin/false
blacklist algif_aead
EOF
# 3. 卸载当前已加载模块
echo -e "\n[4] 卸载正在运行的 algif_aead 模块..."
rmmod algif_aead 2>/dev/null
echo "卸载完成(无报错即为正常)"
# 4. 再次校验
echo -e "\n[5] 加固后二次校验:"
lsmod | grep algif_aead
if [ -z "$(lsmod | grep algif_aead)" ]; then
echo "✅ 已成功禁用 algif_aead,临时防护生效"
else
echo "❌ 模块仍存在,需重启服务器"
fi
echo -e "\n=============================="
echo "临时加固完成!"
echo "根治方案:升级内核到官方修复版本并重启"
echo "=============================="
使用方法
新建文件:vi copyfail_fix.sh
把上面全部代码粘贴进去,保存退出
加权限:chmod +x copyfail_fix.sh
执行:./copyfail_fix.sh
补充说明
脚本作用:不用重启,立刻阻断 CopyFail 漏洞利用入口;
只是临时缓解,彻底根治必须升级内核 +重启;
适配所有 Linux 发行版,包括国产麒麟、欧拉。