blacksunCUBE/Dirty-Frag-hunting
GitHub: 0xAllow/Dirty-Frag-hunting
DirtyFrag hunter 是一套用于检测和狩猎 Linux 内核 DirtyFrag 类本地提权漏洞(CVE-2026-43284/CVE-2026-43500)的检测规则与脚本工具包。
Stars: 0 | Forks: 0
# Dirty-Frag 查找
针对 **CVE-2026-43284** (xfrm-ESP) 和 **CVE-2026-43500** (RxRPC) DirtyFrag Linux LPE 漏洞类的检测与狩猎工具。
原始研究:[Hyunwoo Kim (@v4bel)](https://github.com/V4bel/dirtyfrag)
## 文件
| 文件 | 用途 |
|---|---|
| `dirtyfrag_hunt.py` | 暴露检查 + `/proc` 检查 + auditd 狩猎 |
| `dirtyfrag.yml` | 用于 auditd / SIEM 的 Sigma 规则(6 条规则) |
| `dirtyfrag.yar` | YARA 规则(5 条规则),涵盖源码、二进制文件、内存及防篡改检测 |
## 快速开始
```
# 基础暴露检查(无需 root)
python3 dirtyfrag_hunt.py
# 使用 auditd hunting 进行全面检查
sudo python3 dirtyfrag_hunt.py -v
# 将发现结果导出为 JSON
sudo python3 dirtyfrag_hunt.py --json findings.json
# 打印并应用 auditd 规则
python3 dirtyfrag_hunt.py --print-auditd-rules > /etc/audit/rules.d/dirtyfrag.rules
augenrules --load
# Sigma 规则转换
sigma convert -t splunk dirtyfrag.yml
sigma convert -t elastic dirtyfrag.yml
# YARA 扫描
yara -r dirtyfrag.yar /tmp /home /dev/shm
yara dirtyfrag.yar /proc//mem
```
## CVE 摘要
| CVE | 子系统 | 原语 | 权限要求 | 补丁 |
|---|---|---|---|---|
| CVE-2026-43284 | xfrm (IPsec ESP) | 4 字节写入页缓存 | CLONE_NEWUSER | 主线:`f4c50a4034e6`,发行版无反向移植 |
| CVE-2026-43500 | RxRPC (AFS transport) | 写入页缓存 | 无 | **目前无任何补丁** |
两者均为确定性的逻辑错误,没有竞态条件,失败时也不会引发 kernel panic。
**xfrm 窗口期:** `cac2661c53f3` (2017-01-17) → 所有发行版均未打补丁
**rxrpc 窗口期:** `2dc334f1a63a` (2023-06) → 各处均未打补丁 (2026-05-10)
## 利用链 (CVE-2026-43284)
```
unshare(CLONE_NEWUSER)
→ socket(AF_KEY, ...) # configure IPsec SA + policy
→ send crafted ESP packet
→ xfrm_input()
→ esp_input_done2()
→ sk_buff frag → page-cache page of /etc/passwd
→ decryption output written to frag
→ page cache of /etc/passwd modified
→ su root ✓
```
**CVE-2026-43500** 汇聚点相同,不需要 namespace。
如果加载了 `rxrpc.ko`(Ubuntu 默认),则可通过 `rxrpc_recvmsg()` 触发。
## 官方缓解措施
```
sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' \
> /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
```
副作用:会禁用 IPsec ESP transport (esp4/esp6) 和 AFS/RxRPC (rxrpc)。
## dirtyfrag_hunt.py 检查项
| 检查项 | CVE | 检测内容 |
|---|---|---|
| `kernel-version` | 两者 | 内核版本与受漏洞影响的提交窗口对比 (4.9 / 6.4 / 6.15) |
| `esp-module` | CVE-2026-43284 | esp4/esp6 已加载且未加入黑名单 |
| `rxrpc-module` | CVE-2026-43500 | rxrpc.ko 已加载且未加入黑名单 |
| `userns` | CVE-2026-43284 | 无特权 namespace 开启状态 / AppArmor 限制状态 |
| `modprobe-config` | 两者 | `/etc/modprobe.d/dirtyfrag.conf` 是否存在及其完整性 |
| `proc-hunt` | 两者 | 活动的 xfrm 策略、`/proc/net/protocols` 中的 rxrpc、xfrm_stat 计数器 |
| `auditd-hunt` | 两者 | 近期的 unshare / AF_KEY socket / `/etc/passwd` 写入事件 (root) |
如果任何发现项的状态为 `VULN`,退出码为 `1`,适合用于监控管道。
## dirtyfrag.yml Sigma 规则
| 规则 | 标题 | 级别 |
|---|---|---|
| `dirtyfrag0001` | 无特权用户创建 namespace (`unshare`) | 中危 |
| `dirtyfrag0002` | 非特权进程创建 `AF_KEY` socket | 高危 |
| `dirtyfrag0003` | 创建 `AF_RXRPC` socket(异常行为) | 高危 |
| `dirtyfrag0004` | 非特权用户写入 `/etc/passwd` 或 `/etc/shadow` | 严重 |
| `dirtyfrag0005` | 完整利用链关联 (SIEM temporal) | 严重 |
| `dirtyfrag0006` | 运行时加载受漏洞影响的模块 | 高危 |
## dirtyfrag.yar YARA 规则
| 规则 | 范围 | 匹配内容 |
|---|---|---|
| `DirtyFrag_PoC_Source_V4bel` | 文件 | 磁盘上的原始 `exp.c` 源码 |
| `DirtyFrag_PoC_Compiled_ELF` | 文件 | 基于 PoC 编译出的 ELF 二进制文件 |
| `DirtyFrag_PoC_InMemory` | 内存 | 进程地址空间中的 PoC 字符串 |
| `Linux_PageCache_Write_Exploit_Generic` | 文件/内存 | 更广泛的页缓存写入类 (DirtyFrag / Copy Fail / Dirty Pipe) |
| `DirtyFrag_Mitigation_Tamper` | 文件 | 删除 `dirtyfrag.conf` 或强制加载被拦截模块的脚本 |
## 参考链接
- [V4bel/dirtyfrag](https://github.com/V4bel/dirtyfrag) 原始 PoC 与分析文章
- [oss-security 披露](https://www.openwall.com/lists/oss-security/2026/05/07/8) 2026-05-07
- CVE-2026-43284 xfrm-ESP · 补丁:`f4c50a4034e6` (仅限主线)
- CVE-2026-43500 RxRPC · 已保留 · 无补丁 (2026-05-10)
- [Dirty Pipe (CVE-2022-0847)](https://dirtypipe.cm4all.com/) 漏洞类祖先
- [Copy Fail](https://copy.fail/) 相同的 xfrm 汇聚点,早期变体
- xfrm 漏洞提交:`cac2661c53f3` (2017-01-17)
- rxrpc 漏洞提交:`2dc334f1a63a` (2023-06)
标签:CSV导出, Sigma规则, Web报告查看器, YARA, 云资产可视化, 安全渗透, 本地提权, 目标导入, 逆向工具