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

medium Nessus 插件 ID 335827

简介

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

描述

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

- mm/slab:使用新的 kmalloc 类型,防止自由路径中未限制边界的递归 提交 280ea9c3154b (mm/slab:
避免从其自身的 slab 分配slabobj_ext数组)通过在数组大小等于分配对象的大小时提高 obj_exts 数组的分配大小,避免了从相同大小的 kmalloc 缓存递归分配 obj_exts。然而,正如 Danielle Costantino 和 Shakeel Butt 报告的那样,即使是来自不同大小的 kmalloc 缓存的 slab 也可以通过相互分配 obj_exts 数组来形成一个循环 [1]:发生了什么:KMALLOC_NORMAL slab 的 obj_exts 数组(用于分配分析/memcg 核算)本身是从 KMALLOC_NORMAL 缓存中生成的,因此 slab 保存另一个 slab 的obj_exts数组关系可以形成循环。sizeof(struct slabobj_ext) == 16 和主机的几何:- kmalloc-512 有 64 个对象/slab ->数组为 64*16 == 1024 字节,由 kmalloc-1k 提供服务;- kmalloc-1k 有 32 个对象/slab ->数组为 32*16 == 512 字节,由 kmalloc-512 提供。因此,kmalloc-512 板和 kmalloc-1k 板可以固定对方的obj_exts阵列。丢弃一个会释放另一个的数组,这将清空并丢弃该 slab,从而释放第一个数组,依此类推:__free_slab() -> free_slab_obj_exts() -> kfree() -> discard_slab() -> __free_slab() 沿着循环递归,直到堆栈耗尽。通过内存分配分析,这允许自由路径中不受限制的递归,并导致元机群中的生产主机上的堆栈溢出 [1]: 缺陷:TASK:堆栈保护页面被命中 错误:堆栈保护页面 RIP:0010:kfree+0x8/0x5d0 调用跟踪:__free_slab+0x66/0xc0 kfree+0x3f0/0x5d0 ...(~125x __free_slab <-> kfree) ... <kernel driver freeing a resource> do_syscall_64 建议 [1] 解决此问题,方法是始终从大小大于对象大小的 kmalloc 缓存(或大型 kmalloc)提供 obj_exts 数组分配。然而,正如 Vlastimil Babka [2] 所指出的,这可能会浪费过多的内存,因为大 kmalloc 大小(例如 kmalloc-8k)的 slab 通常需要远小于对象大小的obj_exts数组。因此,与其扩大规模,不如采取不同的方法;分配 obj_exts 数组时,不允许在 kmalloc 类型之间形成循环。目前,所有obj_exts数组均由普通 kmalloc 缓存提供。如果从永远不能具有obj_exts数组的特殊 kmalloc 类型提供普通 kmalloc 缓存的obj_exts数组,则无法创建循环。为此,请创建一个名为 KMALLOC_NO_OBJ_EXT 的新 kmalloc 类型。KMALLOC_NO_OBJ_EXT缓存在 1) 内存分配配置未永久禁用的情况下SLAB_NO_OBJ_EXT或 2) 优先级高于 KMALLOC_CGROUP 的 kmalloc 类型使用KMALLOC_NORMAL别名时,将使用标记创建。现在必须推迟 KMALLOC_NO_OBJ_EXT 缓存的 Sheaf 引导,因为当该大小的 KMALLOC_NO_OBJ_EXT 缓存尚未准备就绪时obj_exts分配 barn 可触发正常 kmalloc 缓存的数组分配。为简单起见,请稍后为所有 kmalloc 缓存执行滑包引导。引入新的 slab 分配标记 SLAB_ALLOC_NO_OBJ_EXT 以防止分配obj_exts数组,并让 kmalloc_slab() 在指定时替代类型以KMALLOC_NO_OBJ_EXT。请注意,由于 kmalloc_flags kmalloc_type() 绕过 kmalloc 快速路径,因此 () 保持不变。不将SLAB_ALLOC_NO_RECURSE传递到 alloc_slab_obj_exts() 中的 kmalloc_flags(),而仅在从普通 kmalloc 缓存分配对象时才使用 SLAB_ALLOC_NO_OBJ_EXT。虽然这可防止不受限制的obj_exts递归分配,但允许KMALLOC_NO_OBJ_EXT缓存具有滑轮。由于 sheaf 分配指定了阻止分配 sheave 和 obj_exts 数组的SLAB_ALLOC_NO_RECURSE,因此递归深度是有限的。obj_exts非 ---truncated--- (CVE-2026-74576) 的数组

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

解决方案

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

另见

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

插件详情

严重性: Medium

ID: 335827

文件名: unpatched_CVE_2026_74576.nasl

版本: 1.2

类型: Local

代理: unix

系列: Misc.

发布时间: 2026/8/15

最近更新时间: 2026/8/16

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

风险信息

VPR

风险因素: Low

分数: 3

百分位: 23.68

CVSS v2

风险因素: Low

基本分数: 2.1

时间分数: 1.8

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

CVSS 分数来源: CVE-2026-74576

CVSS v3

风险因素: Medium

基本分数: 5.5

时间分数: 5.1

矢量: 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: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/8/15

参考资料信息

CVE: CVE-2026-74576