grabesec/XCP_ng_CVE-2026-31431_tester

GitHub: grabesec/XCP_ng_CVE-2026-31431_tester

针对 XCP-ng 8.3 LTS 的 CVE-2026-31431「Copy Fail」Linux 内核本地提权漏洞的轻量级非破坏性检测脚本,帮助运维和安全团队安全地验证系统是否存在该漏洞。

Stars: 0 | Forks: 0

# CVE-2026-31431 "Copy Fail" — XCP-ng 实验室检测器 一个针对 CVE-2026-31431("Copy Fail")的安全、非破坏性检测脚本,已在 2026 年 5 月 5 日安全更新发布前的 **XCP-ng 8.3 LTS** 上通过验证。 ## 背景 CVE-2026-31431,被称为 "Copy Fail",是 Linux 内核的 `algif_aead` 加密接口中的一个本地特权升级 (LPE) 漏洞。`authencesn` 模板(于 2017 年引入)中的一个逻辑缺陷,允许无特权的本地用户对任何可读文件的内核页缓存执行受控的 4 字节写入,从而实现到 root 的特权升级。 - **CVSS 3.1:** 7.8 (高危) - **受影响的内核:** 4.14 到 6.18.21,6.19.12 之前的 6.19.x 版本 - **引入时间:** Linux 内核 4.14 (2017) - **披露时间:** 2026 年 4 月 29 日,由 Taeyang Lee / Theori (Xint Code) 披露 - **上游修复:** 由 Herbert Xu 提交的 commit `a664bf3d603d` ### 为什么这对 XCP-ng 很重要 XCP-ng 的 Dom0 控制域运行在 Linux 内核之上,并且是虚拟机监控程序的管理层。任何拥有 Dom0 shell 访问权限的无特权用户——包括为 CI/CD 流水线、监控代理、备份工具或自动化创建的服务账号——都可以利用此漏洞获取 root 权限。一旦 Dom0 拥有了 root 权限,该主机上的所有客户虚拟机都将被攻陷。 默认的 XCP-ng 安装暴露面极小,因为很少有进程以非 root 用户身份运行。随着操作员出于合法目的添加服务账号而不限制 shell 访问权限,真正的风险会随着时间推移而累积。 审计您的 Dom0 服务账号: ``` awk -F: '$7 ~ /bash|sh/' /etc/passwd ``` ## 此脚本的功能 这是一个**实验室检测器**,而不是特权升级工具。它会执行以下操作: - 在临时目录中创建一个属于运行用户的临时标记文件 - 尝试针对该文件触发 `algif_aead` / `authencesn` 页缓存暂存写入原语 - 报告是否检测到页缓存损坏(确认漏洞) - 在退出时清理所有临时文件 **系统二进制文件、`/etc/passwd` 及其他系统文件永远不会被触及。** 页缓存损坏仅存在于内存中——不会有任何内容被写回磁盘。 ## 要求 - Python 3.10+(`os.splice` 所需) - 仅需标准库——不需要 pip 安装 - 在运行有漏洞内核的 Dom0 上拥有非 root 用户 shell ## 使用方法 ``` python3 xcp_ng_cve_2026_31431_tester.py ``` ### 退出代码 | 代码 | 含义 | |------|---------| | `0` | 未观察到损坏——系统可能已修补或 `algif_aead` 已被禁用 | | `1` | 触发错误——`algif_aead` 可能不可用或被阻止 | | `2` | **有漏洞**——已确认页缓存损坏 | ## XCP-ng 补丁状态 | 日期 | 事件 | |------|-------| | 2026 年 4 月 29 日 | CVE-2026-31431 公开披露 | | 2026 年 5 月 4 日 | VATES 发布 VSA-2026-013 | | 2026 年 5 月 5 日 | XCP-ng 8.3 LTS 5 月安全更新发布——内核修复可用 | ### 应用修复 更新您的 XCP-ng 主机并重启: ``` yum update reboot ``` 重启后,验证是否正在运行更新后的内核: ``` uname -r ``` 修补后重新运行此检测脚本。已修补的系统将返回退出代码 `1`(触发错误),因为有漏洞的 `authencesn` 模板已不再可用。 ## 检查内核配置 在应用缓解措施之前,确认 `algif_aead` 是作为模块编译(`=m`)还是内置到内核中(`=y`): ``` grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r) ``` - `=m` — 基于模块;modprobe 黑名单将起作用 - `=y` — 内置到内核中;modprobe 黑名单将**静默失败**且不提供任何保护 对于 `=y` 的 RHEL 系列内核,请改用 grubby 引导参数: ``` grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init" reboot ``` ## 参考 - [VSA-2026-013 — VATES 安全公告](https://docs.vates.tech/security/advisories/2026/vates-sa-2026-013) - [XCP-ng 2026 年 5 月安全更新](https://xcp-ng.org/blog/2026/05/05/april-2026-security-and-maintenance-updates-for-xcp-ng-8-3-lts-2/) - [Copy Fail — Xint/Theori 技术分析报告](https://xint.io/blog/copy-fail-linux-distributions) - [copy.fail — 官方披露页面](https://copy.fail) - [CVE-2026-31431 — NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-31431) - [上游内核修复 — commit a664bf3d603d](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a664bf3d603d) - [rootsecdev 的原始检测器](https://github.com/rootsecdev/cve_2026_31431/blob/main/test_cve_2026_31431.py) ## 许可证 此脚本是 rootsecdev 原始作品的修改衍生版本。在重新分发之前,请验证上游仓库的许可证,并确保您的使用符合其条款。
标签:algif_aead, authencesn, CVE-2026-31431, CVSS 7.8, Dom0安全, Hypervisor安全, Linux内核漏洞, LPE, Shell脚本, Web报告查看器, XCP-ng, 加密, 协议分析, 安全渗透, 无损检测, 本地提权, 权限提升, 漏洞扫描器, 红队评估, 网络安全, 虚拟化安全, 隐私保护, 页缓存任意写, 页面缓存