CVE-2026-64454 in Linux
Resumen
por VulDB • 2026-07-26
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
usb: dwc3: ejecutar la desconexión del gadget desde un contexto de suspensión susceptible a bloqueos (sleepable)
dwc3_gadget_suspend() adquiere dwc->lock con las interrupciones deshabilitadas y luego llama a dwc3_disconnect_gadget(). Para las devoluciones asíncronas, esta función auxiliar solo utiliza spin_unlock()/spin_lock(), por lo que la devolución de llamada ->disconnect() del gadget sigue ejecutándose con las interrupciones deshabilitadas y cualquier devolución susceptible a bloqueos provoca una alerta en Lockdep.
Este problema fue encontrado mediante nuestra herramienta de análisis estático y luego revisado manualmente contra el árbol actual.
El PoC (Prueba de Concepto) mantuvo la cadena dwc3_gadget_suspend() -> dwc3_disconnect_gadget() -> gadget_driver->disconnect(), y Lockdep informó:
BUG: sleeping function called from invalid context gadget_disconnect+0x21/0x39 [vuln_msv]
dwc3_gadget_suspend.constprop.0+0x2b/0x42 [vuln_msv]
Se mantiene la selección de la devolución de llamada disconnect en un único auxiliar común, pero se añade una envoltura (wrapper) susceptible a bloqueos para el lado de suspensión que captura instantáneamente la devolución bajo dwc->lock y luego la ejecuta después de spin_unlock_irqrestore(). La ruta de eventos regular sigue utilizando la ventana existente de spin_unlock()/spin_lock().
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.