“Dirty Frag”:自2017年以来影响所有Linux系统的root提权漏洞,因禁运失败而未发布补丁

在安全领域,有一个不成文的规则,称为“禁运期”,在此期间,研究人员、开发人员和发行商共同准备补丁。 2026年5月8日,禁运被第三方打破。 Dirty Frag 是 Linux 内核中的一个提权漏洞,已向全世界发布了可用的演示代码,无需补丁或 CVE。 2017 年起的几乎所有 Linux 发行版都符合资格。


日本时间 2026 年 5 月 8 日,韩国安全研究员 Hyunwoo Kim(@v4bel)在 oss-security 邮件列表和 GitHub 上披露了 Linux 内核中存在的本地提权漏洞“Dirty Frag”。该漏洞允许普通用户通过将xfrm(IPsec)和rxrpc子系统中的两个缺陷链接在一起来获得root权限。自 2017 年 1 月起,它影响了所有主要 Linux 发行版(Ubuntu、RHEL、Fedora、openSUSE 等),权限提升也在 WSL2 中得到了确认。

Kim 于 4 月 30 日向 Linux 内核团队报告后,“无关第三方”打破了禁运,迫使发行商在准备补丁之前披露补丁。因此,此时还没有分配CVE编号,并且几乎没有针对主要发行版的兼容补丁(AlmaLinux目前处于测试阶段)。概念验证 (PoC) 已经发布,并且可以通过单个命令获得 root 权限。

之前披露的复制失败 (CVE-2026-31431) 缓解措施(将 algif_aead 模块列入黑名单)对于 Dirty Frag 无效。目前推荐的临时解决方案是将 esp4、esp6 和 rxrpc 内核模块列入黑名单并卸载,但这会影响使用 IPsec 或 AFS 文件系统的环境中的功能。

从: 脏碎片 — GitHub(V4bel/dirtyfrag)Dirty Frag:通用 Linux LPE — oss-security(Openwall)

【追记(2026年5月8日)】已为 Dirty Frag 的 xfrm-ESP 端的缺陷分配了 CVE 编号 (CVE-2026-43284)。详情请见编辑部评论文末。

【编辑部评论】

现在该怎么办

在阅读本文时,几乎没有兼容的补丁。首先要检查的是您的环境是否依赖于 IPsec 隧道(strongSwan、Libreswan 等)或 AFS 分布式文件系统 (kAFS)。

如果您不依赖它,请使用以下命令将易受攻击的内核模块列入黑名单,如果已加载,则将其卸载。

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; true"

此命令禁用 esp4/esp6(负责 IPsec ESP 转换的模块)和 rxrpc(AFS 客户端使用的传输)。请勿将其应用于终止或中继 IPsec 隧道的服务器。它将停止运行。

在依赖 IPsec 的环境中,唯一的选择是在等待补丁发布时加强对可疑权限升级尝试的日志监控。类似的步骤在 WSL2 环境中也有效。

AlmaLinux已经发布了测试阶段的补丁,是本文发表时响应最快的发行版。

为什么没有补丁就发布了?

在安全领域,原则是“协调漏洞披露(CVD)”,即研究人员、供应商和分销商共同努力,从发现漏洞到发布修复程序。该框架的核心是“禁运”。这是一项协议,通过在一段时间内将漏洞信息保密并在这段时间内准备和分发补丁,最大限度地减少“用户易受攻击的时间”。

Hyunwoo Kim 于 2026 年 4 月 30 日向 Linux 内核团队报告了 Dirty Frag。然而,一个“无关第三方”打破了这一禁令,在分发者毫无准备的情况下,信息被泄露。因此,Kim 在咨询并请求 linux-distros(Linux 发行版开发者的安全信息共享列表)的维护者后,选择公开他的文档和演示代码。这种情况本来就不应该存在,PoC 分布在世界各地而没有分配 CVE。

目前尚不清楚是谁打破了禁运。然而,禁运解除后,研究人员可用的选择是有限的。如果我们保持沉默,只有攻击者知道信息,而防御者将一无所知。如果公开,攻击者可以使用它,但防御者也可以处理它。金的选择是后者。

什么是“脏系”?从肮脏的管道延续的家谱

“脏碎片”这个名字并非巧合。正如研究人员自己在常见问题解答中所解释的那样,它显示了源自 Dirty Pipe 的漏洞类的继承。

2022 年发布的 Dirty Pipe (CVE-2022-0847) 在当时引起了巨大轰动,因为它是一个允许用户在没有写权限的情况下写入 Linux 页面缓存的缺陷。这一事件让全世界意识到一种被称为“页面缓存污染”的攻击模式,它潜伏在 Linux 内核的缓冲区管理深处。

2026 年,Copy Fail (CVE-2026-31431) 作为类似缺陷被披露。在调查 Copy Fail 的过程中,Kim 发现了 Dirty Frag。

Dirty Frag 与 Copy Fail 共享相同的“接收器”,但无论是否存在 algif_aead 模块都会被触发。换句话说,即使在 algif_aead 被列入黑名单作为复制失败缓解措施的环境中,它仍然容易受到 Dirty Frag 的影响。认为“我们是安全的,因为我们采取了之前的措施”是错误的。

攻击的本质是,当使用零拷贝发送(splice())将页面缓存中的页面包含在发送缓冲区中时,接收内核会对该页面执行就地解码。它可以写入只读内存并修改系统文件缓存,例如/etc/passwd。篡改保留在内存中,并在重新启动后撤消。然而,整个系统在重新启动之前都在攻击者的手中。

接下来会发生什么?

补丁发布:AlmaLinux 正处于测试阶段,预计很快就会发布生产版本。 CloudLinux 目前正在构建/QA 管道中处理 CL7h、CL8、CL9 和 CL10 的补丁。 KernelCare 的实时补丁(无需重新启动即可应用)也在开发中。据说,针对 netdev 树的上游内核补丁正在开发中。

CVE 分配:由于禁运被打破,CVE 编号尚不存在。预计补丁一可用就会按顺序分配。

与复制失败联锁:Copy Fail (CVE-2026-31431) 已知会在野外被利用,Dirty Frag 也可能被利用。看看 CISA 或其他国家的 CERT 是否发出警告也很有趣。

下一个发现的可能性:Kim 在研究 Dirty Pipe 和 Copy Fail 后发现了 Dirty Frag。目前尚不清楚属于同一错误类别的任何未知缺陷是否仍然存在。

这篇文章将会更新

Dirty Frag 是一种持续存在的情况,在没有补丁的情况下发布。一旦确认每个发行版的补丁发布状态、CVE 编号分配、CISA 和国家 CERT 的建议以及合并到上游内核,我们将立即更新本文。

信息移动的顺序是上游补丁 → 向后移植到每个发行版 → CVE 分配 → 公共机构推荐我认为这将是趋势。任何时间安排都将反映在本文中。

【追记(2026年5月8日)】xfrm-ESP 页缓存写入缺陷构成脏碎片CVE-2026-43284已被分配。另外,Linux 主线(netdev 树)的补丁(提交)f4c50a4034e6) 合并已被确认。

【术语解释】

本地权限提升 (LPE)
已经拥有系统访问权限(一般用户权限)的攻击者夺取管理员(root)权限的攻击的总称。与涉及远程入侵的远程代码执行(RCE)不同,这是指从内部扩展权限。脏碎片就属于这一类。

禁运
在协作安全漏洞披露 (CVD) 中,为补丁准备预留了一段封闭期。为研究人员、供应商和分销商留出时间同步工作。在此期间向外界泄露信息的行为称为“禁运失败”。

页面缓存
Linux 将磁盘上的文件内容暂时保留在内存中的机制。加快文件访问速度的东西。 Dirty Frag 通过非法重写此页面缓存来更改重要文件(例​​如 /etc/passwd)的内容。

xfrm(转换框架)
Linux 内核中 IPsec(互联网通信加密协议)的实现平台。 esp4 和 esp6 模块构成了这个框架,这就是漏洞所在,因为它们在 Dirty Frag 链中发挥着作用。

rxrpc(AF_RXRPC 传输)
AFS(安德鲁文件系统)分布式文件系统的客户端实现使用的传输协议。 rxrpc.ko 模块不包含在大多数发行版中,但在 Ubuntu 上默认加载。脏碎片链的另一端。

PoC(概念验证:演示代码)
已发布示例代码以证明该漏洞可以在野外被利用。 Dirty Frag 已经在 GitHub 上发布了代码,只需编译运行即可获得 root 权限。

[参考链接]

脏碎片 — GitHub(V4bel/dirtyfrag)(外部)
包含官方文档、演示代码 (exp.c) 以及发现者 Hyunwoo Kim 本人撰写的技术详细文章的存储库。主要来源。

Dirty Frag:通用 Linux LPE — oss-security(Openwall)(外部)
Kim 本人在 oss-security 邮件列表中发布的披露文件。包括封锁失败的情况和披露决定的背景。

Dirty Frag 支持状态 — AlmaLinux 官方博客(外部)
具有最快补丁支持的发行版之一。测试阶段的内核构建状态和应用程序正在不时更新。

Dirty Frag 支持状态 — CloudLinux 官方博客(外部)
我们不断更新 CL7h、CL8、CL9 和 CL10 的补丁构建状态以及 KernelCare 实时补丁的进度。

[参考文章]

Linux 内核脏碎片 LPE 漏洞可实现跨主要发行版的根访问 — 黑客新闻(外部)
安全媒体的技术解释。整理攻击链的细节及其与 Copy Fail 的关系。

脏碎片漏洞提前公开 — Phoronix(外部)
来自 Linux 内核专业媒体的突发新闻。介绍禁运失败的背景和临时措施。

毁灭性的“脏碎片”漏洞被泄露——汤姆的硬件(外部)
一篇文章详细介绍了影响的广度,包括确认 WSL2 中的权限升级。

[相关文章]

脏牛、脏管、复制失败:三代Linux LPE的比较,揭示了AI发现漏洞的时代轮廓 (创新主题)
一篇解释性文章,比较了 Linux LPE 三代的沿袭,从 Dirty Cow 到 Dirty Pipe 和 Copy Fail。作为理解Dirty Frag定位的参考。还讨论了人工智能参与漏洞发现的历史背景。

影响主要Linux发行版的732字节漏洞“Copy Fail”,各厂商的响应情况 (创新主题)
随着时间的推移,跟踪每个发行版对 Copy Fail (CVE-2026-31431)(Dirty Frag 的直接前身)的初始响应。它总结了一系列的发展,突出了每家公司危机管理理念的差异。

复制失败 (CVE-2026-31431) | 732字节Python窃取root权限,AI发现Linux内核逻辑漏洞 (创新主题)
一篇解释性文章,深入探讨了复制失败的技术细节以及它是如何被发现的。它仔细地解释了逻辑错误如何与 Dirty Frag 属于同一错误类别,以及涉及 AI 的发现过程的背景。

[编者后记]

为了使漏洞披露发挥“系统”的作用,至少需要两个前提。一是研究人员诚实地报告。另一件事是,收到举报的人必须诚实回应。在 Dirty Frag 的披露中,满足了前者。 Hyunwoo Kim 于 4 月 30 日向内核团队报告,并继续与 linux-distros 维护人员进行讨论。破坏系统的是系统外的“第三方”。

安全界对君子协定(即禁运)的依赖的脆弱性再次暴露出来。然而,很难说是否有替代方案。完全保密会造成只有攻击者知道的状态,而仓促披露会造成防御者无法准备的状态。禁运是试图在这两种罪恶之间取得平衡,而这种平衡很容易被局外人打破,就像在本例中一样。

另一个有趣的地方是 Dirty Frag 出现在“Dirty Pipe → Copy Fail → Dirty Frag”谱系的末尾。在研究人员的关注范围内可以发现如此多属于同一 bug 类别的缺陷,这一事实并不能否认存在尚未发现的缺陷的可能性。这一系列的披露并不是故事的结束,可能还会有更多的事情发生。

本文将根据有关“脏碎片”的更新进行更新。我们将在补丁发布、CVE 分配和公共机构建议得到确认后进行更新。