CVE-2026-31726Linux内核USB Gadget UVC驱动程序存在空指针解引用漏洞。该漏洞源于设备解绑流程与电源管理切换之间的竞态条件。当PM子系统冻结用户空间进程时,unbind线程会提前将关键的gadget指针置空。随后当系统恢复任务时,V4L2释放路径尝试访问该已失效指针,导致内核崩溃及系统拒绝服务。本地低权限攻击者可利用此漏洞导致系统宕机。
该漏洞位于Linux内核的USB Gadget UVC驱动模块中。尽管之前的修复尝试通过引入延时等待机制来防止解绑时的内核崩溃,但在特定的电源管理(PM)场景下该机制失效。当PM子系统开始冻结用户空间进程时,`uvc_function_unbind`函数中的`wait_event_interruptible_timeout`被强制中断,导致解绑线程绕过等待直接将`cdev->gadget`指针置空。然而,此时V4L2设备的释放流程尚未结束。当PM子系统恢复任务或中止挂起时,`uvc_v4l2_release`路径被重新激活,尝试调用`usb_gadget_deactivate`访问已被置空的gadget指针,从而触发内核空指针解引用错误。本地低权限攻击者可通过控制设备状态与系统电源管理的时序,触发该竞态条件导致系统崩溃,造成拒绝服务。