liamromanis101/CVE-2026-31431-Copy-Fail---Vulnerability-Detection-Script
GitHub: liamromanis101/CVE-2026-31431-Copy-Fail---Vulnerability-Detection-Script
针对 CVE-2026-31431 Linux 内核本地提权漏洞的纯检测脚本,以非特权用户视角通过七项深度检查帮助运维和安全人员精确判断系统风险状态。
Stars: 1 | Forks: 0
# CVE-2026-31431-Copy-Fail---漏洞检测脚本
仅用于检测... - 这里已经有一个可用的 PoC:https://copy.fail/#exploit)
本脚本专为系统管理员设计,旨在帮助确认系统存在漏洞的具体位置,或打补丁后是否仍存在漏洞。
## 这究竟是怎么回事?
2026 年 4 月 29 日,Xint Code Research Team 公开披露了一个名为 **Copy Fail** 的漏洞(CVE-2026-31431)。这是一个自 **2017** 年起就一直潜伏在 Linux 内核中的逻辑漏洞——近十年之久——它允许任何非特权本地用户获取 root 权限。
这不是“在特定条件下,靠点运气和顺风车才能获取 root 权限”。而是直接……获取 root。非常可靠。基本上适用于所有主流 Linux 发行版。
它会影响 Ubuntu、Amazon Linux、RHEL、SUSE,以及在过去约 8 年内运行主流内核的任何其他系统。同一个脚本,无需重新编译,也无需针对特定发行版进行调整。
是的,情况听起来就是这么糟糕。
## 原理简述
Linux 内核具有一个加密子系统,非特权用户可以通过 `AF_ALG` 套接字访问它。有一种名为 `splice()` 的机制,可以将文件数据直接送入该子系统而无需复制——这意味着内核内存中缓存的文件副本(即“页缓存”)最终会参与到加密操作中。
一个特定的算法——`authencesn`,用于 IPsec 扩展序列号——有一个怪癖,它会将输出缓冲区用作暂存空间,并写入超出其预期位置 4 个字节。通常这并无大碍。但是,当来自 `/usr/bin/su` 等 setuid 二进制文件的页缓存被链接到该输出缓冲区时(这得益于 2017 年在 `algif_aead.c` 中的一次“优化”),这 4 个字节就会直接写入内核缓存中的该二进制文件副本中。
该操作会失败并返回错误。内核永远不会将该页标记为已修改(dirty)。磁盘上的文件原封不动。检查磁盘校验和的文件完整性工具看不出任何异常。
但被执行的却是页缓存中的内容。而且 `su` 具有 setuid root 权限。
完整的技术分析文章在 [xint.io](https://xint.io/blog/copy-fail-linux-distributions),如果你对这类事情感兴趣,非常值得一读。
## 此脚本的功能
它会检查你的系统是否存在使漏洞利用成为可能的条件,并*具体*告诉你为什么存在漏洞——而不仅仅是给出“是/否”的答案。
七项检查:
| 检查项 | 检查内容 |
|---|---|
| **内核版本** | 当前内核是否在受影响范围内(4.10–6.14)? |
| **补丁状态** | 修复提交是否已包含在当前运行的内核中? |
| **algif_aead 模块** | 受影响的模块是否已加载或可被加载? |
| **AF_ALG 套接字** | 非特权用户当前能否打开它? |
| **Python os.splice** | 纯 Python 的漏洞利用路径是否可用? |
| **Setuid 二进制文件** | 是否存在可读的 setuid-root 目标? |
| **缓解措施** | 当前采取了哪些 AppArmor、SELinux、seccomp 防护措施? |
它不会修复任何东西。也不会利用任何东西。它只是如实反映你的系统状态,以便你采取相应措施。
## 环境要求
- Python 3.6+
- 无外部依赖——仅使用标准库
- 无需 root 权限(这是刻意为之——我们正在检查的是非特权攻击者能看到的内容)
## 用法
```
# 克隆或下载脚本,然后:
python3 cve_2026_31431_detect.py
```
就是这样。它将打印一份带有颜色编码的报告,并在最后提供摘要。
### 输出示例
```
CVE-2026-31431 'Copy Fail' — Vulnerability Detection
authencesn page cache corruption / local privilege escalation
Running as uid=1001, euid=1001
=== Kernel Version ===
[VULNERABLE] Kernel version
Reason : Kernel is in the vulnerable range (4.10 – 6.14)
Detail : Release: 6.12.0-124.45.1.el10_1 — patch status must be confirmed
=== algif_aead Module ===
[VULNERABLE] algif_aead module
Reason : Module is not loaded but will auto-load on AF_ALG bind() — no blacklist found
...
SYSTEM IS LIKELY VULNERABLE TO CVE-2026-31431
Recommended actions:
1. Apply your distribution's kernel update for CVE-2026-31431
2. Until patched, blacklist the module:
echo 'install algif_aead /bin/false' > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null
```
## 修复建议
**真正的修复方法是给内核打补丁。** 请查看你所使用发行版的安全公告——它们现在应该都在发布修复程序了。
| 发行版 | 查阅位置 |
|---|---|
| Ubuntu | [ubuntu.com/security/CVE-2026-31431](https://ubuntu.com/security) |
| RHEL / Amazon Linux | `dnf update kernel` |
| SUSE | `zypper update kernel-default` |
| Debian | `apt update && apt upgrade` |
**在等待补丁发布期间**(或者如果你需要立即采取临时阻断措施),你可以将受影响的内核模块加入黑名单:
```
echo 'install algif_aead /bin/false' > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null
```
这会阻止 `algif_aead` 加载,从而阻断漏洞利用路径。如果你正在使用 IPsec,这可能会产生影响——建议在全面部署之前进行检查。
**上游修复方案**见[此提交](https://github.com/torvalds/linux/commit/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5)——它还原了 `algif_aead.c` 中 2017 年引入的就地 AEAD 优化,将源和目标分散列表(scatterlists)分离开来,从而使得页缓存页面不再进入可写的目标区域。
## 关于范围的一点说明
此脚本仅用于**检测**。它不会尝试利用任何漏洞,不会修改你的系统(除了读取 `/proc` 和其他一些只读接口),并且除了报告之外不会产生任何输出。
它专供内部安全团队进行漏洞评估使用(属于良性检查脚本,而非恶意漏洞利用代码),不可用于其他目的。你知道自己属于哪一类 :P。
## 漏洞披露时间线
| 日期 | 事件 |
|---|---|
| 2026-03-23 | 报告给 Linux 内核安全团队 |
| 2026-03-24 | 获得确认 |
| 2026-03-25 | 提出补丁并进行审查 |
| 2026-04-01 | 修复提交至主线内核 |
| 2026-04-22 | 分配 CVE-2026-31431 |
| 2026-04-29 | 公开披露 |
感谢 Theori 的 Taeyang Lee 提供的原始研究见解,以及 Xint Code Research Team 发布的完整披露文章。
## 参与贡献
发现了误报?有脚本遗漏的发行版?或者有需要检查的内核配置?欢迎提交 PR。我们的目标是提供准确的信号,而不是吓人的红色警告文本。
## 免责声明
本工具按“原样”提供,仅供防御性安全目的使用。请仅在您获得授权评估的系统上使用。请勿用于不当用途。
标签:AF_ALG, Copy Fail, Crypto Subsystem, CVE-2026-31431, Linux内核漏洞, LPE, PB级数据处理, POC, Root提权, SetUID, Web报告查看器, 内存页缓存, 协议分析, 安全测试, 安全渗透, 安全运维, 攻击性安全, 本地提权, 权限提升, 漏洞复现, 系统管理员工具, 网络安全, 隐私保护