Linux Distros 未修补的漏洞:CVE-2025-38472

medium Nessus 插件 ID 251301

简介

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

描述

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

- netfilternf_conntrack修复因删除未初始化的条目造成的崩溃 据报告尝试从哈希存储段列表中取消链接 conntrack 条目时conntrack 中存在崩溃[exception RIP:
__nf_ct_delete_from_lists+172] [..] #7 [ff539b5a2b043aa0] nf_ct_delete at ffffffffc124d421 [nf_conntrack] #8 [ff539b5a2b043ad0] nf_ct_gc_expired at ffffaffc124d999 [nf_conntrack #9 04aff039b] []
__nf_conntrack_find_get at ffffffffc124efbc [nf_conntrack] [..] nf_conn 结构被标记为从 slab 中分配但似乎处于部分初始化的状态ct hlist 指针是垃圾看起来与 ct 哈希值相似因而会发生崩溃。 ct->status 等于 IPS_CONFIRMED|IPS_DYING这是预期的 ct->timeout 是 30000 (=30s)这在意外。其他所有内容看起来与正常 udp conntrack 条目无异。如果我们忽略 ct->status 并假装其为 0则该条目与新分配但尚未插入哈希的条目匹配 - ct hlist 指针过载并且存储/缓存原始元组哈希 - ct->timeout 与相对值匹配新 udp 流的预期时间而不是绝对“jiffies”值。如果没有 IPS_CONFIRMED__nf_conntrack_find_get() 将跳过该条目。理论认为我们确实命中了下列争用cpu x cpu y cpu z 发现条目 E 发现条目 EE 已过期 <preemption> nf_ct_delete() 返回 E 至 rcu slab init_conntrack E 已重新初始化ct->status 设置为 0 回复 tuplehash hnnode .pprev 存储哈希值。就在 E 于 cpu x 上被删除之前cpu y 发现了 E。现在会在 cpu z 上重新初始化 E。 cpu y 在检查到期和/或确认位之前被抢占。 ->refcnt 设置为 1 E 现在由 skb 拥有
->timeout 设置为 30000 如果现在恢复 cpu y它将发现 E 已过期但会由于缺少 CONFIRMED 位而跳过 E。 nf_conntrack_confirm 被调用 设置ct->status |= CONFIRMED 这是错误的 E 尚未添加至哈希表。 cpu y 恢复时它观察到 E 已过期但已确认 <resumes> nf_ct_expired() -> yesct->timeout 为 30s确认位设置。 cpu y 将尝试从哈希表中删除 Enf_ct_delete() -> set DYING bit __nf_ct_delete_from_lists 即使此情况也不能保证会崩溃cpu z 仍持有表存储段锁因此 y 会阻断等待已设置 z CONFIRMED 但不保证 ct 会添加到哈希chaintoolong 或冲突解决逻辑都跳过插入步骤。回复 hnnode.pprev 仍会存储哈希值。解锁旋转锁返回 NF_DROP<unblocks, then crashes on hlist_nulls_del_rcu pprev>如果 CPU z 未将条目插入哈希表cpu y 将立即再次取消 E 的链接但不会发生崩溃。如果没有“cpu y”争用则“垃圾”hlist 无关紧要ct refcnt 保持在 1最终 skb 将被释放且 E 通过以下方式被破坏
nf_conntrack_put -> nf_conntrack_destroy -> nf_ct_destroy。要解决此问题请在表插入之后解锁之前移动 IPS_CONFIRMED 分配。Pablo 指出confirm-bit-store 可被重新排序为在 hlist add resp 之前发生。超时修复因此切换为 set_bit 和 before_atomic 内存屏障以防止这种情况发生。在设置 CONFIRMED 位之前其他 CPU 是否可以观察到新插入的条目无关紧要无法与上述事件区分开来 E 是旧的化身情况将跳过条目。同时更改 nf_ct_should_gc()以首先检查确认位。gc 序列为: 1. 检查条目是否已过期,如果未过期,则跳到下一个条目 2. 获取对过期条目的引用。 3. 调用 nf_ct_should_gc() 以仔细检查步骤 1。因此仅针对已到期检查已失败的条目调用 nf_ct_should_gc()。在此修补程序之后一旦确认的位检查通过
---truncated--- (CVE-2025-38472)

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

解决方案

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

另见

https://security-tracker.debian.org/tracker/CVE-2025-38472

插件详情

严重性: Medium

ID: 251301

文件名: unpatched_CVE_2025_38472.nasl

版本: 1.1

类型: local

代理: unix

系列: Misc.

发布时间: 2025/8/18

最近更新时间: 2025/8/18

支持的传感器: Frictionless Assessment Agent, Nessus Agent, Agentless Assessment, Nessus

风险信息

VPR

风险因素: Medium

分数: 4.4

CVSS v2

风险因素: Medium

基本分数: 4.9

时间分数: 3.6

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

CVSS 分数来源: CVE-2025-38472

CVSS v3

风险因素: Medium

基本分数: 5.5

时间分数: 4.8

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

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

漏洞信息

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

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

易利用性: No known exploits are available

漏洞发布日期: 2025/7/28

参考资料信息

CVE: CVE-2025-38472