gagaltotal/CVE-2026-43284-CVE-2026-43500-scan
GitHub: gagaltotal/CVE-2026-43284-CVE-2026-43500-scan
针对 Linux 内核 DirtyFrag 本地提权漏洞(CVE-2026-43284/CVE-2026-43500)的自动化 SSH 批量扫描与缓解工具,支持并行审计、智能提权检测和一键模块黑名单修复。
Stars: 0 | Forks: 0
# DirtyFrag 扫描器与补丁工具
## 针对 CVE-2026-43284 与 CVE-2026-43500 的内网工具
### 通过 SSH 自动化 Linux LPE 审计与缓解
**免责声明**:本工具专为合法的内部安全审计而设计。对非本人所有的系统进行未经授权的使用属于违规行为。由 **Gagaltotal666 - GhostGTR666** 开发。
## 目录
- [CVE 背景](#-latar-belakang-cve)
- [主要功能](#-fitur-utama)
- [安装与要求](#-instalasi--persyaratan)
- [使用方法](#-cara-penggunaan)
- [命令选项](#-opsi-perintah)
- [缓解机制与身份验证](#-mekanisme-mitigasi--otentikasi)
- [缓解过程](#-proses-mitigasi)
- [输出示例](#-contoh-output)
- [导出 JSON 报告](#-export-laporan-json)
- [故障排除](#-pemecahan-masalah)
- [实际应用场景示例](#-contoh-real-world-scenarios)
## CVE 背景
本工具用于识别和缓解 Linux 内核中的两个**本地提权 (LPE)** 漏洞:
### **CVE-2026-43284 (xfrm-ESP 页面缓存写入)**
- **esp4** 和 **esp6** 模块中的漏洞,允许任意写入 page-cache
- 上游补丁已在 **≥ 6.15** 内核中提供(提交 `f4c50a4034e6`,日期 2026-05-05)
- 发行版的后向移植补丁可能滞后或尚未提供
- 缓解措施:通过 `/etc/modprobe.d/` 将模块加入黑名单
### **CVE-2026-43500 (RxRPC 页面缓存写入)**
- **rxrpc** 模块中存在的类似漏洞
- 截至目前(2026 年 5 月)**尚无上游补丁**
- 唯一可用的缓解措施:将模块加入黑名单
- 上游补丁仍处于审核阶段
## 主要功能
| 功能 | 描述 |
|-------|-----------|
| **多主机扫描** | 并行扫描整个子网 (CIDR) 或特定 IP 列表 |
| **TCP Ping 发现** | 在 SSH 连接前自动检测存活主机(可通过 `--skip-discovery` 跳过) |
| **深度审计** | 分析内核版本、模块状态、上游补丁、权限级别 |
| **漏洞评估** | 自动分类状态:VULNERABLE、MITIGATED、LIKELY_PATCHED、POSSIBLY_SAFE、MODULE_NOT_LOADED |
| **自动缓解** | 使用一次 `--patch` 即可完成黑名单模块、卸载模块和清除 page-cache |
| **零干预 Sudo 注入** | 通过 `sudo -S` 自动注入密码 — 无需配置 NOPASSWD |
| **智能权限检测** | 自动检测提权方式(root、sudo NOPASSWD、带密码的 sudo) |
| **CLI 验证** | 预检拼写错误,验证 SSH 密钥文件(防止伪造的 `known_hosts`) |
| **并行执行** | 用于扫描和 SSH 操作的线程池(默认 20 个 worker) |
| **JSON 报告** | 将完整的审计结果导出为 JSON 格式 |
| **美化输出** | 彩色输出 + PrettyTable 摘要(如果缺少依赖库则自动回退到基础输出) |
| **信号处理** | 通过 SIGINT/SIGTERM 实现优雅关机 |
## 安装与要求
### **依赖要求**
```
Python 3.8 atau lebih tinggi
Library: paramiko, colorama, prettytable
```
### **虚拟环境 (VENV)**
```
python3 -m venv .venv
source .venv/bin/activate
```
### **安装步骤**
```
# Clone repository
git clone https://github.com/gagaltotal/dirtyfrag-scanner.git
cd dirtyfrag-scanner
# Install dependencies
pip install -r requirements.txt
# 或
pip install paramiko colorama prettytable
```
## 使用方法

### **1. 常规扫描(仅审计,无补丁)**
检测漏洞,不对目标服务器进行任何更改。
```
# 使用 Password
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user ghostgtr666 --password 'server@02!'
# 使用 SSH Key
python3 dirtyfrag_scanner.py --subnet 10.134.205.0/24 --user root --key ~/.ssh/id_rsa
# 使用两者(如果 key 失败则回退到 password)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --key ~/.ssh/id_rsa
# Scan IP Spesifik (tanpa discovery)
python3 dirtyfrag_scanner.py --hosts 192.168.1.10,192.168.1.20 --user admin --password 'pass'
```
### **2. 扫描与修补(自动缓解)**
执行审计并立即在存在漏洞的服务器上应用缓解措施。
```
# Patch 使用 Password (AUTO-INJEK SUDO, TANPA PERLU NOPASSWD)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user ghostgtr666 --password 'server@02!' --patch
# Patch 使用 Root Login
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --patch
# Patch 使用 custom workers (faster scanning)
python3 dirtyfrag_scanner.py --subnet 192.168.0.0/16 --user admin --password 'pass' --patch --workers 50
```
## 命令选项
### **目标选择**(必填,选择其一)
```
--subnet CIDR Scan CIDR subnet (e.g., 192.168.1.0/24)
--hosts IP[,IP,...] Scan IP spesifik (comma-separated, no spaces)
```
### **身份验证**(至少需要其中一项)
```
--user USERNAME SSH username (required)
--password PASSWORD SSH password (gunakan quotes jika ada special chars)
--key PATH Path ke SSH private key (e.g., ~/.ssh/id_rsa, bukan known_hosts!)
```
### **连接**
```
--port PORT Custom SSH port (default: 22)
--timeout SECONDS SSH connect timeout (default: 10, max: 300)
--skip-discovery Skip TCP ping discovery, langsung SSH ke semua IP
```
### **执行**
```
--workers NUM Jumlah parallel SSH workers (default: 20, min: 1, max: 100)
--patch Apply mitigation pada host vulnerable
--output FILE Simpan hasil audit ke JSON file
```
## 缓解机制与身份验证
本工具旨在无需修改 sudoers 即可在各种 SSH 服务器环境中运行:
### **提权方式**(自动检测)
1. **直接使用 Root(推荐)**
--user root --key ~/.ssh/id_rsa --patch
- 直接执行命令,无需 sudo
- 最快且最可靠
2. **Sudo NOPASSWD**
--user ubuntu --key ~/.ssh/id_rsa --patch
- 要求:`/etc/sudoers` 已配置 `NOPASSWD`
- 工具将自动检测并使用 `sudo -n`
3. **带密码注入的 Sudo**(零干预) ⭐
--user ubuntu --password 'mypass' --patch
- 适用于标准 `/etc/sudoers: ALL=(ALL) ALL` 配置
- 工具通过 `sudo -S -p ''` 自动注入密码
- **完全不需要编辑 sudoers!**
4. **混合模式(密钥 + 密码)**
--user ubuntu --key ~/.ssh/id_rsa --password 'mypass' --patch
- 首先尝试使用密钥认证,如果密钥失败则回退到密码认证
- 如有需要,密码也会被用于注入 sudo
## 缓解过程
当使用 `--patch` 标志时,工具将按顺序执行以下步骤:
1. **清理目标路径** → 删除旧的 `/etc/modprobe.d/dirtyfrag.conf`(如果存在)
2. **写入 modprobe 配置** → 将黑名单规则写入 `/etc/modprobe.d/dirtyfrag.conf`:
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false
3. **验证配置写入** → 确保文件已正确写入
4. **设置文件权限** → 对配置文件执行 `chmod 644`
5. **卸载 esp4 模块** → `rmmod esp4`(如果未加载则跳过)
6. **卸载 esp6 模块** → `rmmod esp6`(如果未加载则跳过)
7. **卸载 rxrpc 模块** → `rmmod rxrpc`(如果未加载则跳过)
8. **清除 page cache** → `echo 3 > /proc/sys/vm/drop_caches`
9. **最终验证** → 确认所有模块已卸载且配置有效
**注意**:如果在执行 `rmmod` 后模块仍处于加载状态,将提示用户可能需要重新启动系统。
## 输出示例
### **主机结果输出(逐台主机)**
```
──────────────────────────────────────────────────────────
Host 1/2: 10.134.205.163 (ubuntu-web-01)
──────────────────────────────────────────────────────────
OS : Ubuntu 22.04.4 LTS
Kernel : 6.8.0-111-generic
Priv : user
CVE-2026-43284 (xfrm-ESP) [POSSIBLY_SAFE]
esp4 loaded : no
esp6 loaded : no
Mitigation : NOT applied
Upstream patch: NOT included (<6.15)
CVE-2026-43500 (RxRPC) [VULNERABLE]
rxrpc loaded : YES
Mitigation : NOT applied
Note: No upstream patch exists yet — mitigation is the ONLY fix
[✓] Mitigation applied successfully!
[Privilege check] OK (using: sudo (auto-pass))
[Clean target path] OK
[Write modprobe config] OK
[Verify config written] OK (3 entries)
[Set file permissions] OK
[Unload esp4 module] Skipped (not loaded or already removed)
[Unload esp6 module] Skipped (not loaded or already removed)
[Unload rxrpc module] Unloaded
[Flush page cache] OK
[Final verify] Config file valid
[Final verify] All vulnerable modules unloaded
[Result] Mitigation applied successfully
```
### **汇总表**
```
════ SUMMARY ════
+----------------+-------------------+------+------------+------------+----------+
| Host | OS/Kernel | Priv | CVE-43284 | CVE-43500 | Patched? |
+----------------+-------------------+------+------------+------------+----------+
| 10.134.205.163 | Ubuntu 22.04.4 | user | POSSIBLY_S | VULNERABLE | YES ✓ |
| 10.134.205.164 | Ubuntu 22.04.4 | user | VULNERABLE| VULNERABLE | FAILED ✗ |
| 10.134.205.165 | Debian 12 | root | MITIGATED | MITIGATED | — |
+----------------+-------------------+------+------------+------------+----------+
```
### **统计数据**
```
════ STATISTICS ════
Hosts scanned : 3
Errors : 0
Vulnerable 43284: 1
Vulnerable 43500: 2
Mitigations OK : 1
Mitigations FAIL: 1
└─ 1 failed due to insufficient privileges
Duration : 12.4s
```
## 导出 JSON 报告
使用 `--output` 标志保存完整的审计结果:
```
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --output report.json
```
### **报告格式**
```
{
"scan_time": "2026-05-12 14:23:45",
"tool": "DirtyFrag Scanner v1.0",
"cves": ["CVE-2026-43284", "CVE-2026-43500"],
"total_hosts": 3,
"results": [
{
"host": "10.134.205.163",
"hostname": "ubuntu-web-01",
"os": "Ubuntu 22.04.4 LTS",
"kernel": "6.8.0-111-generic",
"kernel_v": [6, 8, 0],
"is_root": false,
"cve_43284": {
"status": "POSSIBLY_SAFE",
"esp4_loaded": false,
"esp6_loaded": false,
"mitigation_applied": false,
"upstream_patched": false
},
"cve_43500": {
"status": "VULNERABLE",
"rxrpc_loaded": true,
"mitigation_applied": false
},
"patch_applied": true,
"patch_msg": "...",
"error": null
}
]
}
```
## 故障排除
### **错误:"SSH key file not found"**
```
# 错误
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa.pub
# 正确(使用 private key,而非 .pub)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa
```
### **错误:"Invalid SSH KEY FILE — it's NOT a valid SSH private key"**
您提供的文件不是私钥。请检查:
- 不是 `.pub` 文件(公钥)
- 不是 `known_hosts` 文件
- 包含 `-----BEGIN PRIVATE KEY-----` 或 `-----BEGIN RSA PRIVATE KEY-----`
### **错误:"Missing space before argument flag" (CLI 语法错误)**
```
# 错误
python3 dirtyfrag_scanner.py --user ghostgtr666--password 'pass' --subnet 192.168.1.0/24
# 正确
python3 dirtyfrag_scanner.py --user ghostgtr666 --password 'pass' --subnet 192.168.1.0/24
```
### **缓解失败:"Privilege check FAILED"**
用户没有 sudo 访问权限,或者在需要时未提供密码:
```
# 选项 1:直接使用 root
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --patch
# 选项 2:提供 password 以自动注入 sudo
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --patch
# 选项 3:在 /etc/sudoers 中配置 NOPASSWD
echo 'admin ALL=(ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers
```
### **连接超时**
请增加 `--timeout` 的值:
```
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --timeout 30
```
### **大量假阴性(状态为 MODULE_NOT_LOADED 但实际应为 VULNERABLE)**
某些发行版在预编译内核时未包含 esp4/esp6/rxrpc 模块。请手动检查:
```
# 在目标 host
cat /proc/cmdline | grep -i module
lsmod | grep -E 'esp4|esp6|rxrpc'
```
## 实际应用场景示例
### **场景 1:整个子网的大规模审计**
```
python3 dirtyfrag_scanner.py \
--subnet 192.168.100.0/24 \
--user monitoring \
--password 'monitoring123' \
--workers 30 \
--output full-audit.json
```
### **场景 2:紧急修补所有存在漏洞的主机**
```
python3 dirtyfrag_scanner.py \
--subnet 10.0.0.0/16 \
--user root \
--key ~/.ssh/prod_rsa \
--patch \
--workers 50 \
--output emergency-patch.json
```
### **场景 3:扫描特定关键服务器**
```
python3 dirtyfrag_scanner.py \
--hosts 192.168.1.10,192.168.1.20,192.168.1.30 \
--user ubuntu \
--key ~/.ssh/dev_rsa \
--output critical-servers.json
```
### **场景 4:使用 SSH 密钥 + 密码回退进行扫描**
```
python3 dirtyfrag_scanner.py \
--subnet 192.168.50.0/24 \
--user deploy \
--key ~/.ssh/deploy_ed25519 \
--password 'deploy@backup' \
--patch \
--output deploy-scan.json
```
## 支持与贡献
由 **Gagaltotal666 - GhostGTR666** 开发
GitHub: [github.com/gagaltotal](https://github.com/gagaltotal)
**免责声明**:本工具仅用于达成一致且合法的安全审计。用户需对本工具的使用行为负责。
标签:CVE-2026-43284, CVE-2026-43500, Dirtyfrag, GPT, Linux内核漏洞, Linux服务器安全, LPE, Python安全工具, SSH自动化, Web报告查看器, 内存分配, 加密, 安全合规, 安全基线检查, 对称加密, 插件系统, 无线安全, 本地提权, 漏洞扫描器, 漏洞管理, 漏洞缓解, 端点安全, 网络代理, 网络安全, 自动化审计, 补丁管理, 逆向工具, 隐私保护