CVE-2026-43327Linux内核中的dummy-hcd驱动程序存在一个锁同步错误漏洞。Syzbot测试发现,在处理模拟USB重置和驱动程序解绑时存在竞态条件,导致`usb_gadget_udc_reset()`函数崩溃。该问题源于`set_link_state()`在调用`stop_activity()`期间释放并重新获取自旋锁,允许解绑线程在`dum->callback_usage`增加之前清除`dum->driver`。这导致重置函数接收到NULL参数,引发地址异常。该漏洞可能被本地攻击者利用导致系统拒绝服务。
该漏洞位于Linux内核的`drivers/usb/gadget/udc/dummy_hcd.c`文件中。核心问题在于`set_link_state()`函数处理USB重置时的锁顺序不当。在执行重置逻辑时,代码会在检查`dum->ints_enabled`之后、增加`dum->callback_usage`计数器之前调用`stop_activity()`。由于`stop_activity()`会暂时释放`dum->lock`自旋锁,这为并发执行的驱动解绑线程(`driver_unbind`)创造了时间窗口。解绑线程获取锁后,会检查`dum->callback_usage`,此时因计数器未增加,线程会直接清空`dum->driver`指针并退出。当重置线程恢复执行并调用`usb_gadget_udc_reset(gadget, driver)`时,driver参数已为NULL,导致内核访问空指针而崩溃。攻击者需具备本地低权限,通过并发操作触发该竞态条件。