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

Linux内核HID prodiquals驱动空指针拒绝服务漏洞

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

漏洞信息

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

相关标签

Linux KernelDoSHIDNull Pointer DereferenceCVE-2026-43251

漏洞概述

Linux内核中的HID prodiquals驱动程序存在安全漏洞。由于未正确检查`pm->input_ep82`指针是否为空,攻击者通过伪造USB设备发送特定的报告描述符,可绕过`input_mapping()`钩子调用,导致该指针保持NULL状态。当系统后续访问该指针时,会触发空指针解引用,从而引发系统崩溃或拒绝服务。

技术细节

该漏洞位于Linux内核的HID子系统中,具体涉及`drivers/hid/hid-prodiquals.c`驱动文件。在正常设备连接时,`input_mapping()`回调会被调用以初始化`pm->input_ep82`。然而,伪造的USB设备可以发送构造的报告描述符,使内核解析时不触发该回调。由于代码缺乏对指针NULL值的检查,后续对该指针的访问会导致内核Oops或崩溃。攻击者需具备本地低权限,通常通过插入恶意USB设备触发,成功利用可导致系统可用性受损。

攻击链分析

STEP 1
物理接入或模拟USB设备
攻击者接入伪造的USB设备或使用虚拟化USB设备。
STEP 2
发送恶意报告描述符
设备向主机发送特制的HID报告描述符,该描述符设计为不触发input_mapping回调。
STEP 3
内核解析漏洞触发
Linux内核解析描述符,导致pm->input_ep82指针未被初始化(保持为NULL)。
STEP 4
空指针解引用
驱动程序后续尝试访问pm->input_ep82指针,触发内核空指针解引用错误。
STEP 5
系统崩溃
导致内核Panic或Oops,系统重启或停止响应,达成拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Conceptual PoC using Python and pyusb (Simulation) import usb.core import usb.util def trigger_crash(): # Find the device (Mocking the attack) dev = usb.core.find(idVendor=0x1234, idProduct=0x5678) if dev is None: print("Device not found") return # Detach kernel driver if active for cfg in dev: for intf in cfg: if dev.is_kernel_driver_active(intf.bInterfaceNumber): dev.detach_kernel_driver(intf.bInterfaceNumber) # Set configuration dev.set_configuration() # Send a malicious report descriptor that bypasses input_mapping # This descriptor is crafted to avoid setting up pm->input_ep82 malicious_descriptor = b'\x05\x01\x09\x06\xa1\x01\x05\x07\x19\xe0\x29\xe7\x15\x00\x25\x01\x75\x01\x95\x08\x81\x02\x95\x01\x75\x08\x81\x03\x95\x05\x75\x01\x05\x08\x19\x01\x29\x05\x91\x02\x95\x01\x75\x03\x91\x03\x95\x06\x75\x08\x15\x00\x25\x65\x05\x07\x19\x00\x29\x65\x81\x00\xc0' # Since we can't directly send a descriptor via pyusb easily to change HID parsing logic # without a custom gadget driver, this represents the payload structure # that would be sent by a malicious USB device. print("Sending malicious descriptor structure...") # In a real exploit, this hardware would present the bad descriptor on enumeration. if __name__ == "__main__": trigger_crash()

影响范围

Linux Kernel < 6.1 (根据Git commit推测)
Linux Kernel < 5.15 (根据Git commit推测)

防御指南

临时缓解措施
由于攻击需要物理接入或高权限虚拟化,最有效的临时缓解措施是严格管理USB设备接入权限,禁止未知的USB设备连接系统,或通过内核模块黑名单禁用hid-prodiquals驱动(如果不使用该硬件)。

参考链接

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