xeloxa/copyfail-exploit
GitHub: xeloxa/copyfail-exploit
针对 Linux 内核 AF_ALG 页缓存漏洞 CVE-2026-31431 的多架构本地提权利用工具,确定性执行、跨发行版通用,无需竞争条件或内核偏移信息。
Stars: 4 | Forks: 1
# 复制失败 · CVE-2026-31431
影响从 4.11 到(但不包括)已修补的 6.18 版本的 Linux 内核的本地权限提升漏洞。
该漏洞存在于内核的 AF_ALG socket 接口中——具体来说,是 `authencesn` 在就地 AEAD 解密期间处理 scatter-gather 列表的方式。导致的结果是:无特权的用户可以覆盖_任何可读文件的页缓存_中的 4 个字节。
用 shellcode 覆盖一个诸如 `/usr/bin/su` 的 setuid 二进制文件,运行它,你就能获得 root 权限。无需竞争、无需内核符号、无需重新编译。相同的 172 字节的 AArch64 payload(或 x86-64 的 160 字节,i386 的 126 字节,ARMv7 的 138 字节)可跨发行版通用。
该漏洞由 **Taeyang Lee & Theori / Xint Code** 发现,并于 2026 年 4 月 29 日发布。本仓库是一个独立的、基于类的重新实现,旨在用于授权测试。
## 演示
| 检查漏洞 | 利用并获取 root 权限 |
| :---: | :---: |
|  |  |
## 为什么它与 Dirty Cow / Dirty Pipe 不同
- **无需竞争。** 一次命中,确定性执行。
- **无需特定内核偏移量。** 脚本不关心你使用的是什么发行版。
- **可能实现容器逃逸。** 页缓存与宿主机共享;一个具有 `allowPrivilegeEscalation: true`(Kubernetes 默认值)的容器可以突破出去。
## 受影响的系统
任何运行内核版本介于 4.11 和大约 6.17.x 之间的系统,包括:
- Ubuntu 24.04 LTS(搭载 6.17.x)
- Amazon Linux 2023(修补 6.18.x 之前的版本)
- RHEL 10.1, SUSE 16 (6.12.x)
- 安全更新之前的 Debian Trixie(6.12.85+deb13 修复了此问题)
已修补的内核:主线版本 ≥ 6.18.22 / 6.19.12 / 7.0,以及向稳定分支的后向移植。
## 快速开始
```
# 检查系统是否存在漏洞
python3 exploit.py --check
# 运行 exploit(需要非 root 用户)
python3 exploit.py
```
## 系统要求
- Python 3.6+(原生 `os.splice` 从 3.10 开始支持)
- 支持 AF_ALG + `authencesn(hmac(sha256),cbc(aes))` 的内核
- 一个 setuid-root 二进制文件(默认为 `/usr/bin/su`;使用 `--scan` 寻找替代项)
如果检查提示算法相关的报错,请加载所需的模块:
```
sudo modprobe algif_aead authencesn hmac cbc
```
某些发行版附带了一个临时阻止文件(`/etc/modprobe.d/disable-algif_aead.conf`)。该脚本在以 root 身份运行时会自动将其删除,或者你也可以手动删除它。
## 缓解措施
**永久方案:** 更新你的内核。在 Ubuntu/Debian 上:
```
sudo apt update && sudo apt upgrade linux-image-generic
```
**临时解决方案(不影响 IPsec/XFRM):**
```
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null
```
**容器:**
主要的缓解措施是使用 seccomp profile 阻止 AF_ALG socket。此外,在你的 pod 安全上下文中设置 `allowPrivilegeEscalation: false` 以启用 `no_new_privs`,这将阻止内核在执行 `execve()` 时遵循 setuid 位。
## 参考资料
- [官方网站 - copy.fail](https://copy.fail)
- [技术分析 - Xint.io](https://xint.io/blog/copy-fail-linux-distributions)
- [原始 PoC - theori-io](https://github.com/theori-io/copy-fail-CVE-2026-31431)
- [内核修复提交](https://github.com/torvalds/linux/commit/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5)
- [CVE 条目 - NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-31431)
- [oss-security 披露](https://www.openwall.com/lists/oss-security/2026/05/02/6)
## 致谢
- **Taeyang Lee & Theori / Xint Code** – 漏洞发现与原始 PoC
- **ZephrFish** – 多架构 shellcode 扩展
- **本仓库** – 独立的 OOP 重新实现,自动移除临时阻止文件,系统扫描,测试和文档编写
## 免责声明
本工具仅用于教育和授权安全测试。请勿在你未拥有或未获得书面测试许可的系统上运行它。
标签:0day挖掘, AArch64, AEAD加密, AF_ALG, ARMv7, CSV导出, CVE-2026-31431, Dirty Cow, Dirty Pipe, Hakrawler, Linux内核, LPE, Python, SetUID, Shellcode, Web报告查看器, x86-64, 内存覆写, 内核安全, 协议分析, 安全渗透, 容器逃逸, 技术调研, 数据展示, 无后门, 本地提权, 权限提升, 漏洞复现, 红队, 网络安全, 脏页缓存, 跨架构, 逆向工具, 隐私保护