一、漏洞概括
| 项目 | 内容 |
|---|---|
| 漏洞名称 | Linux 内核权限提升漏洞(Copy Fail) |
| 漏洞编号 | CVE-2026-31431 |
| 公开时间 | 2026-04-29 |
| CVSS 3.1 分数 | 7.8 |
| 威胁类型 | 本地权限提升 |
| 技术细节状态 | 已公开 |
| PoC 状态 | 已公开 |
| 在野利用状态 | 公开资料显示存在利用风险 |
CVE-2026-31431 是 Linux 内核加密子系统中的一处本地权限提升漏洞,公开名称为“Copy Fail”。漏洞位于 algif_aead / AF_ALG 相关处理路径,核心问题是 AEAD in-place 处理逻辑与页缓存(page cache)交互时存在缺陷,可能导致攻击者将可控数据写入目标文件的页缓存页面中。
该漏洞的利用前提通常包括:系统支持 AF_ALG,并且相关 algif_aead 能力可用。攻击者在本地获得普通用户权限后,可借助 socket(AF_ALG, ...)、splice() 以及特定算法模板触发异常写入,从而修改只读文件在内存中的映像。由于修改发生在页缓存中,磁盘上的原始文件内容可能并不会直接变化,因此传统基于文件落盘内容的完整性检查未必能及时发现异常。
公开分析显示,该漏洞主要影响 Linux 内核加密接口中 algif_aead 的处理逻辑,攻击成功后可能导致本地普通用户提权为 root。在容器场景下,由于宿主机与容器共享内核,理论上还可能带来容器逃逸风险,应高度重视。
二、影响范围
公开资料显示,该漏洞与 Linux 内核中 algif_aead 的实现相关,问题根因与 2017 年引入的一处优化改动有关。已有公开信息指出,多个 Linux 内核分支均可能受到影响,具体受影响范围需以发行版官方安全公告和已发布修复包为准。受影响的发行版:Openeuler、Ubuntu 24.04 LTS、Amazon Linux 2023、RHEL、SUSE、Debian、Arch、Fedora、Rocky、Alma、Oracle Linux及各类嵌入式 Linux,只要使用受影响内核,均存在风险。
可先使用以下命令进行基础判断:
uname -r
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)若输出为:
CONFIG_CRYPTO_USER_API_AEAD=m表示 algif_aead 以模块方式提供,可优先采用“方式一”进行缓解。
若输出为:
CONFIG_CRYPTO_USER_API_AEAD=y表示该能力编译进内核,无法通过简单卸载模块彻底去除,此时可优先采用方式二进行风险缓解。
三、安全措施
建议优先采取“尽快升级修复内核”的方式处理该漏洞;如暂时无法升级,可先实施临时缓解措施降低风险。
3.1 临时缓解措施
3.1.1 方法一(临时):通过 modprobe.d 规则阻止模块加载,并卸载当前已加载模块
该方式适用于 CONFIG_CRYPTO_USER_API_AEAD=m,即 algif_aead 以模块方式提供的场景。
说明:
- 该方法的目标是阻止系统后续再加载
algif_aead模块。 - 若模块当前已加载,还需尝试卸载。
- 该方式通常不需要重启即可生效,但若模块正被业务进程使用,卸载可能失败。
执行步骤如下:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null || true
lsmod | grep algif_aead若 lsmod | grep algif_aead 无输出,说明模块已成功卸载,缓解措施已生效。
如需进一步确认系统中是否还存在相关调用面,可结合以下命令排查:
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)
lsmod | grep algif_aead注意事项:
- 若
algif_aead被业务进程占用,rmmod可能失败。 - 某些依赖内核加密接口的程序在模块被禁用后,可能退回到用户态加密实现,也可能出现功能异常,建议在业务低峰期操作并做好回滚预案。
- 若该能力已编译进内核,则此方式无法完全适用,应采用“方式二”进行缓解。
3.1.2 方法二(临时):使用 seccomp 或类似沙箱机制限制 socket(AF_ALG, ...)
该方式适用于以下场景:
algif_aead编译进内核,无法通过卸载模块消除风险。- 业务暂时无法立即升级内核,但可以对关键服务或高风险工作负载施加沙箱限制。
- 容器平台、系统服务、CI/CD 任务等可以接受额外的系统调用约束。
该方式的核心思路是:限制进程创建 AF_ALG 类型套接字,从而阻断漏洞利用链中的关键入口。
需要注意的是,这种方式只能缓解风险,不能全局禁用 AF_ALG,因为 seccomp 仅对被施加策略的进程或服务生效。
以 sshd.service 为例,可通过 systemd 配置限制其地址族访问:
- 创建自定义配置目录
mkdir -p /etc/systemd/system/sshd.service.d- 写入覆盖配置
cat > /etc/systemd/system/sshd.service.d/override.conf <<'EOF'
[Service]
RestrictAddressFamilies=~AF_ALG
EOF重新加载并重启服务
systemctl daemon-reload systemctl restart sshd.service- 重启服务器
reboot3.2 根本修复
建议通过官方 update 源升级修复后的内核包,并在升级完成后重启系统,使运行内核切换到修复版本。
说明:
- 最终以 官方安全公告、已发布内核包以及当前运行内核版本为准。
以下以 openEuler 22.03 LTS SP4 为例,实际路径请根据当前发行版版本调整:
查看当前内核版本
uname -r
rpm -qa | grep '^kernel'更新内核软件包

yum clean all
yum makecache
yum update kernel\*如系统使用 dnf,也可执行:
dnf clean all
dnf makecache
dnf update kernel\*重启系统并确认版本
reboot系统重启后,重新执行:
uname -r
rpm -qa | grep '^kernel'确认当前运行内核已经切换到包含修复补丁的版本。
3.3 漏洞验证
出现如下结果则证明漏洞修复完成

四、其他发行版修复
- Ubuntu / Debian
sudo apt update && sudo apt upgrade -y linux-image-$(uname -r)
sudo reboot
uname -r- RHEL / AlmaLinux 9
sudo dnf install -y https://repo.almalinux.org/almalinux/9/extras/x86_64/os/Packages/almalinux-release-testing-9-1.el9.noarch.rpm
sudo dnf update kernel -y && sudo reboot
sudo dnf config-manager --disable almalinux-testing- RHEL / AlmaLinux 10
sudo dnf install -y https://repo.almalinux.org/almalinux/10/extras/x86_64/os/Packages/almalinux-release-testing-10-1.el10.x86_64.rpm
sudo dnf update kernel -y && sudo reboot
sudo dnf config-manager --disable almalinux-testing银河麒麟
参考链接
- 临时缓解措施:https://mp.weixin.qq.com/s/cFYqAUqjsbVwoNm2B4XCnw?scene=1&click_id=13
- poc 参考:https://github.com/theori-io/copy-fail-CVE-2026-31431/blob/main/copy_fail_exp.py 仅供授权环境下的安全研究与防御验证,严禁非法利用。
- 银河麒麟临时修复:: https://mp.weixin.qq.com/s/SFc55Oms2mwp7v-DEsj7ng
- poc 仓库: https://cnb.cool/sre-demo/cve-2026-31431 仅供授权环境下的安全研究与防御验证,严禁非法利用。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 运维小弟