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

CVE-2026-43301: Linux内核Wave5驱动PM计数下溢漏洞

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

漏洞信息

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

相关标签

Linux KernelCVE-2026-43301资源管理错误DoS本地漏洞

漏洞概述

Linux内核中的chips-media wave5驱动程序存在一个资源管理漏洞。该漏洞由于驱动在移除路径中无条件调用pm_runtime_put_sync(),而未正确处理设备可能已因自动挂起机制而处于挂起状态的情况。当设备已挂起时,PM运行时使用计数为0,此时调用put_sync会导致计数下溢至-1。这会在模块卸载时触发内核警告,并可能导致内核工作线程销毁异常,影响系统可用性。

技术细节

该漏洞发生在Linux内核的多媒体驱动部分,具体位于chips-media wave5驱动中。在驱动初始化的probe阶段,代码调用了pm_runtime_use_autosuspend()来启用自动挂起功能。然而,在驱动移除的remove阶段,代码错误地调用了pm_runtime_put_sync()。PM运行时子系统使用引用计数来管理设备的电源状态。如果设备在移除前已经通过自动挂起机制进入休眠,其引用计数已经为0。此时再次调用pm_runtime_put_sync()会将引用计数减为-1,导致计数下溢。这种逻辑错误不仅破坏了内核电源管理的状态一致性,还会在模块卸载时触发kthread_destroy_worker中的WARNING,表明系统资源管理出现异常。虽然该漏洞主要导致拒绝服务(DoS)或内核警告,但修复它是必要的,以防止潜在的稳定性问题。修复方案是在remove路径中将pm_runtime_put_sync()替换为pm_runtime_dont_use_autosuspend(),从而正确配对probe中的调用,并允许pm_runtime_disable()正确清理引用计数。

攻击链分析

STEP 1
步骤1:本地访问
攻击者需要拥有本地访问权限,能够加载或卸载内核模块。
STEP 2
步骤2:加载驱动
加载chips-media wave5驱动模块,驱动初始化并启用自动挂起。
STEP 3
步骤3:触发自动挂起
保持设备空闲,使其通过自动挂起机制进入休眠状态,此时PM引用计数为0。
STEP 4
步骤4:卸载驱动
执行模块卸载操作,触发驱动的remove函数,该函数错误地调用pm_runtime_put_sync()。
STEP 5
步骤5:触发漏洞
PM引用计数从0下溢至-1,触发内核WARNING,可能造成系统不稳定。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * Conceptual PoC for CVE-2026-43301 * Triggering the PM usage count underflow in Linux Kernel wave5 driver. * This requires a system with the vulnerable driver loaded. */ #include <stdio.h> #include <stdlib.h> int main() { printf("[+] Attempting to trigger CVE-2026-43301...\n"); // Step 1: Ensure the driver is loaded (if not already) system("modprobe wave5"); // Step 2: Wait for the device to autosuspend (usage count drops to 0) // The delay depends on the autosuspend delay configured in the driver. printf("[*] Waiting for autosuspend..."); sleep(5); // Step 3: Unload the module to trigger the remove path // This calls the vulnerable remove() function which executes // pm_runtime_put_sync() on a device with count 0, causing underflow. printf("[*] Unloading module to trigger remove path...\n"); system("rmmod wave5"); // Check dmesg for warning: // "WARNING: CPU: X PID: Y at ... vdec ... Runtime PM usage count underflow!" printf("[+] Done. Check 'dmesg' for kernel warnings.\n"); return 0; }

影响范围

Linux Kernel (chips-media wave5 driver)

防御指南

临时缓解措施
限制非特权用户对内核模块的加载和卸载权限,虽然这不能修复漏洞,但可以减少被触发的机会。最根本的缓解措施是及时更新内核补丁。

参考链接

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