文章总结: CVE-2026-31431(代号CopyFail)是Linux内核authencesn加密模板中的高危本地提权漏洞,CVSS评分7.8。该漏洞利用内核in-place解密优化缺陷,通过AFALG接口向页缓存写入4字节可控数据,无需竞争条件即可100%稳定提权,影响2017年至今所有主流Linux发行版。文档详细分析了漏洞原理、利用链、信创系统风险,并提供了修复补丁、临时禁用algifaead模块及容器环境seccomp过滤等缓解方案。 综合评分: 92 文章分类: 漏洞分析,应急响应,红队,内网渗透,云安全
【紧急预警】Copy Fail:CVE-2026-31431 Linux内核本地提权漏洞深度解析
原创
Z0安全 Z0安全
Z0安全
2026年4月30日 14:38 山东
在小说阅读器读本章
去阅读
1 漏洞简介
2026年4月29日,安全研究团队 Theori(通过 Xint Code)公开披露 CVE-2026-31431 漏洞,代号“Copy Fail”。这是一枚存在于 Linux 内核 authencesn 加密模板中的高危本地提权漏洞,CVSS 评分 7.8,攻击复杂度低,无需竞争条件、无需特定内核版本偏移,一个仅 732 字节的 Python PoC 即可在受影响系统上稳定获取 root 权限。
与近年来曝光的 Dirty Cow、Dirty Pipe 等内核提权漏洞不同,Copy Fail 的利用路径呈现”直线型”特征——没有复杂的时序依赖,没有版本特定的内存布局要求,成功率 100%。攻击者只需向系统上任意可读文件的页缓存写入 4 个可控字节,即可劫持 setuid 二进制程序的执行流程。
| | |
| — | — |
| CVE编号 | CVE-2026-31431 |
| 漏洞代号 | Copy Fail |
| CVSS评分 | 7.8(高危)① |
| 攻击向量 | 本地(AV:L) |
| 攻击复杂度 | 低(AC:L) |
| 权限要求 | 低权限(PR:L) |
| 漏洞类型 | 本地权限提升(LPE) |
| 影响内核 | 2017年至今(含 5.x / 6.x 全系列) |
| 漏洞引入commit | 72548b093ee3 |
| 修复commit | a664bf3d603d |
① Ubuntu 安全页面评分为 7.8,Amazon Linux 评分为 5.5,存在评分差异。多租户、容器环境建议按高危处理。
这个漏洞的特殊之处在于其“逻辑缺陷”而非传统意义的内存破坏。攻击者并非通过溢出或 UAF 控制内存,而是巧妙利用了内核加密子系统的一个 in-place 优化,诱导内核在页缓存中写入未经适当授权验证的数据。
2 漏洞原理与影响范围
漏洞根因分析
2017年,内核 crypto 子系统为优化 AEAD(认证加密)性能,在 algif_aead.c 中引入了一项改进(commit 72548b093ee3):将解密操作改为 in-place 执行,即直接在目标缓冲区就地完成加解密。这个优化看似无害,却为攻击者打开了一扇侧门。
正常的 out-of-place 加密流程中,密文从用户空间读取,解密后的明文写入独立的缓冲区,两者物理隔离。但 in-place 优化后,代码将 TX SGL 中的 AAD 和密文数据复制到 RX 缓冲区,同时通过 sg_chain() 将 tag 页链式引用——而非复制——到目标 scatterlist。随后 req->src = req->dst 这行代码让解密操作作用在同一个 scatterlist 上。
问题在于:来自 splice() 的页缓存页面现在处于可写的目标 scatterlist 中。当 authencesn 在解密时,会在 dst[assoclen + cryptlen] 位置写入 4 字节的 ESN seqno_lo,这笔写入跨越了原本的数据边界,进入了链式连接的页缓存 tag 页。
关键点:这个写入发生在 HMAC 标签验证之前。即使解密操作因认证失败返回 -EBADMSG,这 4 字节的恶意写入已经持久存在于页缓存中。
攻击链全貌
攻击者控制能力
| | | | — | — | | 目标文件 | 任意可读文件(通过 splice 指定) | | 写入偏移 | 通过 splice 偏移和参数精确控制 | | 写入内容 | 来自 AAD 的 4 字节可控数据 | | 写入时机 | HMAC 验证之前,不受完整性保护 |
与同类漏洞对比
| 漏洞特性 | Dirty Cow | Dirty Pipe | Copy Fail | | — | — | — | — | | 发布年份 | 2016 | 2022 | 2026 | | 利用方式 | 竞争条件写 | Pipe 缓冲区溢出 | In-place 加密缺陷 | | 成功率 | 需多次尝试 | 相对稳定 | 100% | | 影响版本 | 2.6.22+ | 5.8+ | 2017年至今全版本 | | 复杂度 | 高 | 中 | 极低 | | 是否需竞争 | 需要 | 不需要 | 不需要 | | 磁盘痕迹 | 有 | 有 | 无 |
影响范围
自 2017 年引入该优化以来,所有主流 Linux 发行版默认配置均受影响。研究团队已直接验证以下发行版存在漏洞:
-
Ubuntu 24.04 LTS
-
Amazon Linux 2023
-
RHEL
(含 RHEL 8/9/10)
-
SUSE
同样受影响的发行版还包括 Debian、Arch、Fedora、Rocky、AlmaLinux、Oracle Linux 等。实测表明,内核 5.x 和 6.x 版本均可成功利用。
跨容器影响
页缓存在主机层面共享,这意味着 Copy Fail 不仅是本地提权漏洞,还是潜在的容器逃逸原语和 Kubernetes 节点攻击向量。在多租户容器环境中,一个低权限容器的恶意用户可以利用此漏洞修改宿主机上的 setuid 二进制文件,进而控制整个节点。
隐蔽性分析
这个漏洞的检测难度极高,原因有三:
-
绕过 VFS 写入路径
:篡改发生在内核加密子系统的内部操作,不经过标准文件写入接口,不会触发常规的文件监控
-
不修改磁盘数据
:页缓存中的修改不会同步到磁盘,
stat、md5sum等工具检查的是磁盘文件,传统检测和恢复工具完全失效 -
重启自愈
:系统重启或页缓存被驱逐后,文件从磁盘重新加载,攻击痕迹自动消失
这种”只改内存不改磁盘”的特性,使得基于校验和的完整性监控完全失效,也解释了为什么这个存在近 9 年的漏洞直到今天才被发现。
3 漏洞复现
⚠️ 免责声明:以下内容仅供授权环境下的安全研究与防御验证。未经授权利用此漏洞攻击他人系统属于违法行为。
PoC 获取
# GitHub 仓库(仅供安全研究)
https://github.com/theori-io/copy-fail-CVE-2026-31431
利用流程解析
整个利用过程分为五个阶段:
第一阶段:建立加密上下文
创建 AF_ALG socket,绑定 authencesn 加密模板并设置密钥。这一步利用了 AF_ALG 接口的标准权限特性——任何无特权用户都可以创建 authencesn socket,无需 root 权限。
第二阶段:页缓存注入
通过 splice() 系统调用将目标文件(通常是 /usr/bin/su)的页缓存导入到 TX buffer,然后利用 sendmsg 将精心构造的 AAD 和密文数据发送给内核。关键在于 AAD 的前 4 字节包含攻击者可控的数据。
第三阶段:触发写入
调用 recv() 触发解密操作。内核执行 in-place 解密时,会在用户控制的偏移处写入 4 字节。这 4 字节的写入发生在 HMAC 验证之前,因此即使认证失败,页缓存已被篡改。
第四阶段:迭代覆盖
重复第二、三步骤多次,每次写入 4 字节,逐步将完整的 shellcode 注入到 su 二进制文件的特定位置。现代 x86-64 调用约定下,shellcode 只需覆盖 su 的 main 函数入口几条指令即可完成权限提升。
第五阶段:执行提权
调用 execve("/usr/bin/su"),内核从页缓存加载被篡改的二进制文件。su 作为 setuid-root 程序,当它执行攻击者植入的 shellcode 时,运行在 UID 0 的上下文中。
# 复现效果示意
$ python3 copy_fail_exp.py
[*] exploit completed successfully
$ id
uid=0(root) gid=1000(test) groups=1000(test)
整个过程在数秒内完成,无需 root 权限,不需要重启服务,不依赖特定的系统状态。
4 信创系统影响分析
覆盖范围评估
信创系统基于 Linux 内核构建,几乎全部使用 2017 年之后(即引入该漏洞优化)的内核版本。主流信创操作系统受影响情况如下:
| 操作系统 | 内核版本 | 是否受影响 | | — | — | — | | 银河麒麟桌面 V10 SP1 | 5.4 / 5.10 / 5.15 | 受影响 | | 银河麒麟服务器 OS | 5.10+(基于 openEuler) | 受影响 | | 统信 UOS | 5.10 | 受影响 | | openEuler | 5.10+ | 受影响 |
结论:信创系统使用的内核版本均在漏洞引入时间之后,且 AF_ALG 在默认配置中启用,因此所有主流信创操作系统均受此漏洞影响。
信创环境的特殊性
-
部署场景敏感
:信创系统广泛应用于政务、金融、能源等关键基础设施,这些场景往往是高级威胁行为者的重点目标
-
多用户共享内核
:信创 OS 多部署于服务器和桌面共享场景,本地用户提权风险直接威胁整体安全边界
-
容器化部署增加暴露面
:信创云平台大量采用容器技术,Copy Fail 的容器逃逸能力在这些环境中尤为危险
-
补丁更新周期长
:相比社区发行版,信创 OS 的补丁发布和推送流程更为复杂,可能存在较长的暴露窗口
建议信创系统管理员立即查询厂商安全通告,同时检查当前内核版本和 AF_ALG 模块状态。
5 修复与临时缓解方案
主线内核修复
Linux 内核安全团队已于 2026 年 4 月 1 日将修复补丁合入主线。修复方案通过 commit a664bf3d603d 恢复 algif_aead 的 out-of-place 操作模式,消除了 in-place 优化引入的页缓存写入路径。
修复状态:各主流发行版已发布或正在发布安全更新,具体修复版本请查询各发行版安全通告。
建议各发行版用户通过系统包管理器执行全面更新:
# Ubuntu / Debian
sudo apt update && sudo apt upgrade
# RHEL / CentOS / Rocky / AlmaLinux
sudo dnf update
# SUSE
sudo zypper patch
临时缓解措施
对于暂时无法应用内核更新的系统,可通过禁用 algif_aead 模块实现缓解:
# 创建黑名单配置
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
# 尝试卸载模块(如正在使用需重启)
sudo rmmod algif_aead 2>/dev/null || true
# 验证模块已卸载
lsmod | grep algif_aead
禁用影响评估
| 场景 | 是否受影响 | 说明 | | — | — | — | | dm-crypt/LUKS 磁盘加密 | 不受影响 | 使用内核 crypto API 的独立实现 | | IPsec/XFRM 网络层加密 | 不受影响 | 独立加密路径 | | 内核 TLS (kTLS) | 不受影响 | 独立实现 | | OpenSSL / GnuTLS / NSS | 不受影响 | 用户态实现 | | SSH / GPG | 不受影响 | 不走 AF_ALG | | 内核密钥环加密 | 不受影响 | 独立实现 |
可能受影响的场景:
- 显式启用 AF_ALG 引擎的 OpenSSL 构建
- 直接绑定 aead socket 的嵌入式应用
- 部分硬件加密卸载路径
影响范围排查
如需确认系统是否有应用依赖 AF_ALG,可执行以下命令:
# 检查是否有进程使用 AF_ALG
lsof 2>/dev/null | grep AF_ALG
# 或使用 ss 命令
ss -xa | grep alg
# 快速验证系统是否可创建 AF_ALG socket(输出 VULNERABLE 则存在风险)
python3 -c "import socket; socket.socket(38,5,0); print('VULNERABLE')"
如果上述命令无输出(最后一行无输出表示 socket 创建被阻止),说明系统未使用 AF_ALG 接口,禁用 algif_aead 模块是安全的。
容器环境特殊建议
对于运行不可信工作负载的容器环境(沙箱、CI/CD、多租户 Pod),无论内核补丁状态如何,建议通过 seccomp filter 阻止 AF_ALG socket 创建,从根本上消除攻击面:
{
"syscalls": [{
"names": ["socket"],
"args": [{"index": 0, "value": 38, "op": "SCMP_CMP_EQ"}],
"action": "SCMP_ACT_ERRNO"
}]
}
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Z0安全 Z0安全 Z0安全《【紧急预警】Copy Fail:CVE-2026-31431 Linux内核本地提权漏洞深度解析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论