
Bash scripts to detect and mitigate CVE-2026-31431 (Copy Fail) Linux kernel local privilege escalation via AF_ALG socket, including module disabling and seccomp configuration.
本项目提供一组 Bash 脚本,用于检测和缓解 CVE-2026-31431(又称 "Copy Fail")Linux 内核本地权限提升漏洞。
a664bf3d603d 及之后补丁该漏洞存在于 Linux 内核的 AF_ALG socket 实现中,攻击者可能通过构造特定的 authencesn 绑定操作实现本地提权。
| 文件 | 用途 | 运行权限 |
|---|---|---|
check_cve_2026_31431.sh | 漏洞影响检测与风险评估 | 普通用户或 root |
cve-2026-31431-mitigate.sh | 执行缓解措施(禁用模块、生成 seccomp 配置) | 需要 root |
bash check_cve_2026_31431.sh
脚本会逐项检查以下内容:
CONFIG_CRYPTO_USER_API_AEAD 状态algif_aead / af_alg 模块加载状态authencesn bind 验证(判断是否已缓解)最终输出综合风险等级:UNKNOWN / LOW / MEDIUM / HIGH。
注意:缓解脚本需要 root 权限运行。
sudo bash cve-2026-31431-mitigate.sh
缓解操作包括:
/etc/modprobe.d/disable-algif-aead.conf,禁止加载 algif_aead 模块algif_aead 已加载,尝试卸载(rmmod)depmod -a 更新模块依赖sudo bash cve-2026-31431-mitigate.sh --verify-only # 仅验证,不写入配置
sudo bash cve-2026-31431-mitigate.sh --write-seccomp # 额外生成 Docker seccomp 配置
sudo bash cve-2026-31431-mitigate.sh --seccomp-path /path # 指定 seccomp 输出路径
判断缓解是否生效的金标准:authencesn bind 失败。
检测脚本中的"检查项5:缓解验证(bind authencesn)"会尝试执行:
import socket
s = socket.socket(38, 5, 0) # AF_ALG
s.bind(("aead", "authencesn(hmac(sha256),cbc(aes))"))
CONFIG_CRYPTO_USER_API_AEAD=y(静态编译进内核),模块禁用方式通常无法生效,只能升级内核。algif_aead 正被占用,rmmod 可能卸载失败,建议在维护窗口重启后验证。socket(AF_ALG) 调用。a664bf3d603d 及之后补丁的官方内核版本。脚本已在以下环境测试通过:
grep, sed, lsmod, modprobe, rmmod, depmod)python3 或 python(用于 AF_ALG socket 验证)MIT License
本项目提供的脚本仅用于安全检测和临时缓解,不能替代官方内核补丁升级。使用本脚本前请充分理解其操作(如禁用内核模块),并在测试环境先行验证。作者不对因使用本工具造成的任何直接或间接损失负责。