Yakovyakov/cve-2026-31431-mitigation
GitHub: Yakovyakov/cve-2026-31431-mitigation
这是一个自动化工具集,用于检测和缓解Linux内核漏洞CVE-2026-31431。
Stars: 0 | Forks: 0
# CVE-2026-31431 (Copy Fail) – 技术缓解工具
## 1. 概述
本软件包提供了一种自动化解决方案,用于在运行受影响内核(版本 4.14 至 6.12.84、6.13 至 6.18.21 等)的 Linux 系统上**检测并缓解** **CVE-2026-31431** 漏洞(又称 *Copy Fail*)。
该工具集包括:
- 一个**统一的 Bash 脚本** (`mitigate_copyfail.sh`),它:
- 运行 **Phalanx-CCS**(主动攻击面检查)和 **Silent4Labs**(风险评估)。
- 检测内核配置 (`CONFIG_CRYPTO_USER_API_AEAD=m|y`)。
- 应用适当的缓解措施:
- **可加载模块 (`=m`)**:创建 `/etc/modprobe.d/disable-algif-aead.conf`,内容为 `install algif_aead /bin/false`,并卸载模块 (`rmmod`)。
- **内置模块 (`=y`)**:添加内核引导参数 `initcall_blacklist=algif_aead_init`(需要重启)。
- 验证最终状态并提取 Silent4Labs 分数和风险等级。
- 一个 **Ansible playbook** (`mitigation.yml`),它:
- 将脚本复制到远程服务器。
- 执行缓解脚本并捕获其输出。
- 去除 ANSI 颜色代码。
- 解析最终的 Phalanx 状态和 Silent4Labs 值。
- 显示人类可读的摘要,并在控制机上保存详细日志。
## 2. 要求
### 2.1. 控制机(运行 Ansible 的机器)
- Ansible 2.9 或更高版本
- Python 3.6 或更高版本
- 具备到目标服务器的 SSH 访问权限(需设置 `become: yes`)
### 2.2. 远程服务器
- Bash 4+
- Python 3(用于 Phalanx-CCS)
- `sudo` 权限(用于应用缓解措施)
- 受影响内核(可选;如果内核已打补丁,脚本将不做任何更改)
检测脚本 (**Phalanx-CCS** 和 **Silent4Labs**) 是**安全的**,不会利用该漏洞;它们仅验证攻击面。
## 3. 仓库结构
```
cve-2026-31431-mitigation/
├── README.md
├── scripts/
│ ├── mitigate_copyfail.sh # Unified script (detection + mitigation)
│ ├── check_copyfail.py # Phalanx-CCS (reachability checker)
│ └── check-copyfail.sh # Silent4Labs (risk assessment)
├── ansible/
│ ├── ansible.cfg # (optional) Ansible configuration
│ ├── inventory.ini # Server inventory
│ └── mitigation.yml # Main playbook
└── resultados_cve/ # Auto‑generated folder for logs
```
## 4. 安装与配置
### 4.1. 克隆仓库
```
git clone https://github.com/your-username/cve-2026-31431-mitigation.git
cd cve-2026-31431-mitigation/ansible
```
### 4.2. 准备清单 (`inventory.ini`)
远程服务器的示例:
```
[servers]
server1 ansible_host=192.168.1.10 ansible_user=root
[localhost]
localhost ansible_connection=local
[all:vars]
ansible_become=yes
# ansible_become_password=我的密码 # 如果使用密码进行 sudo
```
### 4.3. 验证脚本路径
在 `mitigation.yml` 中,任务 `Copy scripts to remote` 使用 `src: "../scripts/{{ item }}"`。请确保相对路径正确,或根据您的布局进行修改。
## 5. 执行
在 `ansible/` 目录下:
```
ansible-playbook -i inventory.ini mitigation.yml -k -K
```
- `-k` 用于输入 SSH 密码。
- `-K` 用于输入 `become` (sudo) 密码。
当使用 `localhost` 且 `ansible_connection=local` 时,不需要 SSH。
### 5.1. 预期输出
Playbook 将显示类似如下的纯文本摘要:
```
==========================================
MITIGATION RESULTS
==========================================
Host: server1
------------------------------------------
- Status: SYSTEM SECURE
- Code: (not applicable)
------------------------------------------
- Final score: 40 / 100
- Risk level: MEDIUM
==========================================
```
此外,一个日志文件将保存在 `resultados_cve/_mitigation.log` 中,包含完整的脚本输出(日期、内核版本、检测消息等)。
## 6. 调试模式
如果提取的值显示为 `?` 或 `Not detected`,请在 `mitigation.yml` 中启用调试任务:
- 将三个 **DEBUG** 任务中的 `when: false` 改为 `when: true`(或设置 `when: true` 以查看 `clean_stdout` 和正则表达式输出)。
- 重新运行 playbook 并观察输出,如有需要可调整搜索模式。
## 7. 自定义
### 7.1. 更改日志目录
编辑任务 `Create local results directory` 和 `Save full output to local file`:
```
path: /absolute/path/resultados_cve
dest: "/absolute/path/resultados_cve/{{ inventory_hostname }}_mitigation.log"
```
### 7.2. 禁用脚本复制(如果已存在)
注释掉复制任务,并调整 `Run mitigation script` 任务中的路径以指向现有位置。
### 7.3. 自动清理远程脚本
将最后一个任务 (`Clean up remote scripts`) 中的 `when: false` 改为 `when: true`。
## 8. 限制与警告
- 通过**引导参数** (`initcall_blacklist`) 进行缓解**需要重启**才能生效。Playbook 不会自动重启;必须计划维护窗口。
- 在 `CONFIG_CRYPTO_USER_API_AEAD=y`(内核内置)的系统上,无法使用 `rmmod` 卸载模块;唯一的解决方法是使用引导参数。
- Silent4Labs 分数是**指示性**的;中等分数(例如,40/100)并不意味着在缓解措施激活时系统是可被利用的。
- 检测脚本可能需要特权来读取 `/proc/crypto` 和 `/boot/config-*`;它们以 `become: yes` 权限运行。
## 9. 参考资料
- [NVD 上的 CVE-2026-31431](https://nvd.nist.gov/vuln/detail/CVE-2026-31431)
- [技术分析及受影响版本](https://github.com/vyahello/CVE-2026-31431)
- [Phalanx-CCS(检测工具)](https://github.com/Phalanx-CCS/Copy-Fail)
- [Silent4Labs(风险评估)](https://github.com/Silent4Labs/check-copyfail-cve-2026-31431)
## 10. 许可证
本项目基于 **MIT** 许可证分发。第三方脚本(Phalanx-CCS、Silent4Labs)保留其各自的许可证。
[](https://github.com/yakovyakov/cve-2026-31431-mitigation/blob/main/LICENSE)
标签:0day挖掘, AES-256, Ansible, CVE修复, GPT, PB级数据处理, 内核安全, 启动参数配置, 威胁缓解, 安全运维, 应用安全, 数字取证, 模块加载控制, 漏洞管理, 漏洞缓解, 漏洞评估, 系统加固, 系统提示词, 系统配置, 网络安全, 脚本工具, 自动化脚本, 逆向工具, 隐私保护, 风险检查