Phalanx-CCS/Copy-Fail
GitHub: Phalanx-CCS/Copy-Fail
一个纯 Python 标准库的轻量脚本,用于被动检测 Linux 内核是否暴露于 CVE-2026-31431「Copy Fail」本地提权漏洞的攻击面。
Stars: 0 | Forks: 0
# CVE-2026-31431 – "Copy Fail" 可达性检查工具
一个简单、安全的 Python 脚本,用于检测 Linux 系统是否易受 **CVE-2026-31431**("Copy Fail")攻击。这是一种本地提权漏洞,自 kernel 4.14 以来影响着所有主要发行版。
## ⚠️ 什么是 Copy Fail?
CVE-2026-31431 是 Linux 内核 `algif_aead` 加密 socket 模块中的一个直接的逻辑错误。通过结合使用 `AF_ALG` socket 和 `splice()`,无特权的攻击者可以覆盖 setuid 二进制文件页面缓存中的 4 个字节,从而获取 root 权限。
| 属性 | 详情 |
|---|---|
| 需要竞态条件 | ❌ 否 – 漏洞利用是确定性的 |
| 需要内核偏移量 | ❌ 否 – 不需要特定版本的偏移量 |
| 漏洞利用复杂度 | 只需一个 732 字节的 Python 脚本即可获取 root 权限 |
| 本检查工具 | 仅为被动诊断 – **不会**触发该漏洞 |
## 🔍 本检查工具的工作原理
该脚本尝试使用该漏洞所依赖的确切算法模板来创建并绑定 `AF_ALG` socket:
```
authencesn(hmac(sha256),cbc(aes))
```
| 结果 | 含义 |
|---|---|
| Socket 创建并绑定成功 | 易受攻击的代码路径**可达** – 请立即打补丁 |
| `EAFNOSUPPORT` (errno 97) | 模块未加载 – 攻击面**不可用** |
| `Permission denied` | MAC 策略(SELinux/AppArmor)阻止了访问 – **安全** |
该脚本**不会**以任何方式触发该漏洞。它完全是被动且安全运行的。
## 📦 环境要求
- **Python 3**(仅限标准库 – 无需外部模块)
- Linux 内核(此检查在其他平台上无意义)
- **无需 root 权限**
## 🚀 用法
克隆仓库或下载 `check_copyfail.py`,然后运行:
```
python3 check_copyfail.py
```
### 示例输出
```
____ _____ _ _
/ ___|___ _ __ _ _| ___|_ _(_) |
| | / _ \| '_ \| | | | |_ / _` | | |
| |__| (_) | |_) | |_| | _| (_| | | |
\____\___/| .__/ \__, |_| \__,_|_|_|
|_| |___/
CVE-2026-31431 "Copy Fail" – Reachability Checker
Phalanx CCS / d_0_4 | Defensive use only
-------------------------------------------------------
Kernel release: 6.1.0-28-amd64
Version range : Potentially affected range
AF_ALG target : authencesn(hmac(sha256),cbc(aes))
[!!!] VULNERABLE ATTACK SURFACE REACHABLE
Socket created and bound – AF_ALG reachable
Immediate mitigation:
echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null
Then update your kernel as soon as patches are available.
Upstream fix: commit a664bf3d603d
```
如果攻击面可达,脚本将以代码 **`1`** 退出;如果系统安全,则以 **`0`** 退出——这使其适合在 shell 脚本、Ansible playbook 和 CI 流水线中使用。
## 🛡️ 立即缓解措施
在内核更新可用之前,请禁用易受攻击的模块:
```
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null
```
官方修复补丁是主线内核中的 commit **`a664bf3d603d`**。请尽快通过您的发行版包管理器应用可用补丁进行更新。
## 📱 Android / Termux 注意事项
本检查工具在现代 Android 设备(包括 Termux)上将始终报告为安全。由于强制 SELinux 策略,无特权的应用程序无法使用 `AF_ALG` socket,因此该漏洞在标准 Android 构建版本上不可利用。
## 📜 许可证
本项目基于 **MIT License** 授权 – 详见 [`LICENSE`](LICENSE)。欢迎自由使用、修改和分发。
标签:af_alg, algif_aead, AppArmor, Copy Fail, CVE-2026-31431, Linux内核漏洞, POC验证, Python3, SELinux, setuid, splice, Web报告查看器, 协议分析, 反取证, 可达性检查, 安全检测脚本, 安全渗透, 安全评估, 本地提权, 权限提升, 消息认证码, 网络安全, 隐私保护, 页面缓存