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报告查看器, 协议分析, 反取证, 可达性检查, 安全检测脚本, 安全渗透, 安全评估, 本地提权, 权限提升, 消息认证码, 网络安全, 隐私保护, 页面缓存