本工具包为运行受影响内核(版本 4.14 至 6.12.84、6.13 至 6.18.21 等)的 Linux 系统提供自动化解决方案,用于 检测并缓解 CVE-2026-31431 漏洞(又名 Copy Fail)。
该工具集包含:
mitigate_copyfail.sh),它能够:
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(需要重启)。mitigation.yml),它能够:
重要提示: 此缓解措施为临时性。永久修复方案是将内核升级至包含补丁
a664bf3d603d的版本(≥6.18.22、≥6.19.12 或 ≥7.0)。
become: yes)sudo 权限(用于应用缓解措施)检测脚本(Phalanx-CCS 和 Silent4Labs)是安全的,不会利用漏洞;它们仅用于验证攻击面。
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
git clone https://github.com/your-username/cve-2026-31431-mitigation.git
cd cve-2026-31431-mitigation/ansible
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=my_password # if using password for sudo
在 mitigation.yml 中,任务 Copy scripts to remote 使用了 src: "../scripts/{{ item }}"。请确保相对路径正确,或者根据您的目录结构进行修改。
在 ansible/ 目录下运行:
ansible-playbook -i inventory.ini mitigation.yml -k -K
-k 询问 SSH 密码。-K 询问 become(sudo)密码。当使用 localhost 且设置 ansible_connection=local 时,无需 SSH。
剧本会显示类似以下的纯文本摘要:
==========================================
MITIGATION RESULTS
==========================================
Host: server1
------------------------------------------
- Status: SYSTEM SECURE
- Code: (not applicable)
------------------------------------------
- Final score: 40 / 100
- Risk level: MEDIUM
==========================================
此外,日志文件会保存在 resultados_cve/<hostname>_mitigation.log 中,包含完整的脚本输出(日期、内核版本、检测信息等)。
若提取的值显示 ? 或 Not detected,请启用 mitigation.yml 中的调试任务:
when: false 改为 when: true(或设置 when: true 以查看 clean_stdout 和正则表达式输出)。编辑任务 Create local results directory 和 Save full output to local file:
path: /absolute/path/resultados_cve
dest: "/absolute/path/resultados_cve/{{ inventory_hostname }}_mitigation.log"
注释掉复制任务,并在 Run mitigation script 任务中调整路径,指向现有位置。
将最后一个任务(Clean up remote scripts)中的 when: false 改为 when: true。
initcall_blacklist)进行的缓解需要重启才能生效。剧本不会自动重启,需要计划维护窗口。CONFIG_CRYPTO_USER_API_AEAD=y(内核内置)的系统上,无法通过 rmmod 卸载模块;唯一的方法是使用启动参数。/proc/crypto 和 /boot/config-*;它们通过 become: yes 运行。本项目采用 MIT 许可证发布。第三方脚本(Phalanx-CCS、Silent4Labs)保留其各自的许可证。
如果您觉得此工具实用,请在 GitHub 上为我们点星!