kuniyal08/Dirty-Frag-CVE-2026-43284

GitHub: kuniyal08/Dirty-Frag-CVE-2026-43284

Dirty Frag Linux 本地提权漏洞链的完整复现报告,涵盖漏洞利用、syscall 级检测工程、应急响应 playbook 与缓解措施。

Stars: 1 | Forks: 0

# Dirty-Frag-CVE-2026-43284 # Dirty Frag (CVE‑2026‑43284 & CVE‑2026‑43500) — 漏洞复现与检测实验 本仓库记录了 **Dirty Frag** Linux 内核本地提权(LPE)链的端到端复现、检测工程和应急响应过程。Dirty Frag 将两个确定性的逻辑漏洞——**CVE‑2026‑43284** (xfrm/ESP) 和 **CVE‑2026‑43500** (RxRPC)——组合利用,使得无特权的本地用户能够覆盖只读文件(例如 `/usr/bin/su`)的 page cache,从而获取 root shell。 ## 关键发现 - ✅ 在 Kali Linux 2026.1(内核 6.18.12+kali‑amd64)上成功复现 Dirty Frag - ✅ 部署了 auditd syscall 级别的检测规则 - ✅ 创建了用于跨平台检测的 Sigma 和 YARA 规则 - ✅ 开发了完整的应急响应 playbook - ✅ 每一步均附有截图记录,可用于个人作品集展示 ### 为什么这很重要 Dirty Frag 是一个**逻辑漏洞**,而不是内存损坏。它是**确定性的**,几乎影响自 **2017** 年以来发布的所有 Linux 发行版,并且是完全**无文件**的——传统的文件完整性监控(AIDE, Tripwire)无法察觉它。公开的 PoC 是一个单一的 C 文件,将 ESP 和 RxRPC 路径组合在了一起。 ## 实验环境 组件 | 详情 ---|--- Hypervisor | VirtualBox 目标虚拟机 | Kali Linux 2026.1 内核 | 6.18.12+kali‑amd64 漏洞 PoC | [V4bel/dirtyfrag](https://github.com/V4bel/dirtyfrag) 检测 | auditd, Sigma, YARA ## 复现步骤 ### 1. 验证 Kali 版本与内核 实验首先确认目标运行的是存在漏洞的内核。 ``` cat /etc/os-release | head -3 uname -r ``` 📸 screenshots/pre_exploit_id.png — Kali 2026.1 发行版和内核详情。uname -r 的输出显示了存在漏洞的内核 6.18.12+kali‑amd64。 2. 检查脆弱模块 该漏洞利用需要 esp4、esp6 和 rxrpc 内核模块。 ``` lsmod | grep -E "esp4|esp6|rxrpc" modinfo esp4 esp6 rxrpc 2>/dev/null | grep -E "^(name|depends)" ``` 📸 screenshots/module_mitigation.png — lsmod 和 modinfo 确认存在可用的脆弱模块。 3. Python 版本 基于 Python 的 PoC 变体需要 Python 3.10+。我们在此验证解释器。 ``` python3 --version ``` 已安装 Python 3.12 并准备就绪。 4. 漏洞检查器(非破坏性) 在运行完整的漏洞利用之前,一个安全的检查脚本会确认系统是否脆弱。 ``` python3 poc/check_vulnerable.py ``` 检查器报告“potentially vulnerable”,为后续漏洞利用扫清了障碍。 5. 创建非特权用户 一个非特权的 testuser 账户用于模拟没有特殊权限的攻击者。 ``` sudo useradd -m testuser sudo passwd testuser su - testuser id ``` 📸 id 显示 UID 为 1001,确认了非 root 访问权限。 6. 克隆并执行漏洞利用 从非特权账户克隆并编译官方的 V4bel PoC。 ``` git clone https://github.com/V4bel/dirtyfrag.git cd dirtyfrag gcc -O0 -Wall -o exp exp.c -lutil ./exp ``` 📸 screenshots/exploit_execution.png — 漏洞利用覆盖了 /usr/bin/su 的 page cache,并触发了被篡改的二进制文件。 📸 screenshots/post_exploit_root.png — whoami 和 id 的输出证明了已获得完整的 root 提权。 7. 验证无文件特性(无磁盘修改) 漏洞利用仅破坏内存中的 page cache。磁盘上的 /usr/bin/su 保留了其原始校验和。 ``` sha256sum /usr/bin/su ``` 即使在被利用之后,sha256sum 仍然与原始的软件包哈希值匹配,确认没有发生磁盘修改。 8. 漏洞利用后清理(关键!) 运行漏洞利用后,page cache 会被污染。务必将其清理: ``` echo 3 | sudo tee /proc/sys/vm/drop_caches # 或重启系统 ``` 检测工程 Dirty Frag 无法通过文件完整性监控来检测。相反,我们将重点放在它所使用的 syscall 级别原语上。 auditd 规则 我们部署了自定义的 auditd 规则,它们会在以下情况触发: ``` socket(AF_ALG) family 38 and socket(AF_RXRPC) family 21 creation splice() syscall usage unshare(CLONE_NEWUSER | CLONE_NEWNET) namespace creation Read access to setuid binaries by unprivileged processes ``` ``` # /etc/audit/rules.d/dirtyfrag.rules -a always,exit -F arch=b64 -S socket -F a0=38 -F uid!=0 -k dirtyfrag_af_alg -a always,exit -F arch=b64 -S socket -F a0=21 -F uid!=0 -k dirtyfrag_rxrpc -a always,exit -F arch=b64 -S splice -F uid!=0 -k dirtyfrag_splice -a always,exit -F arch=b64 -S unshare -F uid!=0 -k dirtyfrag_namespace -w /usr/bin/su -p r -k dirtyfrag_suid_read ``` 所有自定义规则均已激活,并已通过 auditctl -l 验证。 在第二次运行漏洞利用后,我们看到了所使用的确切 syscall 的警报: ``` ausearch -k dirtyfrag_af_alg shows an AF_ALG socket creation event from the testuser process ausearch -k dirtyfrag_splice shows a splice() event from the same PID, a strong correlation ausearch -k dirtyfrag_namespace shows namespace creation ``` Sigma 规则 Sigma 规则将 auditd 的发现转换为与供应商无关的 SIEM 格式。 文件:detection/sigma/dirty_frag_exploit.yml YARA 规则 YARA 规则有助于在磁盘和内存中识别 Dirty Frag 漏洞利用代码。 文件:detection/yara/dirty_frag_exploit.yar 检测覆盖范围总结 层级 检测内容 状态 auditd AF_ALG/AF_RXRPC socket + splice syscall + unshare ✅ 已部署 Sigma 通过 SIEM 检测 syscall 模式 ✅ 规则就绪 YARA 磁盘/内存中的 PoC 代码 ✅ 规则就绪 FIM (AIDE/Tripwire) 文件更改 ❌ 盲区 – 未发生磁盘写入 应急响应 Playbook 完整的应急响应报告位于 reports/incident-dirtyfrag.md。它包括: ``` Executive summary — Dirty Frag exploitation observed Indicators of compromise (IoCs) — auditd alerts for AF_ALG/AF_RXRPC socket creation, splice() calls, unshare namespace events, and SUID binary execution by non‑root processes MITRE ATT&CK mapping — T1068 (Exploitation for Privilege Escalation), T1611 (Escape to Host) Containment and eradication steps — Module blacklisting, page cache flush, kernel upgrade Lessons learned regarding fileless attacks and the importance of syscall‑level auditing ``` 缓解措施 即时缓解(无需重启): ``` echo "install esp4 /bin/false" | sudo tee /etc/modprobe.d/dirtyfrag.conf echo "install esp6 /bin/false" | sudo tee -a /etc/modprobe.d/dirtyfrag.conf echo "install rxrpc /bin/false" | sudo tee -a /etc/modprobe.d/dirtyfrag.conf sudo rmmod esp4 esp6 rxrpc 2>/dev/null ``` ⚠️ 影响:禁用这些模块会破坏 IPsec VPN 和 AFS 文件系统功能。 开箱即用的缓解脚本包含在 mitigation/dirtyfrag_mitigation.sh 中。 永久修复:将您的内核升级到已修复的版本。
标签:CSV导出, Linux内核, Web报告查看器, 库, 应急响应, 本地提权, 漏洞分析, 漏洞复现, 路径探测, 逆向工具