RefluXFS是 Linux 内核的一个漏洞,于 7 月 22 日披露,并被跟踪为 RefluXFS CVE-2026-64600。该漏洞允许非特权本地用户覆盖 XFS 文件系统上 root 用户拥有的文件,并获得持久的 root 访问权限。
Qualys 表示,Red Hat Enterprise Linux 及其衍生版本、Fedora Server 和 Amazon Linux 的默认安装可能满足被利用的条件。
该公司演示了针对 setuid-root 二进制文件的竞争策略/etc/passwd。覆盖操作发生在块层。它能在重启后保留目标文件的所有权、权限、时间戳和 setuid 位,因此即使修改了 setuid-root 二进制文件,它仍然可以以 root 用户身份运行。
该修复程序已于 7 月 16 日合并,Linux 厂商已开始发布向后移植的内核。该补丁追溯到 2017 年的 Linux 4.11 版本:一个Fixes:标签命名提交3c68d44a2b49和一个标记为# v4.11.
谁会暴露出来
利用漏洞需要满足三个条件:
- 该系统运行的是 Linux 4.11 或更高版本,但没有安装 RefluXFS 修复程序。
- XFS 文件系统是用 . 创建的
reflink=1。 - 可读目标和攻击者可写目录位于同一个 XFS 文件系统上。
Qualys 表示,应首先修补暴露的多租户系统,这意味着任何启用了 reflink 的 XFS 主机,其中不受信任的代码可以通过 shell、CI 作业或受损的服务在本地运行。
该安全公告列出了符合这些条件的默认安装:Red Hat Enterprise Linux 8、9 和 10 及其下游衍生版本,Fedora Server 31 及更高版本,Amazon Linux 2023,以及 2022 年 12 月及之后的 Amazon Linux 2 镜像。RHEL 7 文件系统不受影响,因为它们早于 XFS reflink 支持。
Debian、Ubuntu、SLES 和 openSUSE 通常默认情况下不使用 XFS 作为根文件系统。只有当管理员在安装时选择启用了 reflink 功能的 XFS 文件系统时,才会使用 XFS。
检查根文件系统:
xfs_info / | grep reflink=
reflink=1这意味着条件二已满足。对任何其他已挂载的 XFS 卷运行相同的检查,其中受保护的文件和攻击者可写的目录共享同一个文件系统。
过时的映射关系
攻击者使用 XFS 引用链接将一个 root 用户拥有的文件克隆到一个临时文件中FICLONE,该临时文件只需要对源文件拥有读取权限,然后利用并发O_DIRECT写入操作攻击克隆文件。XFS 引用链接采用写时复制机制,因此两个文件最初都引用相同的物理磁盘块。
内核读取 inode 锁下的数据分支映射,并将其交给xfs_reflink_fill_cow_hole(),该锁循环使用该锁来预留事务空间。
第二个写入者可以在这段空隙期间完成写时复制操作,并将克隆的文件重新映射到一个新的数据块。当第一个写入者重新获得锁时,它会刷新写时复制分支,但继续使用旧的数据分支映射。
上游补丁清楚地描述了故障:“一旦我们重新获取 ILOCK,映射就会失效。”
这个过时的地址现在指向一个仅由原始受保护文件拥有的数据块。XFS 将该数据块视为未共享数据块,允许直接写入,因此原本要写入攻击者克隆文件的数据最终却写入了目标文件。
这是一个跨锁周期的先检查后使用错误。共享状态查询本身是正确的;它查询的是锁释放前捕获的块地址。
Hacker News 发现该补丁涉及两个辅助函数,xfs_reflink_fill_cow_hole()第二xfs_reflink_fill_delalloc()个辅助函数具有相同的锁循环模式,但并未出现在 Qualys 安全公告中。
Qualys威胁研究部门负责人Saeed Abbasi告诉The Hacker News,该模型同时发现了这两条路径,因为它们非常相似。在这两种路径中,修复程序都会在锁被释放之前获取快照,并根据计数器的变化ip->i_df.if_seq重新读取数据分支。xfs_bmapi_read()
直接 I/O 会跳过页面缓存,并且没有重新验证机制,因此写入操作会直接到达磁盘。由于它完全绕过了目标 inode,元数据永远不会改变,研究人员表示,他们的测试没有产生任何内核警告或日志条目。
在测试机上,这场竞赛通常在十秒内结束。已发布的演示程序会移除默认 RHEL 10.2 系统上的 root 密码。
Qualys公司表示,其人工智能模型发现了这一漏洞。该公司将Anthropic公司的受限访问前沿模型Claude Mythos Preview指向内核,并根据其技术咨询,“要求该模型查找类似于Dirty COW的漏洞”。
该模型定位了漏洞,编写了一个可用的root权限攻击程序,并起草了安全公告。随后,研究人员在标准的Fedora Server 44系统上复现了该漏洞,验证了模型的推理过程,并协调向上游披露了该漏洞。
阿巴斯说,团队对草稿的改动非常少。他们重写了模型在联系维护人员之前留下的三个占位符部分:最后补充说明、致谢和时间线。他们还替换了题词,将模型中引用的电视节目台词换成了歌词。“仅此而已,”他说。
Qualys 已经发现了很多这类漏洞。就在一天前,它披露了Ubuntu Desktop 中 snap-confine 的一个漏洞,CVE-2026-8933该漏洞利用两个竞争条件,允许本地用户在默认安装下获得 root 权限。今年 5 月,它还发现了内核 ptrace 检查中一个存在了九年的漏洞。
打补丁,然后重启
红帽已针对受影响的 RHEL 8、9 和 10 版本发布了重要级别的内核安全公告。这些勘误表于 7 月 14 日开始陆续发布,比统一披露日期提前了八天:RHEL 8 的勘误表为 RHSA-2026:39179 和 RHSA-2026:39180,RHEL 10 的勘误表为 RHSA-2026:39494,扩展支持和 SAP 版本的勘误表则在 7 月 17 日之前陆续发布。
覆盖范围因版本而异,因此请确认您所使用的版本是否存在相应的安全公告。在 RefluXFS 正式命名之前,所有按时应用了这些勘误表的用户都已获得覆盖。在确认是否受影响之前,请检查您的补丁日期。
供应商的漏洞跟踪系统将该漏洞记录在名为“内核:使用 reflink 时 XFS 数据损坏”的文件中。该条目于 7 月 10 日自动导入,最初将问题描述为重新链接文件可能导致数据损坏。
截至7月23日,Debian的漏洞追踪器已将trixie-security中的修复程序列为内核版本6.12.96-1,并将不稳定版本列为已修复版本7.1.4-1。Trixie的基础内核6.12.94-1和forky内核7.1.3-1仍然被标记为存在漏洞,bookworm和bullseye及其安全分支也同样如此。
文件系统创建后,没有挂载选项或系统控制命令可以禁用 XFS 引用链接,Qualys 表示目前没有有效的缓解措施或临时配置更改。该公司测试发现,强制模式下的 SELinux、seccomp、内核锁定和容器边界等措施均无法阻止此问题。KASLR 和 SMEP 等内存保护机制也未生效:这是块层写入,而非内存损坏。
一个看似存在的限制实际上并非如此。只有当目标块以非共享状态开始时,竞争条件才会触发,因此管理员已经使用 reflink 复制的文件不会受到影响。该安全公告指出,非特权用户可以通过运行命令来重置此条件chsh,并且 setuid-root 权限的二进制文件本身就不太可能被重新链接过。
Qualys并未发布独立的漏洞利用代码。Red Hat的漏洞追踪系统在7月22日记录了一个公开的概念验证,并指向发布在oss-security邮件列表上的安全公告,该公告完整地描述了该漏洞的攻击过程和利用步骤。Abbasi否认了这种分类。他表示,漏洞利用部分“只是对利用机制的概述”,Qualys不会发布其漏洞利用代码,但已将代码提供给XFS维护人员,以便他们能够重现该漏洞并测试修复方案。截至撰写本文时,所有追踪该漏洞的厂商均未报告已在实际环境中发现该漏洞。
安装此软件包不会替换内存中已运行的内核。请应用供应商更新,重启系统,并验证系统是否正在运行修复后的内核。