CVE-2026-31758Linux内核USB TMC驱动组件存在释放后重用漏洞。在调用usbtmc_release函数释放设备资源时,由于未正确刷新或终止挂起的锚定URB(USB请求块),导致在主机控制器驱动(HCD)回传路径中可能发生释放后重用错误。本地攻击者可利用此缺陷造成内核崩溃或权限提升,对系统机密性、完整性及可用性造成严重影响。
该漏洞根源在于Linux内核drivers/usb/class/usbtmc.c驱动程序中的资源释放逻辑缺陷。当USB TMC(测试与测量类)设备断开连接或对应的文件描述符被关闭时,内核会触发usbtmc_release函数以清理资源。然而,该函数在执行过程中未能正确处理已提交但尚未完成的异步URB(USB Request Block)。具体而言,代码未调用usbtmc_draw_down()来强制等待或终止这些挂起的IO请求。这导致在某些并发场景下,URB的完成回调函数可能会在设备结构体内存被释放之后才被调度执行,从而触发释放后重用(UAF)错误。攻击者可利用这一漏洞,通过竞争条件(Race Condition)控制被释放内存的布局,进而覆盖内核关键数据结构或劫持控制流,最终实现本地权限提升或导致内核崩溃(拒绝服务)。