Linux 内核
algif_aead权限提升 / 内存破坏
基于 Ansible 的审计与缓解 playbook — 可直接在生产环境运行
Copy Fail(CVE-2026-31431)是 Linux 内核 algif_aead 模块中的一个漏洞——该模块是 AF_ALG 加密套接字家族面向用户空间的 AEAD 接口。
内核在 AEAD 请求处理器内部的 copy_*user 路径中存在缺陷,允许本地非特权用户通过构造恶意套接字请求来破坏内核内存或提升权限。
| 字段 | 详情 |
|---|---|
| CVE ID | CVE-2026-31431 |
| 别名 | Copy Fail |
| 组件 | Linux 内核 — algif_aead(net/socket.c、crypto/algif_aead.c) |
| 攻击向量 | 本地 |
| 所需权限 | 低(非特权用户) |
| 影响 | 内核内存破坏 / 本地权限提升 |
| 已修补 | 上游内核补丁进行中 — 请咨询您的发行版厂商 |
如果
algif_aead未加载,且没有用户空间工具按需加载它(请参阅审计步骤 1),则系统不存在直接风险。
.
├── audit_algif_aead.yml # 步骤 1 — 审计:检测每台主机的暴露情况
├── mitigate_copyfail.yml # 步骤 2 — 缓解:卸载 + 黑名单模块
└── README.md # 本文档
community.general 集合(ansible-galaxy collection install community.general)become: true(sudo)lsof(通常默认已安装)inventory.ini 已被 gitignore — 它仅保存在本地,绝不会进入仓库。
inventory.ini.example 是已提交的模板,供所有人作为起点使用。
# 克隆并准备
git clone https://github.com/your-org/copy-fail-CVE-2026-31431.git
cd copy-fail-CVE-2026-31431
cp inventory.ini.example inventory.ini
# 使用真实主机编辑 inventory.ini,然后运行:
ansible-playbook -i inventory.ini audit_algif_aead.yml
以下路径已被 gitignore,以防止泄露基础设施数据:
在触碰任何内容之前运行审计 playbook。它会收集每台主机的证据,并在本地和每台目标主机上写入报告。
ansible-playbook -i inventory.ini audit_algif_aead.yml
报告会被拉取到 ./copyfail_reports/<hostname>_audit.txt。
| 条件 | 建议操作 |
|---|---|
| 模块未加载 | 即时风险低 — 监控内核补丁 |
| 模块已加载,无 AF_ALG 套接字用户 | 可安全应用缓解措施 |
| 模块已加载且存在活跃的 AF_ALG 用户 | 应用缓解措施前先审查进程 |
| 缓解文件已存在 | 之前已应用缓解措施 — 请验证 |
请先运行审计。 缓解 playbook 可以安全地幂等运行,但审计能为您提供证据链。
ansible-playbook -i inventory.ini mitigate_copyfail.yml
ansible-playbook -i inventory.ini mitigate_copyfail.yml \
-e '{"skip_hosts": ["db-prod-01", "hsm-node-02"]}'
/etc/modprobe.d/disable-algif.conf,内容为 install algif_aead /bin/falsealgif_aead 模块(初始防护无需重启)update-initramfs,RHEL 使用 dracut --force)/var/backup/copyfail_mitigation/mitigation.log无需重启即可从内存中移除模块。
仍建议重启以确认黑名单生效,并建立干净的缓解后状态。
playbook 完成后,在任意目标主机上验证:
# 模块不得出现
lsmod | grep algif_aead
# 黑名单文件必须存在且包含 install 行
cat /etc/modprobe.d/disable-algif.conf
# 手动加载必须被拒绝
sudo modprobe algif_aead # 预期:FATAL: Module algif_aead not found or refused
一旦您的厂商发布已修补的内核并已应用:
# 在每台主机上 — 移除黑名单
sudo rm /etc/modprobe.d/disable-algif.conf
# 重建 initramfs
sudo update-initramfs -u # Debian / Ubuntu
sudo dracut --force # RHEL / CentOS / Amazon Linux
# 重启进入已修补的内核
sudo reboot
algif_aead 源码根据 MIT 许可证 发布。
使用风险自负。在应用于生产系统之前,请务必在预发布环境中进行验证。
由社区维护。欢迎提交 PR 和问题报告。
| 发行版 | 受影响版本 | 状态 |
|---|
| Ubuntu 22.04 / 24.04 | 低于已修补版本的内核 | 补丁待发布 — 请参阅 Ubuntu USN |
| Debian 12(Bookworm) | 低于已修补版本的内核 | 补丁待发布 |
| RHEL / AlmaLinux / Rocky 8 和 9 | 低于已修补版本的内核 | 补丁待发布 |
| Amazon Linux 2 / 2023 | 低于已修补版本的内核 | 补丁待发布 |
| 通用上游 | 已编译或自动加载 algif_aead | 若模块存在则存在漏洞 |
| 子系统 | 受此 CVE 影响? | 受缓解措施影响? |
|---|
| dm-crypt / LUKS | 否 | 否 |
| kTLS | 否 | 否 |
| IPsec / StrongSwan | 否 | 否 |
| OpenSSL(默认构建) | 否 | 否 |
| GnuTLS / NSS | 否 | 否 |
| OpenSSH | 否 | 否 |
| OpenSSL afalg 引擎 | 可能受影响 | 是 — 应用前请先审查 |
kcapi-enc / kcapi-dgst 工具 | 是 | 是 |
| Gitignore 路径 | 原因 |
|---|
inventory.ini | 真实主机名 / IP |
inventories/ | 任何本地清单目录 |
copyfail_reports/ | 审计输出包含内核版本、进程列表 |
.vault_pass | Ansible Vault 密码文件 |
*.retry | Ansible 重试产物 |
| 检查项 | 命令 | 判定 |
|---|
| 内核版本 | uname -r | 仅供参考 |
| 模块是否已加载? | lsmod | grep algif_aead | 已加载 = 存在暴露风险 |
| 活跃的 AF_ALG 套接字 | lsof | grep AF_ALG | 发现用户 = 必须审查 |
| OpenSSL afalg 引擎 | openssl engine | grep afalg | 活跃 = 审查影响 |
| kcapi 工具是否存在 | which kcapi-* | 存在 = 潜在用户 |
| 缓解措施是否已应用 | stat /etc/modprobe.d/disable-algif.conf | 存在 = 已缓解 |