Koshmare-Blossom/Fragnesia-go

GitHub: Koshmare-Blossom/Fragnesia-go

这是一个Go语言实现的Linux内核漏洞利用工具,针对CVE-2026-46300,通过页面缓存写入获取root权限。

Stars: 1 | Forks: 1

# fragnesia-go [fragnesia](https://github.com/v12-security/pocs/tree/main/fragnesia) (CVE-2026-46300) 的 Go 移植版本。属于 [Dirty Frag](https://github.com/V4bel/dirtyfrag) 漏洞类别 —— 独立的错误,相同的攻击面,各自需要单独的补丁。 ## 工作原理 (简述) 该漏洞存在于 Linux 的 XFRM ESP-in-TCP 子系统中。当在一个套接字上安装 `TCP_ULP espintcp` 之后,数据已经通过 `splice()` 从文件移入 TCP 接收队列时,内核会将队列中的数据视为 ESP 密文记录并对其进行原地解密。这些数据的来源是页面缓存中的一个页。解密过程直接将 AES-GCM 密钥流异或写入该页面。 结果是可控的单字节写入,目标可以是任何可读文件的页面缓存。 **密钥流表** 位置 2 处的 AES-GCM (RFC 4106) 计数器块为 `[salt(4) || IV(8) || 0x00000002]`。使用会话密钥对其进行加密会得到一个 16 字节的密钥流块。该块的第 0 字节就是要异或写入目标字节的内容。通过改变 IV 随机数的低 32 位,在前 65536 个随机数内可以生成所有 256 种可能的密钥流字节值。该漏洞利用程序在启动时通过 `AF_ALG` AES-ECB 构建一次此查找表。 **字节翻转循环** 对于负载的每个字节: 1. 从文件(页面缓存)中读取当前值。 2. 计算 `needed_keystream = current XOR desired`。 3. 查找对应于该密钥流字节的随机数。 4. 设置 IV,触发一对 TCP 触发事件(发送方将文件页面拼接进套接字,接收方延迟 `TCP_ULP` 的安装直到数据入队)。 5. 结果:`current XOR keystream = current XOR (current XOR desired) = desired`。 单个安全关联 (SA)。最多 192 次触发。结果确定。 ## 用法 ``` go build -o fragnesia-go . ./fragnesia-go ``` 成功时,它会通过一个全新的 PTY 返回一个 root shell。磁盘上的二进制文件不受影响 —— 仅修改页面缓存。 ### 清理 ``` echo 1 | tee /proc/sys/vm/drop_caches ``` ## 要求 - Linux - 未打补丁的内核(见下文) - 无外部工具依赖 - 纯 Go 实现,单一静态二进制文件 - 内核模块:`esp6`(传输模式,IPv6 回环) ## 受影响的内核 补丁之前的所有内核版本:https://lists.openwall.net/netdev/2026/05/13/79 与 dirtyfrag 影响范围相同。 ## 缓解措施 与 dirtyfrag 相同: ``` rmmod esp4 esp6 printf 'install esp4 /bin/false\ninstall esp6 /bin/false\n' \ > /etc/modprobe.d/fragnesia.conf ``` ## 与 dirtyfrag-go 对比 | | dirtyfrag-go | **fragnesia-go** | |---|---|---| | CVE | CVE-2026-43284 / CVE-2026-43500 | CVE-2026-46300 | | 传输协议 | ESP-in-UDP + RxRPC | ESP-in-TCP (ULP) | | 写入粒度 | 每次触发 4 字节 | 每次触发 1 字节 | | XFRM SA 数量 | 48 | 1 | | 加密算法 | HMAC-SHA256 + CBC-AES | AES-128-GCM | | IP 协议族 | IPv4 | IPv6 | ## 参考资料 - [v12-security/pocs - fragnesia](https://github.com/v12-security/pocs/tree/main/fragnesia) - 原始 C 语言概念验证代码 - [CVE-2026-46300 - Red Hat](https://access.redhat.com/security/cve/cve-2026-46300) - [内核补丁](https://lists.openwall.net/netdev/2026/05/13/79) ## 致谢 - **William Bowling / V12 团队** - 漏洞发现与原始概念验证代码
标签:0day挖掘, AES-GCM加密, CVE-2026-46300, Dirty Frag漏洞, ESP协议, EVTX分析, fragnesia漏洞, Go语言, Linux内核, root shell, TCP协议, Web报告查看器, XFRM协议, 内存破坏, 内核安全, 内核模块, 单字节写入, 威胁模拟, 字节翻转, 安全渗透, 安全资源, 密钥流生成, 情报收集, 控制写入, 提权攻击, 提权漏洞, 日志审计, 漏洞利用开发, 漏洞研究, 程序破解, 系统调用splice, 网络安全, 隐私保护, 静态二进制, 页面缓存操作