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报告查看器, 库, 应急响应, 本地提权, 漏洞分析, 漏洞复现, 路径探测, 逆向工具