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 ``` ## 使用方法 ![屏幕截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/1a15f41b79022650.png) ### **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报告查看器, 内存分配, 加密, 安全合规, 安全基线检查, 对称加密, 插件系统, 无线安全, 本地提权, 漏洞扫描器, 漏洞管理, 漏洞缓解, 端点安全, 网络代理, 网络安全, 自动化审计, 补丁管理, 逆向工具, 隐私保护