Koshmare-Blossom/DirtyFrag-go

GitHub: Koshmare-Blossom/DirtyFrag-go

这是一个针对Linux内核XFRM子系统漏洞的Go语言实现利用工具,用于获取root权限。

Stars: 0 | Forks: 1

# dirtyfrag-go [dirtyfrag](https://github.com/V4bel/dirtyfrag) 的 Go 语言移植版本(CVE-2026-43284 / CVE-2026-43500)。 ## 工作原理(简要说明) 该缺陷类型存在于 Linux 内核的 XFRM 子系统中。当文件页通过 `splice()` 插入管道,再进入 ESP 加密套接字时,内核会原地解密 ESP 载荷——直接写入源文件的页缓存页。文件是只读的,但页缓存并非如此。 dirtyfrag 利用此原语串联了两个独立的漏洞: **CVE-2026-43284 - ESP/XFRM 路径** 通过 `NETLINK_XFRM` 安装 48 个 XFRM 传输模式安全关联。每个安全关联在其 ESN 重放状态的 `seq_hi` 字段中编码 4 字节的 shellcode 载荷。通过 `vmsplice` + `splice` 链为每个安全关联触发 ESP 原地解密,将这 4 字节写入 `/usr/bin/su` 的页缓存条目。触发 48 次,写入 192 字节,无竞态条件。 **CVE-2026-43500 - RxRPC/rxkad 路径** 离线暴力破解 3 个 PCBC(fcrypt) 会话密钥,这些密钥在解密时能产生目标字节序列。为每个密钥触发一个 `AF_RXRPC` 套接字,将 `/etc/passwd` 中的 root 条目修补为 `root::0:0` (nullok)。然后 `su -` 就会接受空密码。 两条路径都在用户 + 网络命名空间(`CLONE_NEWUSER | CLONE_NEWNET`)中运行,以避免在宿主机上需要 `CAP_NET_ADMIN` 权限。 ## 使用方法 ``` go build -o dirtyfrag-go . ./dirtyfrag-go # 强制指定路径 ./dirtyfrag-go --force-esp ./dirtyfrag-go --force-rxrpc # 详细输出 ./dirtyfrag-go -v ``` 程序会首先尝试 ESP 路径。如果之后 `/usr/bin/su` 未被修补,则回退到 RxRPC 路径(最多重试 3 次)。成功后,它会通过一个新的 PTY 提供一个 root shell。 ### 清理 漏洞利用仅影响页缓存。磁盘上的二进制文件和 `/etc/passwd` 未被改动。重启即可恢复一切。要在不重启的情况下立即驱逐缓存: ``` echo 1 | tee /proc/sys/vm/drop_caches ``` ## 系统要求 - Linux - 未打补丁的内核(见下文) - 无外部工具或预构建载荷 - 纯 Go 语言实现,单一静态二进制文件 - 内核模块:`esp4`, `esp6`(ESP 路径)和/或 `rxrpc`(RxRPC 路径) ## 受影响的内核 补丁发布前的所有内核: - CVE-2026-43284: https://lists.openwall.net/netdev/2026/05/06/112 - CVE-2026-43500: https://lists.openwall.net/netdev/2026/05/06/114 ## 缓解措施 ``` rmmod esp4 esp6 rxrpc printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' \ > /etc/modprobe.d/dirtyfrag.conf ``` ## 与原始版本对比 | | C (原始版本) | **Go** | |---|---|---| | 外部依赖 | 无 | 无 | | 单文件 | 否 | 否 | | 静态二进制 | 是 | 是 | | RxRPC 路径 | 是 | 是 | | ESP 路径 | 是 | 是 | | 命名空间隔离 | `unshare()` | 使用 `Cloneflags` 重新执行 | Go 的运行时从一开始就是多线程的,因此不允许 `unshare(CLONE_NEWUSER)`。Go 移植版通过设置 `SysProcAttr.Cloneflags` 将自身作为子进程重新执行,这会在 Go 运行时初始化之前调用 `clone()`。 ## 参考资料 - [V4bel/dirtyfrag](https://github.com/V4bel/dirtyfrag) - 原始 C 语言概念验证 - [CVE-2026-43284 - NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-43284) - [CVE-2026-43500 - NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-43500) ## 鸣谢 - **V4bel** - 漏洞发现与原始概念验证
标签:CVE-2026-43284, CVE-2026-43500, ESP加密漏洞, EVTX分析, Go语言实现, Linux内核安全, RxRPC协议漏洞, splice操作, Web报告查看器, XFRM子系统, 内核漏洞CVE, 原地解密漏洞, 安全研究工具, 日志审计, 用户命名空间利用, 网络命名空间利用, 网络安全, 脏页碎片攻击, 隐私保护, 页面缓存攻击