CVE-2026-74677 in Linuxinformación

Resumen

por VulDB • 2026-08-22

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

net: usb: ipheth: corregir UAF en carrier_work durante la desconexión

ipheth_sndbulk_callback() reactiva el trabajo de verificación del enlace (carrier-check) ante cualquier estado URB distinto de cero:

else schedule_delayed_work(&dev->carrier_work, 0);

Nada vincula esto al estado activo de la interfaz, por lo que el trabajo puede activarse nuevamente después de que ipheth_close() ya haya vaciado su cola, y permanecerá activo hasta que se libere el netdev cuyo área privada lo contiene.

Al desconectar un dispositivo con una URB TX en curso, ipheth_disconnect() vacía la tarea a través de unregister_netdev() -> ipheth_close() -> cancel_delayed_work_sync(), y solo entonces llama a ipheth_kill_urbs(). usb_kill_urb() completa la URB TX en vuelo devolviendo -ENOENT, por lo que ipheth_sndbulk_callback() se ejecuta después del vaciado y reactiva carrier_work.

La misma finalización también reactiva el trabajo si la interfaz solo se deshabilita mientras una URB TX está en curso, e ipheth_carrier_check_work() entonces sigue auto-programándose cada segundo. unregister_netdev() no llama a ipheth_close() para una interfaz ya inactiva, por lo que nada la vacía tampoco durante la desconexión posterior.

En ambos casos, free_netdev() libera el netdev mientras carrier_work aún está pendiente, e ipheth_carrier_check_work() desreferencia memoria liberada (Use-After-Free).

Vincular el trabajo al estado de la interfaz en lugar de depender de la finalización: deshabilitarlo en ipheth_close() y habilitarlo en ipheth_open(), para que una schedule_delayed_work() proveniente de la finalización URB sea una operación nula (no-op) siempre que la interfaz no esté activa. disable_delayed_work_sync() también espera a que termine una instancia en ejecución, por lo que reemplaza completamente a cancel_delayed_work_sync() que sustituye. El trabajo comienza deshabilitado en ipheth_probe(), de modo que los conteos de habilitación/deshabilitación se equilibran desde la primera apertura.

Reproducido bajo KASAN en linux-next (next-20260731) con dummy_hcd y raw-gadget actuando como dispositivo, impulsando la segunda ruta anterior (la interfaz ya está inactiva, por lo que unregister_netdev() no llama a ipheth_close()): 15 de 15 arranques sin parche reportan un slab-use-after-free en __run_timers(), liberado por ipheth_disconnect() y reactivado desde ipheth_sndbulk_callback() mediante queue_delayed_work_on(). El mismo desencadenador en un kernel que difiere únicamente por este parche reporta 0 de 15, y la verificación del enlace sigue funcionando a través de ciclos de apertura/cierre.

El programa de prueba requiere un dispositivo USB conectado que deje de vaciar las URBs bulk OUT, además de una caída del enlace y desconexión, ejecutado como root. No se trata de un cruce de límite de privilegios ni se ha desarrollado ninguna primitiva de exploit.

Encontrado por 0sec (https://0sec.ai).

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsable

Linux

Reservar

2026-08-15

Divulgación

2026-08-22

Moderación

aceptado

Artículo

VDB-394445

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Do you know our Splunk app?

Download it now for free!