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

CVE-2026-23446 Linux内核aqc111驱动拒绝服务漏洞

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

漏洞信息

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

相关标签

Linux Kernel拒绝服务死锁驱动漏洞本地攻击

漏洞概述

Linux内核net:usb:aqc111驱动存在拒绝服务漏洞。在设备挂起回调中错误调用电源管理(PM)变体写入命令,引发rpm_resume任务挂起死锁。此阻塞导致持有rtnl锁的任务无法继续,最终致使整个网络堆栈完全锁定,严重影响系统网络功能及可用性。

技术细节

该漏洞源于Linux内核aqc111驱动的suspend回调函数实现逻辑错误。当系统挂起USB设备时,aqc111_suspend被调用,但其内部调用了带有电源管理功能的aqc111_write32_cmd例程。该例程触发pm_runtime_resume_and_get,进而调用rpm_resume。由于父设备处于RPM_SUSPENDING状态,rpm_resume陷入无限等待。这一阻塞发生在持有rtnl锁的任务中,导致整个网络子系统停止响应,造成拒绝服务。

攻击链分析

STEP 1
步骤1:本地访问
攻击者需要在本地获得低权限用户访问权限。
STEP 2
步骤2:触发设备挂起
攻击者触发系统电源管理事件或直接与USB设备交互,导致aqc111驱动的suspend回调函数被调用。
STEP 3
步骤3:执行错误调用
aqc111_suspend内部调用了PM变体的write_cmd,尝试获取接口PM引用。
STEP 4
步骤4:发生死锁
系统尝试在父设备正在挂起时恢复它,导致rpm_resume任务挂起,并阻塞持有rtnl锁的进程。
STEP 5
步骤5:系统不可用
网络堆栈被锁定,导致系统网络功能完全瘫痪,实现拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # PoC to trigger the deadlock by interacting with USB power management # Requires local access and existence of the vulnerable device import os import sys # Path to the vulnerable USB device (hypothetical path) DEVICE_PATH = "/sys/bus/usb/devices/1-1/power/control" def trigger_suspend(): try: # Write 'auto' to trigger suspend/resume logic # This may cause the driver to enter the buggy suspend path with open(DEVICE_PATH, 'w') as f: f.write("auto") print("[+] Triggered device power state change") # Subsequent operations or system suspend may lead to the hang except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": if os.path.exists(DEVICE_PATH): trigger_suspend() else: print("[-] Device not found. This PoC requires the specific hardware.")

影响范围

Linux Kernel (特定受影响版本,详见Git提交记录)

防御指南

临时缓解措施
建议立即升级Linux内核。官方补丁通过将suspend回调中的write_cmd调用替换为_nopm变体来修复此问题,从而防止在电源管理操作期间发生死锁。

参考链接

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