AF_ALG 密码学套接字接口中的逻辑漏洞,一个 732 字节的 Python 脚本即可无条件获取 root 权限。


漏洞概述

项目 内容
漏洞名称 Copy Fail(也称 CopyFail)
CVE 编号 CVE-2026-31431
漏洞类型 页缓存写入(Page-Cache Write)/ 越界写入
CWE CWE-787 — Out-of-bounds Write
CVSS 7.8(High)
发现者 Theori 团队(使用 AI 静态分析工具 Xint Code 发现)
公开时间 2026 年 4 月 29 日(披露)/ 5 月 8 日(PoC 广泛传播)
CISA KEV 已收录(2026 年 5 月 1 日加入已知被利用漏洞目录)
在野利用 ✅ 确认

影响范围

属性 内容
影响组件 Linux 内核 algif_aead 模块(AF_ALG AEAD 套接字接口)
内核引入 2017 年(commit 72548b093ee3
受影响版本 内核 4.17+,所有使用该版本范围的主流发行版
不受影响 已合入修复的内核(≥ commit a664bf3d603d
利用复杂度 — 确定性利用,无竞态条件,无需内核偏移

各发行版修复版本

发行版 修复版本
AlmaLinux 8 kernel-4.18.0-553.121.1.el8_10+
AlmaLinux 9 kernel-5.14.0-611.49.2.el9_7+
AlmaLinux 10 kernel-6.12.0-124.52.2.el10_1+
Rocky Linux 8.10 kernel-4.18.0-553.123.1.el8_10+
Rocky Linux 9.7 kernel-5.14.0-611.54.1.el9_7+
Rocky Linux 10.1 kernel-6.12.0-124.55.1.el10_1+
Proxmox VE 6.14.11-4-pve+
Linux 主线 7.0-rc7+ / commit a664bf3d603d

漏洞原理

根因

algif_aead 模块的 authencesn 模板中的一个逻辑缺陷,结合 AF_ALGsplice() 系统调用,允许无特权用户向任何可读文件的页缓存中写入 4 个受控字节

利用链

  1. 攻击者通过 AF_ALG 套接字创建一个 AEAD 密码操作上下文
  2. 使用 splice() 将目标文件(如 /usr/bin/su)的页缓存页导入管道
  3. algif_aead 的原地加密操作直接覆盖共享页缓存,未进行写时复制
  4. 4 字节的越界写入足以修改 SUID 二进制文件的校验逻辑
  5. 执行被篡改的二进制文件 → root shell

关键特性

特性 说明
可靠性 确定性 — 100% 成功率,无需竞态条件
可移植性 同一 PoC 在 Ubuntu、Amazon Linux、RHEL、SUSE 上无修改运行
隐匿性 仅修改页缓存,磁盘文件不变,文件完整性工具无法检测
逃逸能力 可跨容器边界利用(页缓存是主机级别的)
利用大小 PoC 仅为 732 字节的 Python 脚本

影响面

由于 algif_aead 通常是编译为模块(=m内置(=y,几乎所有 Linux 发行版都受影响。


缓解措施

方案一:升级内核(强烈推荐)

# Ubuntu/Debian
sudo apt update && sudo apt dist-upgrade
sudo reboot

# RHEL/CentOS/AlmaLinux/Rocky
sudo dnf update kernel
sudo reboot

# Fedora
sudo dnf upgrade --refresh kernel
sudo reboot

方案二:临时缓解 — 禁用 algif_aead 模块

当 algif_aead 为可加载模块(=m)时:

# Ubuntu/Debian 等
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null || true

当 algif_aead 为内置(=y,RHEL 系)时:

# RHEL/CentOS 等 — 通过内核命令行黑名单
sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
sudo reboot

方案三:Seccomp 阻止 AF_ALG

# 在容器或应用中通过 seccomp 阻止 AF_ALG 套接字(协议 38)

方案四:限制用户命名空间

sudo sysctl -w kernel.unprivileged_userns_clone=0

影响说明

禁用 algif_aead 不会影响以下常用功能:

  • dm-crypt / LUKS 磁盘加密
  • ✅ kTLS
  • ✅ IPsec / XFRM
  • ✅ SSH
  • ✅ OpenSSL / GnuTLS / NSS
  • ⚠️ 仅影响直接使用 AF_ALG 套接字进行 AEAD 加密的应用程序(极为罕见)

检测方法

# 检查 algif_aead 模块是否已加载
lsmod | grep algif_aead

# 检查内核版本是否在受影响范围
uname -r

# 检查日志中是否有异常利用痕迹
dmesg | grep -i "algif_aead\|AF_ALG" | tail -20

时间线

日期 事件
2026-04-01 上游修复提交(a664bf3d603d)合入主线
2026-04-29 安全研究团队公开披露漏洞细节
2026-05-01 CISA 将 CVE-2026-31431 加入已知被利用漏洞目录(KEV)
2026-05-08 PoC 广泛传播
2026-05-11 Rocky Linux 发布修复内核

参考资料