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 !# ![CVE](https://img.shields.io/badge/CVE-2026--31431-red) ![Type](https://img.shields.io/badge/Type-Local%20Privilege%20Escalation-orange) ![Platform](https://img.shields.io/badge/Platform-Linux-blue) ![Status](https://img.shields.io/badge/Focus-Remediation%20%2F%20Hardening-green) ## 📌 本仓库目的 本仓库记录了名为 **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报告查看器, 内核安全, 子域名突变, 安全基线, 密码学子系统, 应用安全, 教学环境, 本地权限提升, 漏洞修复, 漏洞分析, 系统加固, 网络安全, 网络安全培训, 请求拦截, 路径探测, 防御指南, 隐私保护, 页面缓存, 高危漏洞