liamromanis101/DirtyFrag-Detector
GitHub: liamromanis101/DirtyFrag-Detector
针对 Linux 内核 Dirty Frag 本地提权漏洞的检测脚本,以无特权视角全面评估系统暴露面并给出修复建议。
Stars: 13 | Forks: 0
# 🔍 Dirty Frag — CVE-2026-43284 / CVE-2026-43500 检测脚本
## 这是什么?
2026 年 5 月 7 日,安全研究员 Hyunwoo Kim ([@v4bel](https://github.com/V4bel/dirtyfrag)) 公开披露了一个名为 **Dirty Frag** 的漏洞类——由于禁售期被打破,迫使他在补丁准备就绪之前提前公开了该漏洞。
它允许任何无特权的本地用户获取 root 权限。无需竞态条件。没有时间窗口。极其可靠。
受影响的子系统有两个:
| CVE | 子系统 | 模块 | 引入时间 | 修复时间(上游) |
|---|---|---|---|---|
| CVE-2026-43284 | IPsec ESP | `esp4`, `esp6` | 2017 年 1 月 (`cac2661c53f3`) | 2026 年 5 月 7 日 (`f4c50a4034e6`) |
| CVE-2026-43500 | RxRPC | `rxrpc` | 2023 年 6 月 (`2dc334f1a63a`) | 2026 年 5 月 10 日 (`aa54b1d27fe0`) |
单独的任何一个漏洞都无法做到完全可靠——ESP 路径需要具备创建 user namespace 的能力(这会被 Ubuntu 的 AppArmor 阻止),而 RxRPC 路径需要加载 `rxrpc.ko`(大多数发行版默认不会这样做)。但这二者结合后可以互相弥补对方的盲区,使得此攻击链在几乎所有主流发行版上都能奏效。
目前已有公开的概念验证代码。请假定它已被广泛利用。
## 此脚本的功能
它会检查您的系统是否存在可被利用的条件,并*具体*告诉您暴露的原因——而不仅仅是简单的是或否。
| 检查项 | 检查内容 |
|---|---|
| 内核版本 | 当前内核是否处于任一受影响的版本范围内? |
| 补丁 — CVE-2026-43284 | 您的内核包中是否包含 esp4/esp6 修复 (`f4c50a4034e6`)? |
| 补丁 — CVE-2026-43500 | 您的发行版是否反向移植了 rxrpc 修复 (`aa54b1d27fe0`)? |
| `esp4` 模块 | 已加载、可加载,还是已拉黑? |
| `esp6` 模块 | 已加载、可加载,还是已拉黑? |
| `rxrpc` 模块 | 已加载、可加载,还是已拉黑? |
| XFRM netlink 套接字 | 无特权用户现在能否打开一个? |
| AF_RXRPC 套接字 | 无特权用户现在能否打开一个? |
| 缓解措施 | AppArmor、SELinux、无特权 user namespace、黑名单文件 |
它不会修复任何问题。也不会利用任何漏洞。它只是向您陈述您系统的真实状况。
## 系统要求
- Python 3.6+
- 无需外部依赖——仅使用标准库
- 无需 root 权限(这是有意为之——我们检查的是无特权攻击者能看到的内容)
## 使用方法
```
python3 dirty_frag_detect.py
```
就是这样。带有颜色编码的输出,每项发现的具体原因,以及最后的修复建议摘要。
## 截图
[]
## 修复方法
**真正的修复方法是给内核打补丁。** 请查看您发行版的安全公告:
| 发行版 | 查看位置 |
|---|---|
| Ubuntu / Debian | `sudo apt-get update && sudo apt-get dist-upgrade` |
| RHEL / AlmaLinux / Rocky | `sudo dnf update kernel` |
| Arch | `sudo pacman -Syu linux` |
| CloudLinux | [CloudLinux 公告](https://blog.cloudlinux.com/dirty-frag-mitigation-and-kernel-update) |
**在您等待期间**(或者如果您的发行版尚未提供补丁),请将受影响的模块加入黑名单:
```
sudo 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; \
echo 3 > /proc/sys/vm/drop_caches"
```
**重要提示:** 如果您的系统在应用缓解措施之前可能已成为攻击目标,那么该漏洞利用可以在不触及磁盘的情况下修改页缓存中的二进制文件。文件完整性检查工具(Tripwire、AIDE)在检查磁盘上的校验和时不会发现任何异常。重启可以清除页缓存并恢复磁盘上的状态。
## 原理简介
这两个漏洞都存在于内核的就地解密快速路径中。当套接字缓冲区包含非内核私有的分页片段时——例如,通过 `splice()` 或 `sendfile()` 附加的管道页——ESP 和 RxRPC 接收路径会直接在这些外部支持的页面上进行解密,而不是先进行复制。
攻击者可以使用自己的密钥,将 `/usr/bin/su`(或任何其他可读文件)缓存中的一页引导至这些解密路径之一,这样“解密后的输出”就是他们选择的任意字节。内核将这些字节直接写入内存中 `su` 的缓存副本。磁盘上的文件保持不变。内核绝不会将该页面标记为脏页。
从那时起,每个执行 `su` 的进程都会运行攻击者的版本——直到执行 `drop_caches` 或系统重启。
ESP 变体 (`cac2661c53f3`) 和 RxRPC 变体 (`2dc334f1a63a`) 共享相同的攻击目标,但具有相互抵消的先决条件,使得此攻击链在所有主要配置中都非常可靠。
有关完整的技术分析,请参阅 [V4bel/dirtyfrag](https://github.com/V4bel/dirtyfrag)。
## 披露时间线
| 日期 | 事件 |
|---|---|
| 2026-04-30 | 报告给 Linux 内核安全团队 |
| 2026-05-07 | 禁售期被第三方打破;Hyunwoo Kim 提前公开 |
| 2026-05-07 | 公开 PoC 发布;分配 CVE-2026-43284 |
| 2026-05-07 | CVE-2026-43284 修复 (`f4c50a4034e6`) 合并至 netdev/net.git |
| 2026-05-08 | 分配 CVE-2026-43500;各发行版开始发布针对 CVE-2026-43284 的补丁内核 |
| 2026-05-10 | CVE-2026-43500 修复 (`aa54b1d27fe0`) 合并至主线 |
| 2026-05-11 | 各发行版正在反向移植 CVE-2026-43500 补丁 |
致谢:Hyunwoo Kim ([@v4bel](https://github.com/V4bel)) 负责了最初的研究、披露以及 PoC。
## 免责声明
仅用于检测。请仅对您有授权评估的系统使用。
标签:AppArmor, CVE, CVE-2026-43284, CVE-2026-43500, DirtyFrag, IPsec ESP, Linux内核, LPE, PB级数据处理, RxRPC, SELinux, Web报告查看器, 协议分析, 子域名暴力破解, 子域名枚举, 安全脚本, 安全运维, 提权漏洞, 数字签名, 无线安全, 本地提权, 权限提升, 漏洞缓解, 系统安全, 网络安全, 自动化检测, 补丁检测, 隐私保护