Linux Distros 未修补的漏洞:CVE-2026-98974

critical Nessus 插件 ID 371499

简介

Linux/Unix 主机上安装的一个或多个程序包存在漏洞,但供应商表示不会修补此漏洞。

描述

Linux/Unix 主机中安装的一个或多个程序包受到一个漏洞影响,而供应商没有提供补丁程序。

- xfs:修复 exchange-range-to-eof 文件大小交换 Norbert Szetei 发布了一个修补程序,其中包含对 XFS_IOC_EXCHANGE_RANGE TO_EOF标记中一个缺陷的不完整描述。该错误诱骗 exchange-range 修改文件,使其共享从 EOF 之外开始的区块,这是绝对不允许的,因为文件从未写入超过 EOF 的数据,并且您只能共享写入的数据区块。这是随后所有不正确行为的关键。最终,我从诺伯特那里得到了对问题所在的描述:>公平。这里是带有物理块号,4k 块。peer 是要重写的文件>,file1 是最后清除标记>的文件。> > 启动,未共享任何内容:> > 对等机大小 4096 -> [100] > file1 大小 12288 -> [200] [201] [202] > donor1 大小 4096 -> [300] > donor2 大小 4096 -> [400] > > 1.FICLONERANGE 对等机的区块进入 file1 的中间插槽:> > 对等机大小 4096 -> [100] > file1 大小 12288 -> [200] [100] [202] reflink 标记集 > ^^^^^ 两个文件都拥有区块 100 > > 2。XFS_IOC_EXCHANGE_RANGE file1 与 donor1,file1_offset 0,> file2_offset 8192,长度 0,TO_EOF。交换一个区块,>大小与其交换:> > file1 大小 4096 -> [200] [100] [300] reflink 标志集 > ^^^^^^^^^^^ 仍然拥有,现在已超过 donor1 大小>大小 12288 -> [202] > > file1 表示它是一个区块长,但它仍然拥有三个。没有任何>未映射的内容。file2_offset为区块 2,因此此交换无法清除标记。> > 3.
XFS_IOC_EXCHANGE_RANGE file1 与 donor2,均偏移 0,长度 4096。> 通过i_disk_size这是两个交换所有内容的单块文件,因此 > xmi_can_exchange_reflink_flags() 同意并清除该标记:> > file1 大小 4096 -> [400] [100] [300] reflink 标记已清除 > donor2 大小 4096 -> [200] > > 区块 100 仍与对等项共享。> > 4.pwrite(file1, 4096, 4096),这是 file1 的第二个插槽,区块 100。> xfs_is_cow_inode(file1) 为 false,因此没有 CoW:> > 对等机大小为 4096 -> [100] 相同的区块,区块 100 > >新内容在这里唯一重要。PoC 下方,它会读取当前目录中>称为 peer 的文件。文件系统需要 reflink 和 > exchange-range,mkfs.xfs 7.x 默认会将其打开。所以,是的,TO_EOF正在搞砸文件大小,即使它实际上正在正确交换数据块。以下是 XFS_EXCHANGE_RANGE_TO_EOF 的预期行为,如其手册页所述: 忽略长度参数。file1_fd中从 file1_offset 到 EOF 的所有字节都移到了 file2_fd,file2 的大小也设为 (file2_offset+(file1_length-file1_offset))。同时,file2 中从 file2_offset 到 EOF 的所有字节移动到 file1,file1 的大小设置为 (file1_offset+(file2_length-file2_offset))。换句话说,如果我们只交换一部分文件数据,那么我们应该只交换与交换数据相关的部分文件大小。遗憾的是,代码会交换磁盘上的文件大小和内核文件大小,如果调用程序以非零偏移传递,则该做法是不正确的。混淆了文件大小后,PoC 对看似未引用链接的单块文件使用第二个交换范围调用。
由于文件大小设置不正确,exchange-range 认为其正在交换两个文件的完整内容,并清除已损坏文件上的 reflink 标记。这可允许对损坏文件进行扩展写入,以重写刚刚过 EOF 的共享区块。这已通俗地称为反流。正确设置文件大小后,第二个交换范围将不再认为其正在进行完整内容交换,因此不会清除其任一文件参数上的 reflink 标记。Norbert 在此修补程序的较早版本之后又提出了关于我们未正确处理 i_disk_size 状态的第二个投诉:> 偏移与内核i_size绑定,但会从>减去 ---truncated--- (CVE-2026-98974)

请注意,Nessus 依赖供应商报告的程序包是否存在进行判断。

解决方案

目前尚未有任何已知的解决方案。

另见

https://security-tracker.debian.org/tracker/CVE-2026-98974

插件详情

严重性: Critical

ID: 371499

文件名: unpatched_CVE_2026_98974.nasl

版本: 1.1

类型: Local

代理: unix

系列: Misc.

发布时间: 2026/10/23

最近更新时间: 2026/10/23

支持的传感器: Frictionless Assessment Agent, Nessus Agent, Agentless Assessment, Tenable Cloud Security, Tenable Self-Hosted Container Security, Nessus

风险信息

VPR

风险因素: Medium

分数: 6.9

百分位: 96.41

CVSS v2

风险因素: High

基本分数: 7.5

时间分数: 6.4

矢量: CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P

CVSS 分数来源: CVE-2026-98974

CVSS v3

风险因素: Critical

基本分数: 9.8

时间分数: 9

矢量: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

时间矢量: CVSS:3.0/E:U/RL:U/RC:C

漏洞信息

CPE: cpe:/o:debian:debian_linux:13.0, p-cpe:/a:debian:debian_linux:linux

必需的 KB 项: Host/local_checks_enabled, Host/cpu, global_settings/vendor_unpatched, Host/OS/identifier

易利用性: No known exploits are available

漏洞发布日期: 2026/10/23

参考资料信息

CVE: CVE-2026-98974