GubiczaP/cve-2026-31431-checker

GitHub: GubiczaP/cve-2026-31431-checker

这是一个用于检测CVE-2026-31431「Copy Fail」Linux内核本地提权漏洞的Shell扫描器。

Stars: 0 | Forks: 1

# CVE-2026-31431 "Copy Fail" — 漏洞检测脚本 一个用于检测 **CVE-2026-31431 "Copy Fail"** 的基于Shell的扫描器。该漏洞是Linux内核密码子系统(`algif_aead` / AF_ALG接口)中的一个本地提权漏洞。非特权本地用户可向一个setuid二进制文件(例如 `/usr/bin/su`)的内存页缓存写入4字节数据,并获取一个root shell——且无需修改磁盘上的文件。 - **CVSS评分:** 7.8 (高危) - **存在内核版本:** 2017年 (4.14) 起 - **上游修复提交:** [`a664bf3d603d`](https://github.com/torvalds/linux/commit/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5) - **CISA KEV:** 于2026年5月1日添加 - **更多信息:** [copy.fail](https://copy.fail) ## 支持的发行版 | 发行版 | 版本 | 已修补版本 | |---|---|---| | Debian | 11 Bullseye | `5.10.251-3` | | Debian | 12 Bookworm | `6.1.170-1` | | Debian | 13 Trixie | `6.12.85-1` | | Debian | Sid / Forky | `6.19.14-1` | | Ubuntu | 20.04 LTS Focal (GA) | `5.4.0-220.240` | | Ubuntu | 20.04 LTS Focal (HWE) | `5.15.0-135.145~20.04.1` | | Ubuntu | 22.04 LTS Jammy (GA) | `5.15.0-135.145` | | Ubuntu | 22.04 LTS Jammy (HWE) | `6.8.0-61.63~22.04.1` | | Ubuntu | 24.04 LTS Noble | `6.8.0-61.63` | | Ubuntu | 24.10 Oracular | `6.11.0-27.27` | | Ubuntu | 25.04 Plucky | `6.14.0-15.15` | | Ubuntu | 25.10 Questing | 主线修复 (≥ 6.15) | | 通用 | 任意 | 主线范围检查 (4.14 – 6.14 受影响) | 基于上述版本的Ubuntu衍生版(如Pop!_OS、Linux Mint、Elementary OS等)也可通过检查 `/etc/os-release` 中的 `ID_LIKE` 字段进行检测。 ## 检查项 | # | 检查项 | 方法 | |---|---|---| | 1 | 内核版本 | `uname -r` / `uname -v` / `dpkg` / `/proc/version_signature` | | 2 | 补丁存在性 | Debian构建版本、Ubuntu包版本、`/proc/version`中的提交前缀 | | 3 | `algif_aead` 模块 | `/proc/modules`, `modprobe.d`黑名单,磁盘上的`.ko`文件 | | 4 | AF_ALG 套接字 | 通过Python 3进行实时 `socket(AF_ALG, …)` 尝试 | | 5 | Setuid二进制文件 | 常见的setuid-root二进制文件作为写入目标 | | 6 | 缓解措施 | AppArmor, SELinux, seccomp状态 | | 7 | 内核配置 | `CONFIG_CRYPTO_AUTHENC`, `CONFIG_CRYPTO_USER_API_AEAD` | | 8 | 用户命名空间 | `unprivileged_userns_clone`, `max_user_namespaces` | | 9 | 透明大页 | THP设置及其对漏洞利用的影响 | | 10 | 环境 | Docker / Kubernetes / WSL检测,root用户警告 | ## 使用方法 ``` # 基本扫描 bash cve-2026-31431-detect.sh # 无颜色输出(日志文件,CI) bash cve-2026-31431-detect.sh --no-colour # JSON 输出(机器可读,用于流水线) bash cve-2026-31431-detect.sh --json # 静默模式 — 仅打印摘要 bash cve-2026-31431-detect.sh --quiet # 合并标志 bash cve-2026-31431-detect.sh --json --quiet ``` 无需root权限。除标准shell(`bash` ≥ 4.3)外无需安装任何包,可选用`python3`进行实时AF_ALG套接字测试。 ## 退出码 | 代码 | 含义 | |---|---| | `0` | 未发现漏洞条件 | | `1` | 发现一个或多个漏洞条件 | | `2` | 脚本错误 / 无法完成检查 | 专为DevSecOps流程设计——可将JSON输出管道传输至您的SIEM、工单系统或合规性仪表板。 ## 输出 脚本以两种语言打印结果: - **英文** — 包含状态、风险分解和逐步修复说明的完整详细摘要 - **匈牙利语 (Magyar)** — 内容与英文完全相同的匈牙利语版本 在各项检查结果之后,这两个部分都会打印到标准输出。 ### 示例(干净系统) ``` === Kernel Version === [INFO] Distro flavour : ubuntu (id=ubuntu, codename=jammy, version=22.04) [INFO] Kernel release : 5.15.0-135-generic [OK] Kernel version Reason : Ubuntu jammy: kernel 5.15.0-135.145 >= patched version 5.15.0-135.145 ... ✅ PROTECTED — SYSTEM IS NOT VULNERABLE ``` ### 示例(受影响系统) ``` ❌ VULNERABLE — IMMEDIATE ACTION REQUIRED ✗ Kernel version ✗ Patch presence ✗ algif_aead module ✗ AF_ALG socket ✗ Setuid binaries ``` ## 修复方案 ### Debian ``` sudo apt update && sudo apt full-upgrade && sudo reboot # 重启后:uname -v → 必须显示 >= 6.1.170-1(Bookworm) ``` ### Ubuntu ``` sudo apt update && sudo apt full-upgrade && sudo reboot # 重启后:cat /proc/version_signature ``` ### 临时缓解措施(如果无法立即更新内核) 仅当 `CONFIG_CRYPTO_USER_API_AEAD=m`(编译为模块)时有效。若该选项已编译进内核(`=y`),则**无效**。 ``` echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif-aead.conf sudo rmmod algif_aead 2>/dev/null || true ``` 这**不会**影响SSH、dm-crypt/LUKS、OpenSSL、GnuTLS、NSS、Web服务器或磁盘加密。 ## 重要提示 - 该脚本**不会**执行任何漏洞利用代码——仅进行配置和版本检查。 - Copy Fail**仅限本地提权**——无法通过互联网进行远程利用。 - 该漏洞修改的是**内存中的页缓存**;磁盘上的文件不会被触及,因此文件完整性工具(如AIDE、Tripwire等)**无法**检测到活跃攻击。 - 重启会清除页缓存,但漏洞依然存在——**打补丁是唯一的永久修复方案**。 - 以root身份运行脚本可能会导致AF_ALG套接字检查出现假阴性(root用户始终可以打开AF_ALG套接字)。 ## 参考 - Debian安全跟踪器: https://security-tracker.debian.org/tracker/CVE-2026-31431 - Ubuntu安全: https://ubuntu.com/security/CVE-2026-31431 - Ubuntu USN-7523-1: https://ubuntu.com/security/notices/USN-7523-1 - 上游修复: https://github.com/torvalds/linux/commit/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5 - 漏洞详情: https://copy.fail - 原始检测脚本: https://github.com/liamromanis101/CVE-2026-31431-Copy-Fail---Vulnerability-Detection-Script ## 许可证 MIT
标签:0day挖掘, AF_ALG, algif_aead, Awesome, Cutter, CVE-2026-31431, Debian, JSON 输出, Linux 内核, osquery, setuid, Shell 脚本, URL发现, 内核安全, 内核模块, 加密子系统, 安全检测, 安全资源, 应用安全, 本地权限提升, 权限提升漏洞, 系统漏洞, 系统管理, 缓解措施, 补丁检查, 运维安全, 逆向工具, 页面缓存