哈喽,最近大家还在为 Linux 内核的 Copy Fail(CVE-2026-31431)漏洞焦头烂额吗?别急着喘气,它的“继任者”——Dirty Frag 已经悄然而至,并且杀伤力呈指数级上升。
今天,我就带大家深挖一下这个目前正被疯狂热议的本地提权(LPE)新核弹。相比于以前那些依赖玄学“条件竞争(Race Condition)”的漏洞,Dirty Frag 是一个100%指哪打哪的确定性逻辑漏洞。只要执行,绝不内核恐慌(Kernel Panic),提权成功率几乎拉满。
01 / 漏洞初探:不仅仅是一个 Bug,而是一个漏洞类
首先,定个调子:Dirty Frag 不是单一的 Bug,而是一个漏洞类(Class),它是大名鼎鼎的 Dirty Pipe 和 Copy Fail 的延伸。
安全研究员 Hyunwoo Kim 发现,通过将两个页缓存(Page-Cache)写入漏洞串联起来,就能在几乎所有的主流 Linux 发行版上实现完美的 Root 提权。这两个漏洞分别是:
- xfrm-ESP Page-Cache Write (CVE-2026-43284,源于 2017 年 1 月的代码提交)
- RxRPC Page-Cache Write (CVE-2026-43500,源于 2023 年 6 月的代码提交)
目前,包括 Ubuntu 24.04.4, RHEL 10.1, CentOS Stream 10 等在内的主流系统统统中招。
02 / 核心原理解析:当 no-COW 遇到底层解密
很多兄弟可能会问,这个漏洞的底层逻辑到底是什么?为什么能越权写内存?
问题的根源出在网络协议栈的快速路径(Fast Path)上。简单来说,漏洞隐藏在 ESP-in-UDP 的 MSG_SPLICE_PAGES 零拷贝(no-COW)快速处理路径中,通过 XFRM 用户 netlink 接口就可以触达。
当内核处理 esp4、esp6 和 rxrpc 的就地解密(in-place decryption)时,如果 socket 缓冲区携带了非内核私有的分页碎片(Paged Fragments)——比如通过 splice(2)、sendfile(2) 或者 MSG_SPLICE_PAGES 附加的管道页(Pipe Pages),接收路径就会直接在这些外部支持的页面上进行解密。
这就导致了一个极其致命的后果:内核会暴露或篡改非特权进程仍然持有引用的明文数据。与 Copy Fail 类似,这为攻击者提供了一个 4 字节的存储原语(Store Primitive),允许我们极其精准地覆盖内核页缓存中的关键数据,进而实现权限提升。
03 / 绝妙的漏洞链(Chain):相互掩护的“组合拳”
如果你觉得单独一个越权写就足够了,那就太小看现代 Linux 的防御机制了。
在实战利用中,利用 xfrm-ESP 漏洞需要攻击者创建一个用户命名空间(User Namespace)。但这招在 Ubuntu 上行不通,因为 Ubuntu 的 AppArmor 默认拦截了未授权的命名空间创建。
这时候,漏洞链的精妙之处就体现出来了:RxRPC Page-Cache Write 闪亮登场。
RxRPC 触发不需要创建命名空间的权限!但是,rxrpc.ko 模块在很多发行版(比如 RHEL 10.1)中默认是不编译不加载的。巧合的是,Ubuntu 偏偏默认加载了 rxrpc.ko。
这就是一条完美的交叉感染链:
- 在允许创建命名空间的环境(如 RHEL):
- 在拦截命名空间但默认加载 rxrpc 的环境(如 Ubuntu):
两个变种互为补充,实现了对主流 Linux 生态的无死角覆盖。
04 / 实战威胁与防御对抗
大家别以为这只是躺在实验室里的理论。微软的威胁情报团队已经捕获到了利用 "Dirty Frag" 或 "Copy Fail" 变体的在野攻击。
在真实场景中,攻击者通过外部 SSH 接入后,会拉起交互式 Shell,放置并执行一个名为 ./update 的 ELF 二进制文件,直接触发提权,然后滥用 su 命令。提权后,他们甚至会去篡改 GLPI LDAP 认证文件,并强制擦除 PHP Session 来破坏现有会话。
⚠️ 划重点:现有缓解措施无效!很多运维同学之前为了防 Copy Fail,禁用了 algif_aead 模块。但我必须提醒各位,Dirty Frag 的触发完全不依赖 algif_aead 模块。你以为你的系统安全了,其实它正在“裸奔”。
不过 Wiz 的研究员也指出了一点安慰:这个漏洞的利用需要能够操作底层 socket 缓冲区(往往需要 CAP_NET_ADMIN 权限)。因此,在默认配置了 seccomp 配置文件的 Kubernetes 容器化环境中,利用门槛相对较高,但这并不意味着可以掉以轻心。
05 / 临时抢修方案(非常重要!)
目前,xfrm-ESP 漏洞(CVE-2026-43284)在主线内核(commit f4c50a4034e6)已经修复,但 RxRPC 漏洞(CVE-2026-43500)截至我发文时依然处于 0day 状态,没有补丁!
并且网上已经流出了只需一行命令即可 Root 的 PoC。
在官方补丁全面推送之前,我强烈建议各位运维和开发兄弟,立刻对 esp4, esp6, 和 rxrpc 模块进行黑名单禁用处理。大家可以直接在终端执行以下命令进行临时防御:
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; true"
安全无小事,大家赶紧检查一下自己线上的机器吧!如果文章对你有帮助,别忘了点赞、在看、转发给团队的兄弟们提个醒。我们下期技术解析再见!