复制失败与脏碎片:Linux 页面缓存漏洞影响所有主流发行版

2026-05-15 1 阅读 作者:Matt Saunders
在一周内,两处 Linux 内核本地权限提升漏洞相继被公开披露。其中,由安全公司 Theori " 于 2026 年 4 月 29 日披露的“ 复制失败 "(Copy Fail)”( CVE-2026-31431 "), 以及由研究员 Hyunwoo Kim " 于 2026 年 5 月 7 日披露的“脏碎片(Dirty Frag)”( CVE-2026-43284 " 和 CVE-2026-43500 " ),均可以使无特权的本地用户在受影响的发行版上获得 root 权限。这两个漏洞都会影响页面缓存,而且与 2022 年的“脏管道(Dirty Pipe)”漏洞属于同一漏洞大类。 复制失败漏洞是由 Theori 团队利用其基于 AI 的安全工具 Xint Code " 发现的。该团队表示,该漏洞是对 Linux 的 crypto/ 子系统进行扫描约一小时后发现的,整个过程仅需要一个操作符提示,而且不需要自定义测试框架。该漏洞本身源于内核模块 algif_aead 的逻辑缺陷,这个模块是在 2017 年的一次就地优化中引入的。一个没有任何特权的进程可以将数据插入 AF_ALG 套接字,并对不属于它的文件页面缓存执行小规模地写入操作。由于页面缓存在主机上共享,相同的写入操作可能影响属于 setuid 二进制文件的文件。Theori 发布了一个独立的 Python 概念验证程序( 732 字节)。它只需要 Python 标准库,即可在未经修改的情况下攻破 Ubuntu 24.04 LTS、Amazon Linux 2023 、RHEL 10.1 和 SUSE 16 系统的 root 权限。 “复制失败仅需一个无特权的本地用户账户——无需网络访问权限、内核调试功能或预装的加密组件。内核加密 API(AF_ALG)在几乎所有主流发行版的默认配置中均处于启用状态,因此,从 2017 年起至补丁发布前的整个时间段内,该漏洞都处于可利用状态。”—— Theori,copy.fail " 披露时间线 "显示,Theori 于 2026 年 3 月 23 日向 Linux 内核安全团队报告了该问题。该团队次日便进行了初步确认,并于 3 月 25 日前提出了补丁并完成审核,4 月 1 日完成主线提交,4 月 22 日分配了 CVE-2026-31431 编号。该漏洞于 2026 年 4 月 29 日向公众披露。此后数日,各大发行版陆续发布了修复补丁。Bugcrowd 安全研究员 Casey Ellis 在 Bugcrowd 博客中写道 ",Theori“并非为了追逐潮流而转向 AI 漏洞利用开发。他们之所以转型,是因为当前的数学模型更倾向于这一方向。” 在复制失败漏洞披露一周后,Hyunwoo Kim 发布了 脏碎片 "漏洞,并将其描述为同一类漏洞的延伸。脏碎片串联了两个独立的漏洞:CVE-2026-43284(影响 esp4 和 esp6 模块的 xfrm-ESP 页面缓存写入漏洞)以及 CVE-2026-43500(影响 rxrpc 的 RxRPC 页面缓存写入漏洞)。这两者结合所覆盖的配置范围比单独任何一个漏洞都要广泛,这源于它们能在不同发行版的默认配置下相互弥补彼此的不足。 “xfrm-ESP Page-Cache Write 提供了一种强大的任意 4 字节 STORE 原语(类似于复制失败),并且包含在大多数发行版中,但它需要创建命名空间的权限。Ubuntu 有时会通过 AppArmor 策略阻止没有特权的用户创建命名空间。在这种环境下, xfrm-ESP Page-Cache Write 无法被触发。虽然 RxRPC Page-Cache Write 不需创建命名空间的权限,但 rxrpc.ko 模块本身并未包含在大多数发行版中。不过,在 Ubuntu 上,rxrpc.ko 模块默认会被加载。"—— Hyunwoo Kim, dirtyfrag GitHub 存储库 " Kim 指出,这种链式攻击使这两个变体能够相互弥补对方的盲点,从而在所有经过测试的主要发行版上都能获取 root 权限。与许多内核漏洞利用不同,脏碎片并不依赖于竞争条件。Kim 将其描述为一个确定性的逻辑漏洞:内核在尝试失败时不会发生恐慌,而且成功率很高。CVE-2026-43284 影响了 2017 年 1 月至 2026 年 5 月补丁发布前的内核版本。CVE-2026-43500 覆盖的范围则比较狭窄,从 2023 年 6 月(受影响的 RxRPC 代码路径引入之时)起,至 2026 年 5 月 10 日止。 脏碎片漏洞的披露过程颇为特殊。Kim 在 README " 文件中指出,在 2026 年 5 月 7 日首次发布时,由于外部因素导致信息保密被打破,而且当时尚未发布补丁或分配 CVE 编号。当时,linux-distros 邮件列表的维护者们便建议 Kim 立即发布该文档,而非继续等待。发布后几天内,相关补丁和 CVE 标识符相继发布。 AlmaLinux 在漏洞披露当天就发布了详细说明 ",并很快发布了包含补丁的测试内核,生产库的更新则于 2026 年 5 月 8 日上线。 自 Trusty Tahr(14.04 LTS)以来的所有 Ubuntu 版本均受到了影响。Canonical 发布了一份缓解指南 ",涵盖了这两个脏碎片漏洞(CVE)。根据 kernel.org 的 CNA 评估,该指南将 CVE-2026-43284 的 CVSS 3.1 评分定为 8.8 (高危),并根据 Canonical 自身的评估将 CVE-2026-43500 的 CVSS 3.1 评分定为 7.8(高危)。同时,该指南还指出, CVE List 尚未为其分配评分。Canonical 的指南详细说明了如何通过 /etc/modprobe.d 阻止三个受影响的模块(esp4、esp6、rxrpc),包括重新生成 initramfs、卸载模块以及确认它们已经不再出现在 /proc/modules 中。使用 IPsec(StrongSwan) 或 AFS(RxRPC)的组织在应用此缓解措施前,应评估回归风险,因为该措施会禁用相关内核模块。 这两个漏洞都与脏管道(CVE-2022-0847)属于同一个领域,后者是 2022 年的一个 Linux LPE 漏洞, 当时相关的安全报道曾对此进行过讨论 "。脏管道允许无特权用户将数据插入只读文件的页面缓存中。虽然复制失败和脏碎片使用相同的页面缓存写入原语,但是通过不同的内核子系统进入该原语:复制失败通过加密 API 进入,而脏碎片则通过 IPsec 和 RxRPC 进入。这些漏洞能在经过严格审查的代码中存活多年,很可能是因为在审查 crypto/ 子系统、ESP 快速路径以及 RxRPC 接收路径时,主要关注的是加密正确性属性,例如 IND-CPA 安全性和抗侧信道攻击能力。而内存来源以及内核是否应通过该内存进行写入则属于另一类问题,标准审查流程并未针对此类问题进行检测。 Sysdig 威胁研究团队在 LinkedIn 上 发文 "称,“脏碎片漏洞表明,页面缓存写入漏洞正成为一种反复出现的攻击类型