sbeteta42/CVE-2026-31431_je_sappelle_RoOt
GitHub: sbeteta42/CVE-2026-31431_je_sappelle_RoOt
CVE-2026-31431 漏洞的修复与加固指南,涵盖检测方法、临时缓解措施和事件响应流程,帮助运维和安全团队应对 Linux 内核本地提权风险。
Stars: 0 | Forks: 0
# CVE-2026-31431 - 复制失败 - Je s'appelle ROOT !#




## 📌 本仓库目的
本仓库记录了名为 **Copy Fail** 的 **CVE-2026-31431** 漏洞,并为可能受影响的 Linux 系统提供了**防御性修复**程序。
## 1. 概述
**CVE-2026-31431 / Copy Fail** 是 Linux 内核中的一个本地权限提升漏洞。
该漏洞涉及内核的加密子系统,特别是 **AF_ALG** 用户空间接口和 **`algif_aead`** 模块。此漏洞源于 2017 年引入到 Linux 内核 AEAD 路径的一项优化。在特定条件下,无特权的本地用户可以在可读文件(例如 setuid 二进制文件)的 **page cache**(页缓存)中触发可控写入,这可能导致将权限提升至 `root`。
该漏洞被评为 **High(高危)** 级别,**CVSS v3.1** 评分为 **7.8**。
## 2. CVE 信息
| 元素 | 详情 |
|---|---|
| CVE | CVE-2026-31431 |
| 公开名称 | Copy Fail |
| 类型 | 本地权限提升, LPE |
| 组件 | Linux kernel crypto subsystem |
| 受影响模块 | `algif_aead` |
| 接口 | `AF_ALG` |
| 涉及机制 | AEAD, `authencesn`, `splice()`, page cache |
| CVSS v3.1 评分 | 7.8 High |
| 所需权限 | 非特权本地账户 |
| 用户交互 | 无 |
| 影响 | 机密性、完整性和可用性受到严重影响 |
## 3. 受影响的系统
公开资料表明,如果 Linux 发行版使用了自 2017 年引入该优化以来存在漏洞的内核分支,则可能会受到影响。
公开资料中提及的受测平台示例:
| 发行版 | 经公开测试的内核版本示例 |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |
| Debian | 视内核版本和安全状态而定 |
| AlmaLinux / Rocky Linux / Oracle Linux | 视内核版本及供应商反向移植情况而定 |
## 4. 为什么该漏洞是关键漏洞
在不可信用户或工作负载具有本地 shell 访问权限或共享执行环境的情况下,此漏洞尤其危险。
需要优先处理的环境:
- 多用户服务器;
- 有多个账户访问的 SSH 服务器;
- 培训或实验平台;
- CI/CD runner;
- 构建服务器;
- Kubernetes 集群;
- 容器宿主机;
- 共享平台;
- 多租户云环境。
主要风险:
- 本地提权至 `root`;
- 宿主机被入侵;
- 由于修改可能通过 page cache 驻留在内存中,因此可部分绕过磁盘完整性检查;
- 对共享同一宿主机内核的容器产生潜在影响。
## 5. 快速检查
### 5.1 识别内核版本
```
uname -a
uname -r
```
### 5.2 检查 algif_aead 模块是否已加载
```
lsmod | grep algif_aead || true
```
### 5.3 检查是否使用了 AF_ALG 套接字
```
sudo lsof -nP | grep AF_ALG || true
```
### 5.4 识别已安装的内核软件包
#### Debian / Ubuntu
```
dpkg -l | grep -E '^ii\\s+linux-image|^ii\\s+linux-modules'
```
#### RHEL / Rocky / AlmaLinux / Fedora
```
rpm -qa | grep -E '^kernel|^kernel-core'
```
#### SUSE
```
rpm -qa | grep -E '^kernel'
```
## 6. 建议的修复方案
首选方案:应用供应商提供的内核补丁
正确的修复方法是安装发行版提供的已修复内核,然后重新引导至该内核。
### Debian / Ubuntu
```
sudo apt update
sudo apt full-upgrade -y
sudo reboot
```
### RHEL / Rocky / AlmaLinux / Oracle Linux
```
sudo dnf update -y kernel kernel-core kernel-modules
sudo reboot
```
### SUSE
```
sudo zypper refresh
sudo zypper patch
sudo reboot
# 重启后:
uname -r
```
- 然后在发行版的安全追踪器中检查状态。
## 7. 临时缓解措施
如果尚未提供修复后的内核,或者无法立即重启,请应用临时缓解措施。
## 7.1 禁用加载 algif_aead
```
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
```
## 7.2 如果模块已加载,请卸载该模块
```
sudo modprobe -r algif_aead 2>/dev/null || true
sudo rmmod algif_aead 2>/dev/null || true
```
## 7.3 如有必要,更新 initramfs
### Debian / Ubuntu
```
sudo update-initramfs -u
```
### RHEL / Rocky / AlmaLinux / Oracle Linux
```
sudo dracut -f
```
### SUSE
```
sudo mkinitrd
```
## 7.4 重启
```
sudo reboot
```
## 7.5 验证模块无法再被加载
```
sudo modprobe algif_aead
echo $?
```
- 预期结果:加载操作应当失败。
## 8. 特殊情况:模块被硬编译到内核中
在某些内核中,该模块可能被直接编译进内核,而不是以可加载/可卸载模块的形式存在。
- 指示性检查:
```
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)
```
- 可能的结果:
```
CONFIG_CRYPTO_USER_API_AEAD=m
```
该组件是一个模块。通过 /etc/modprobe.d/ 进行的缓解措施适用。
```
CONFIG_CRYPTO_USER_API_AEAD=y
```
该组件被集成到了内核中。通过 modprobe.d 进行的缓解措施无效。
在这种情况下,最好使用:
- 修复后的内核;
- 供应商提供的 livepatch(如果可用);
- 供应商记录的引导选项。
某些资料提到了以下内核选项可作为可能的临时解决方案:
```
initcall_blacklist=algif_aead_init
```
在全面推广之前,必须在非生产环境中进行严格测试。此选项可能因内核、发行版和引导配置的不同而有所差异。
## 9. 容器化环境的加固
对于 Docker、Podman、Kubernetes 和 CI/CD,必须降低不可信工作负载打开 AF_ALG 套接字的可能性。
### 建议措施:
- 在宿主机节点上应用内核补丁;
- 尽可能通过 seccomp 阻止或限制 AF_ALG;
- 避免使用特权工作负载;
- 除绝对必要外,禁止使用 `privileged: true` 容器;
- 启用 AppArmor、SELinux 或等效机制;
- 隔离运行不可信代码的 CI/CD runner;
- 为敏感工作负载提供专用的节点。
## 10. 检测与监控
### 10.1 检查 AF_ALG 的使用情况
```
sudo lsof -nP | grep AF_ALG || true
```
### 10.2 检查已加载的模块
```
lsmod | grep algif_aead || true
```
### 10.3 监控关键的 setuid 二进制文件
```
find / -perm -4000 -type f 2>/dev/null
```
### 10.4 监控对 /usr/bin/su 的可疑访问
```
sudo ausearch -f /usr/bin/su 2>/dev/null || true
```
### 10.5 auditd 规则示例
```
sudo auditctl -w /usr/bin/su -p x -k su_exec_monitoring
```
- 然后查阅:
```
sudo ausearch -k su_exec_monitoring
```
## 11. 事件响应行动计划
### 如果怀疑遭到利用:
- 将机器从网络隔离;
- 保留日志;
- 重启以清除 page cache;
- 检查系统完整性;
- 检查本地账户;
- 检查近期新增的 SSH 密钥;
- 检查 cron 和 systemd 任务;
- 轮换密码和机密信息;
- 应用修复后的内核;
- 重启并验证当前运行的版本;
- 仅在检查通过后将机器重新接入网络。
### 有用的命令:
```
last -a
lastlog
getent passwd
sudo find /etc/cron* -type f -ls 2>/dev/null
sudo find /root /home -name authorized_keys -type f -ls 2>/dev/null
sudo journalctl --since "48 hours ago"
```
## 12. 修复检查清单
- 盘点受影响的 Linux 机器。
- 识别内核版本。
- 检查供应商的安全公告。
- 优先处理多用户服务器、CI/CD、Kubernetes 和容器环境。
- 应用供应商提供的内核补丁。
- 重启至修复后的内核。
- 如果补丁尚未发布,请应用临时缓解措施。
- 在容器环境中阻止或限制 AF_ALG。
- 监控对 setuid 二进制文件的访问。
- 检查权限提升的痕迹。
- 记录所执行的操作。
## 13. 防御性缓解脚本示例
```
#!/usr/bin/env bash
set -euo pipefail
echo "[+] CVE-2026-31431 - mitigation temporaire algif_aead"
if [[ $EUID -ne 0 ]]; then
echo "[-] Ce script doit être exécuté en root."
exit 1
fi
echo "[+] Version noyau active : $(uname -r)"
echo "[+] Désactivation persistante du chargement algif_aead"
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
echo "[+] Tentative de déchargement du module"
modprobe -r algif_aead 2>/dev/null || true
rmmod algif_aead 2>/dev/null || true
if command -v update-initramfs >/dev/null 2>&1; then
echo "[+] Mise à jour initramfs Debian/Ubuntu"
update-initramfs -u
elif command -v dracut >/dev/null 2>&1; then
echo "[+] Mise à jour initramfs via dracut"
dracut -f
elif command -v mkinitrd >/dev/null 2>&1; then
echo "[+] Mise à jour initramfs via mkinitrd"
mkinitrd
else
echo "[!] Aucun outil initramfs connu détecté. Vérifiez manuellement."
fi
echo "[+] Vérification"
lsmod | grep algif_aead && echo "[!] Module encore chargé" || echo "[OK] Module non chargé"
echo "[+] Redémarrage recommandé."
```
## 14. 缓解措施的局限性
- 通过禁用 algif_aead 模块进行的缓解只是一种临时的变通方案。
它不能替代:
- 安装修复后的内核;
- 重启至修复后的内核;
- 验证供应商的安全状态;
- 如果怀疑遭到入侵,进行事后分析。
- 它还可能影响某些显式配置为使用 AF_ALG 加密接口的软件。
## 15. 参考资料
Theori / Xint Code — Copy Fail 技术白皮书
https://xint.io/blog/copy-fail-linux-distributions
Theori PoC GitHub 仓库
https://github.com/theori-io/copy-fail-CVE-2026-31431
NVD — CVE-2026-31431
https://nvd.nist.gov/vuln/detail/CVE-2026-31431
CERT-EU — 安全公告 2026-005
https://cert.europa.eu/publications/security-advisories/2026-005/
Ubuntu 安全 — CVE-2026-31431
https://ubuntu.com/security/CVE-2026-31431
Debian 安全追踪器 — CVE-2026-31431
https://security-tracker.debian.org/tracker/CVE-2026-31431
SUSE CVE 追踪器 — CVE-2026-31431
https://www.suse.com/security/cve/CVE-2026-31431.html
Tenable 常见问题解答 — Copy Fail
https://www.tenable.com/blog/copy-fail-cve-2026-31431-frequently-asked-questions-about-linux-kernel-privilege-escalation
## 16. 法律免责声明
本仓库仅出于以下目的提供:
- 教学目的;
- 防御目的;
- 经授权的审计;
- 修复目的;
- 系统加固。
任何未经授权的攻击性使用都是非法的,并且违背了本仓库的初衷。
标签:0day挖掘, AF_ALG, algif_aead, Copy Fail, CVE-2026-31431, CVSS 7.8, Linux Kernel, Linux漏洞, LPE, Page Cache, Patch补丁, setuid, Web报告查看器, 内核安全, 子域名突变, 安全基线, 密码学子系统, 应用安全, 教学环境, 本地权限提升, 漏洞修复, 漏洞分析, 系统加固, 网络安全, 网络安全培训, 请求拦截, 路径探测, 防御指南, 隐私保护, 页面缓存, 高危漏洞