SunL0w/PATCH-CVE-2026-31431-Ubuntu_Debian
GitHub: SunL0w/PATCH-CVE-2026-31431-Ubuntu_Debian
针对 Linux 内核 CVE-2026-31431 漏洞的持久化缓解脚本,通过黑名单机制阻断 algif_aead 模块加载以防止本地提权攻击。
Stars: 1 | Forks: 0
# 🛡️ CVE-2026-31431 (Copy Fail) 缓解措施 - Linux 内核
本仓库包含旨在消除 Ubuntu 系统上严重漏洞 **CVE-2026-31431**(绰号 **"Copy Fail"**)的脚本。
## 📋 前置条件与安装
在应用补丁之前,请下载官方检测脚本(由 `rootsecdev` 开发)以验证您系统的当前状态:
```
# 下载 detection script
wget https://raw.githubusercontent.com/rootsecdev/cve_2026_31431/main/test_cve_2026_31431.py
# 确保你已安装 python3
python3 --version
```
## 📝 漏洞背景
**CVE-2026-31431** 漏洞($CVSS\ 7.8$)影响 Linux 内核的加密子系统(`algif_aead` 模块)。
### 问题所在
本地用户可以通过利用 `splice()` 函数“原地”优化中的缺陷来破坏系统的 **Page Cache**。这允许攻击者强制内核将任意数据(序列号)写入本应为只读的文件内存页中(例如 SUID 二进制文件或敏感系统文件)。
### 为什么简单的 `modprobe -r` 是不够的
Linux 内核使用一种称为 **自动加载** 的机制。如果进程或脚本(如检测器)请求类型为 `AF_ALG` 的 socket,即使该模块已被手动移除,内核也会自动重新加载它。此补丁中使用的方法(**“硬阻断”**)从物理上阻止内核加载模块二进制文件。
## 🚀 用法
### 1. 验证漏洞
运行测试程序以确认您的当前内核是否受影响:
```
python3 test_cve_2026_31431.py
```
*如果脚本显示 `[!] VULNERABLE`,请继续执行下一步。*
### 2. 应用缓解措施
`patch-CVE-2026-31431.sh` 脚本可永久消除此攻击媒介。它会在 `/etc/modprobe.d/` 中创建一个配置文件,并更新 `initramfs` 以确保重启后阻断依然有效。
```
chmod +x patch-CVE-2026-31431.sh
sudo ./patch-CVE-2026-31431.sh
```
### 3. 补丁后验证
再次运行检测脚本。您现在应该会看到一条提示先决条件未满足的信息:
`[+] Precondition not met ('authencesn(...) cannot be instantiated)`。
这确认模块已被**成功消除**。
## 🔄 恢复(更新后)
一旦 Ubuntu 通过内核更新发布了官方修复(请检查 `apt upgrade` 中关于 CVE-2026-31431 的说明),您应恢复原生的加密功能:
```
chmod +x unpatch-CVE-2026-31431.sh
sudo ./unpatch-CVE-2026-31431.sh
```
## 🛠️ 技术细节
此防护依赖于 `/etc/modprobe.d/cve-2026-31431-mitigation.conf` 中的以下指令:
```
blacklist algif_aead
install algif_aead /bin/true
```
`install` 命令将内核加载模块的尝试重定向到 `/bin/true`,该命令会返回一个“成功”的退出代码,而不会执行任何存在漏洞的代码。
## 补丁由以下人员制作:
标签:AF_ALG, CVE-2026-31431, initramfs, Linux内核, modprobe, Python, Shell脚本, splice系统调用, SUID, sysadmin, Web报告查看器, 内存破坏, 协议分析, 子域名枚举, 安全补丁, 密码学子系统, 应用安全, 无后门, 本地提权, 权限提升, 模块禁用, 漏洞缓解, 系统安全, 网络安全, 防护脚本, 隐私保护, 页面缓存