euriconicacio/copy-fail-CVE-2026-31431-poc
GitHub: euriconicacio/copy-fail-CVE-2026-31431-poc
针对 CVE-2026-31431「Copy Fail」Linux 内核本地提权漏洞的高可靠概念验证,通过 algif_aead 模块缺陷对页缓存执行可控写入以获取 root 权限。
Stars: 0 | Forks: 0
# CVE-2026-31431 — Copy Fail 概念验证
本仓库包含 **CVE-2026-31431** 的概念验证漏洞利用代码。这是一个高危的 Linux 内核本地提权漏洞,允许任何非特权本地用户获取 root 访问权限。该漏洞被称为“Copy Fail”,存在于 `algif_aead` 模块中,可以与 `AF_ALG` socket 接口和 `splice()` 系统调用结合使用,对任何可读文件(例如 `setuid` 二进制文件 `/usr/bin/su`)的页缓存执行可控的 4 字节写入。
该漏洞几乎影响自 2017 年以来发布的所有 Linux 内核,包括所有主要发行版(Ubuntu、Debian、RHEL、SUSE、Amazon Linux 等)。该漏洞已于 2026 年 4 月 29 日被公开披露。目前上游已提交修复(提交记录 `a664bf3d603d`),但许多供应商仍在发布修补内核的过程中。在修复后的内核可用之前,强烈建议禁用 `algif_aead` 内核模块作为临时缓解措施。
## 概念验证文件
本仓库包含两个 PoC 实现,从不同角度演示了漏洞利用过程。
### 1. `copy-fail-poc-short.py` — 最小化版本,贴近原版
这是一个精简版本,与最初发布的 Python 漏洞利用代码非常接近。它使用单字母变量名,省略了注释或常量,使其极其紧凑(732 字节)。此变体:
- 打开 `/usr/bin/su` 和一个原始 AF_ALG AEAD socket。
- 通过 socket 以 4 字节的数据块发送解压后的 payload。
- 使用 `os.splice` 从目标文件零拷贝相应的 4 字节数据块。
- 最后执行 `/usr/bin/su` 以进入 root shell。
### 2. `copy-fail-poc.py` — 全面重构,详尽版本
这是一个完全重写、文档齐全的版本,遵循 Python 最佳实践。此变体:
- 定义了有意义的常量和辅助函数。
- 包含详细的注释,解释了攻击链的每个步骤。
- 使用专用函数(`send_data_over_crypto_socket()`)来隔离核心逻辑。
- 添加了适当的错误处理并移除了所有魔法数字。
此版本非常适合希望深入了解漏洞或对代码进行调整以供进一步研究的人员。
## 漏洞利用的工作原理
从宏观层面来看,该漏洞利用:
1. 打开目标 `setuid` 二进制文件(`/usr/bin/su`)。
2. 创建一个 `AF_ALG` AEAD socket,并使用触发逻辑缺陷所需的参数对其进行配置。
3. 将数据从打开的文件描述符拼接到 socket 中,利用零拷贝的 `splice()` 机制。
4. 由于 `algif_aead` 模块中的缺陷,内核会错误地将 4 个字节的攻击者可控数据写入目标二进制文件的页缓存中。
5. 修改 `/usr/bin/su` 内存中的页缓存实际上是在运行时修补了该二进制文件,从而允许非特权用户执行修补后的版本并获取 root shell。
该漏洞利用极其可靠(100% 成功率),不需要任何竞争窗口或针对特定内核的偏移量。
## 参考文献
- **CVE 条目:** [CVE-2026-31431](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-31431)
- **官方披露网站:** [copy.fail](https://copy.fail/)
- **Xint Code 技术分析文章:** [Copy Fail – Linux 本地提权](https://xint.io/blog/copy-fail-linux-distributions)
- **Wiz 博客分析:** [Copy.Fail:通用 Linux LPE 漏洞](https://www.wiz.io/blog/copyfail-cve-2026-31431-linux-privilege-escalation-vulnerability)
- **Linux 内核主线修复:** `a664bf3d603d` (`git.kernel.org`)
- **CERT-EU 咨询公告 (2026-005):** [Linux 内核中的高危漏洞(“Copy Fail”)](https://cert.europa.eu/publications/security-advisories/2026-005/)
标签:0day挖掘, AF_ALG, algif_aead模块, Copy Fail, CVE-2026-31431, Debian漏洞, Linux内核漏洞, PoC, Python, RHEL漏洞, Root提权, setuid, splice系统调用, Ubuntu漏洞, Web报告查看器, 内核安全, 子域名枚举, 安全渗透, 情报收集, 提权 exploit, 数据展示, 无后门, 暴力破解, 本地提权, 漏洞分析, 漏洞研究, 系统安全, 红队, 网络安全, 路径探测, 逆向工具, 隐私保护, 零拷贝, 页面缓存任意写, 高危漏洞