Dirty Frag Linux高危漏洞POC发布
Dirty Frag 是一个新披露、待申请 CVE 的 Linux 内核本地权限升级(LPE)漏洞,它通过串联两个独立的页面缓存写漏洞——xfrm-ESP 页面缓存写入和 RxRPC 页面缓存写入,几乎实现了所有主要 Linux 发行版的根权限访问。Dirty Frag 属于与 Dirty Pipe 和 Copy Fail(CVE-2026-31431) 相同的漏洞类别,但针对 的是内核 结构 sk_buff 中的 frag 成员,而非 struct pipe_buffer。该漏洞由安全研究员 Hyunwoo Kim (@v4bel) 发现并报告,利用了零拷贝发送路径,即 splice() 在发送 端 skb 的破碎 槽中植入只读页面缓存页的引用,如 /etc/passwd 或 /usr/bin/su 。接收端内核代码随后直接在该碎片上执行原位加密操作,永久修改 RAM 中的页面缓存。每次后续读取该文件都会看到损坏版本,尽管未授权攻击者仅获得读取权限。与竞态条件漏洞不同,Dirty Frag 是一种确定性逻辑漏洞,无需时序窗口,失败时不会使内核惊慌,且成功率极高。xfrm-ESP 的分页缓存写入位于 esp_input(),即 IPsec ESP 接收路径中。当 skb 是非线性但缺少破片列表时 ,代码跳过强制 性的 skb_cow_data() 缓冲区分配步骤,直接跳转到攻击者植入的破片上的原位 AEAD 解密。利用 XFRMA_REPLAY_ESN_VAL netlink 属性,攻击者可以控制 每个存储操作的位置 (文件偏移量)和 值 (4 字节),从而用静态根壳 192 字节写入 48 个 4 字节的分块,覆盖 /usr/bin/su 页面缓存中的任意字节。攻击者在用户空间中暴力破解K,直到产生所需的明文(例如将 /etc/passwd 第 1 行密码字段变成空字符串),从而实现 PAM nullok 认证绕过。1、受影响的发行版和内核版本
ESP 漏洞自提交 cac2661c53f3 (2017 年 1 月)起就存在,RxRPC 漏洞自 2dc334f1a63a (2023 年 6 月)起出现,使链条的有效窗口约为 9 年。已确认受影响的分布包括:- Ubuntu 24.04.4 (kernel 6.17.0-23-generic)
- RHEL 10.1 (kernel 6.12.0-124.49.1.el10_1.x86_64)
- openSUSE Tumbleweed (kernel 7.0.2-1-default)
- CentOS Stream 10 (kernel 6.12.0-224.el10.x86_64)
- AlmaLinux 10 (kernel 6.12.0-124.52.3.el10_1.x86_64)
- Fedora 44 (kernel 6.19.14-300.fc44.x86_64)
使用 SKBFL_SHARED_FRAG 标志确保拼接置顶页面始终通过 skb_cow_data() 路由的 ESP 变体补丁于 2026 年 5 月 7 日合并进了 netdev 树。最终合并补丁基于陈宽廷提交的共享击杀方法。RxRPC 补丁在上游保持未合并,该补丁在现有 的 skb_cloned() 门 上增加了 || skb->data_len ,以强制隔离非线性 skb。截至发布时,由于 2026 年 5 月 7 日另一第三方提前解除禁运,尚未为这两个漏洞分配任何 CVE 标识符。由于发行版级补丁尚未可用,管理员应立即使用以下命令禁用受影响的内核模块:这会将esp4、esp6 和rxrpc 模块列入黑名单并卸载,从而破坏 IPsec 和 RxRPC 的功能作为权衡。依赖 IPsec VPN 隧道的系统应在采用变通方案前仔细权衡运营影响,并在可用后优先安装分发式回移植的内核补丁。完整的技术文档和 PoC 漏洞代码可在研究者的 GitHub 仓库中获取。