Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cve-2026-31431-ansible — Ansible playbook,用于在 Debian/Ubuntu/RHEL 主机群中检测并应用针对 CVE-2026-31431(Copy Fail)的内核命令行缓解措施,支持只读检测与幂等应用。 | Kitploit
工具/GitHubGitHub/aestechno/cve-2026-31431-ansible
云基础设施安全漏洞扫描器配置审计DevSecOps
GitHubaestechno/cve-2026-31431-ansible

cve-2026-31431-ansible

Ansible playbook,用于在 Debian/Ubuntu/RHEL 主机群中检测并应用针对 CVE-2026-31431(Copy Fail)的内核命令行缓解措施,支持只读检测与幂等应用。

查看仓库
33个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-31431(“Copy Fail”)— Ansible 缓解方案

CI

使用 Ansible 在 Debian / Ubuntu / RHEL 系列主机群中检测并应用针对 CVE-2026-31431(“Copy Fail”)的内核命令行缓解措施。

该 CVE 是 Linux 内核 algif_aead AF_ALG 接口中的一个本地权限提升漏洞。任何非特权本地用户——包括 www-data、mysql 等服务账户,或已被 RCE 的 Web 应用中的进程——都可以通过几次系统调用将其串联为 root 权限。该漏洞影响自 2017 年以来发布的所有主流发行版。

本方案的功能

  • 检测哪些主机缺少缓解措施。默认只读。
  • 应用通用缓解措施——在内核命令行中追加 initcall_blacklist=algif_aead_init——当使用 -e apply_mitigation=true 调用时。
  • 绝不自动重启。 重启由操作员决定。

内核命令行黑名单在内置(RHEL 系列)和模块化(Debian/Ubuntu)配置上均有效,而经常被引用的 modprobe blacklist algif_aead 变通方案则不具备此效果。

缓解措施的工作原理

algif_aead_init() 是内核在启动时向加密套接字子系统注册 aead AF_ALG 算法的内核函数。命令行参数 initcall_blacklist=algif_aead_init 指示内核跳过该 initcall。易受攻击的代码仍存在于内核二进制文件中,但 socket(AF_ALG, ..., "aead") 会返回 ENOENT,因此漏洞利用的第一次系统调用就会失败。没有可触达的攻击面,就没有权限提升。

一旦厂商发布修补后的内核并且您重启进入这些内核,该缓解措施就不再需要,可以移除。

快速开始

root@kitploit:~
# 1. 检测(只读)——生成每台主机的状态报告
ansible-playbook -i inventory check_cve_2026_31431.yml

# 2. 先在单台主机上暂存缓解措施(不自动重启)
ansible-playbook -i inventory --limit <ip-or-host> \
  -e apply_mitigation=true check_cve_2026_31431.yml

# 3. 通过您常用的机制重启该主机

# 4. 重新检测;确认“缓解措施已生效:是”

# 5. 分批推广到其余主机群

易受攻击主机的报告如下所示:

root@kitploit:~
═══════════════════════════════════════════
主机:               192.168.1.42
发行版:             Ubuntu 24.04
内核:               6.8.0-60-generic
缓解措施已生效:  否
缓解措施已暂存:  否
═══════════════════════════════════════════
⚠️  192.168.1.42:CVE-2026-31431 缓解措施未生效。

在修补内核发布后回滚

不在本方案范围内。手动单行命令:

root@kitploit:~
# Debian / Ubuntu
sudo sed -i 's/ initcall_blacklist=algif_aead_init//' /etc/default/grub
sudo update-grub
sudo reboot

# RHEL 系列
sudo grubby --update-kernel=ALL --remove-args="initcall_blacklist=algif_aead_init"
sudo reboot

不会失败的行为

检测路径严格只读(uname、读取 /proc/cmdline、读取 /etc/default/grub、grubby --info=ALL)。探测使用 failed_when: false,因此意外输出绝不会中止 play。ignore_unreachable: true 意味着无法访问的主机会得到明确的“UNREACHABLE — 视为易受攻击”警告,而不是导致运行失败。

应用路径包裹在 block/rescue 中,因此单台故障主机绝不会阻止其余主机。grub 编辑是幂等的,并以 mitigation_staged 为门控条件,因此重复运行是无操作。

测试

root@kitploit:~
bash tests/run-checks.sh all

阶段:lint(yamllint + ansible-lint)→ syntax(ansible-playbook --syntax-check)→ dry-run(以 --check 模式配合 -c local 对 localhost 执行 playbook,涵盖检测和应用两条路径)。同一脚本由 GitHub Actions 矩阵在每次推送和拉取请求时于 debian:12、ubuntu:22.04、ubuntu:24.04 和 almalinux:9 容器中调用。

dry-run 不验证的内容:

  • 它不会修改 grub、运行 update-grub 或触发重启。
  • CI 容器内的 /proc/cmdline 显示的是运行器主机的命令行,而非容器的命令行,因此 CI 输出中的 mitigation_active 没有意义。CI 证明 playbook 运行干净;它并不证明主机已得到缓解。

更多信息请参阅 tests/README.md。

来源

  • Help Net Security — CVE-2026-31431
  • CloudLinux — 缓解措施与已修补内核版本
  • Ubuntu — CVE-2026-31431
  • Debian 安全跟踪器 — CVE-2026-31431
  • Tenable 常见问题 — Copy Fail
  • CERT-EU SA 2026-005

致谢

漏洞由 Taeyang Lee (Theori) 发现,并由 Xint Code Research Team 武器化为完整的漏洞利用链,他们值得感谢,因为正是他们让安全社区对此予以关注。本方案只是将他们所推荐的缓解措施自动化。

许可证

Beerware。参见 LICENSE。简而言之:您可以随意使用本内容;如果我们有缘相见,请给我买杯啤酒。

维护者

AESTECHNO — Hugues Orgitello — 电子设计公司,法国蒙彼利埃。

下载工具