MUHAMMADHARIS1144/dirtyfrag-cve-2026
GitHub: MUHAMMADHARIS1144/dirtyfrag-cve-2026
DirtyFrag 是利用 Linux 内核网络子系统 ESP 和 rxkad 原位解密缺陷实现 page cache 破坏与本地权限提升的概念验证代码集合。
Stars: 0 | Forks: 0
# DirtyFrag 漏洞利用
通过 Linux 内核网络子系统中的 page cache 破坏实现本地权限提升。
## CVE-2026-43284 (XFRM/ESP)
**目标:** `/usr/bin/su`
利用 `net/ipv4/esp4.c::esp_input()` 中的原位解密,结合 `splice()`,使用一个极简的 192 字节 x86_64 root shell ELF 破坏 `/usr/bin/su` 二进制文件。
**机制:**
- 通过 netlink 创建带有精心构造密钥的 XFRM SA
- 开启在 4500 端口上具有 ESP 封装的 UDP socket
- 使用 `vmsplice()` + `splice()` 将解密输出重定向到 su 的 page cache
- 每次 splice 写入 4 字节;payload 分散在 40 多个 SA 中
- 破坏完成后,执行被篡改的 su,从而落入 root shell
**编译与运行:**
```
gcc -o cve-2026-43284 CVE-2026-43284.c
./cve-2026-43284
```
**环境变量:**
- `DIRTYFRAG_VERBOSE=1` — 启用日志记录
- `DIRTYFRAG_CORRUPT_ONLY=1` — 仅破坏 su,不执行它
## CVE-2026-43500 (rxrpc/rxkad)
**目标:** `/etc/passwd`
利用 `net/rxrpc/rxkad.c::rxkad_verify_packet_1()` 中 `pcbc(fcrypt)` 的原位解密,结合 `splice()` 破坏 `/etc/passwd`,将 root 的条目设置为 `root::0:0`(空密码)。
**机制:**
- **阶段 1:** 离线暴力破解 3 个 fcrypt 密钥,用于将 `/etc/passwd` 数据块解密为目标 payload
- K_A:将前 8 字节解密为 `"::"`(空用户名/密码)
- K_B:将接下来的 8 字节解密为 `"0:"`(UID)
- K_C:将接下来的 8 字节解密为 `"0:GGGGGG:"`(GID + 填充)
- **阶段 2:** 内核通过 rxrpc socket 触发
- 对于每个密钥,创建具有匹配会话密钥的 rxrpc 连接
- 构造带有恶意 rxkad header 的 DATA 数据包
- 使用 `splice()` 将 payload 注入到内核的验证路径中
- 在 page cache 上触发原位 PCBC 解密
- **阶段 3:** 自动启动 `su` 并响应空密码提示
**编译与运行:**
```
gcc -o cve-2026-43500 CVE-2026-43500.c
./cve-2026-43500
```
**环境变量:**
- `POC_TARGET_FILE=/path/to/file` — 目标文件(默认:`/etc/passwd`)
- `POC_NO_UNSHARE=1` — 跳过 user/network namespace 设置
- `POC_UNSHARE=1` — 强制 namespace 设置
- `LPE_MAX_ITERS=N` — 最大暴力破解迭代次数(默认:100 亿次)
- `LPE_SEED=N` — 密钥搜索的随机种子(默认:基于时间)
- `DIRTYFRAG_CORRUPT_ONLY=1` — 仅破坏 passwd,不生成 su
## 环境要求
- Linux kernel 6.12.15 或类似版本(存在漏洞的版本)
- 非特权用户(uid > 0)
- 可访问的 `/usr/bin/su` 和 `/etc/passwd`
- 启用 `CONFIG_XFRM=m` 和 `CONFIG_RXRPC=m`
- CAP_NET_RAW(如果不可用,则通过 unshare 获取)
## 注意事项
- 两个漏洞利用程序均使用 `unshare(CLONE_NEWUSER | CLONE_NEWNET)` 来获取 CAP_NET_RAW
- 破坏完成后会自动执行 root shell(除非使用 `--corrupt-only` 或设置了 `DIRTYFRAG_CORRUPT_ONLY=1`)
- CVE-2026-43500 包含用于无缝 shell 的交互式 PTY 设置
- 已在 Intel Core i7-12700K / 32GB RAM / Linux 6.12.15 上测试
## 免责声明
仅用于授权的安全研究和防御目的。
标签:CSV导出, Linux内核, Web报告查看器, 安全渗透, 客户端加密, 本地提权, 概念验证, 网络安全, 隐私保护