Vulnerabilidad en Linux (CVE-2026-23320)
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
25/03/2026
Última modificación:
03/04/2026
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:<br />
<br />
usb: gadget: f_ncm: alinear el ciclo de vida de net_device con bind/unbind<br />
<br />
Actualmente, el net_device se asigna en ncm_alloc_inst() y se libera en ncm_free_inst(). Esto vincula la vida útil de la interfaz de red a la instancia de configuración en lugar de a la conexión USB (bind/unbind).<br />
<br />
Este desacoplamiento causa problemas cuando el gadget USB se desconecta y el dispositivo gadget subyacente es eliminado. El net_device puede sobrevivir a su padre, lo que lleva a enlaces sysfs colgantes y desreferencias de puntero NULL al acceder al dispositivo gadget liberado.<br />
<br />
Problema 1: Desreferencia de puntero NULL al desconectar<br />
No se puede manejar la desreferencia de puntero NULL del kernel en la dirección virtual 0000000000000000<br />
Rastro de llamada:<br />
__pi_strlen+0x14/0x150<br />
rtnl_fill_ifinfo+0x6b4/0x708<br />
rtmsg_ifinfo_build_skb+0xd8/0x13c<br />
rtmsg_ifinfo+0x50/0xa0<br />
__dev_notify_flags+0x4c/0x1f0<br />
dev_change_flags+0x54/0x70<br />
do_setlink+0x390/0xebc<br />
rtnl_newlink+0x7d0/0xac8<br />
rtnetlink_rcv_msg+0x27c/0x410<br />
netlink_rcv_skb+0x134/0x150<br />
rtnetlink_rcv+0x18/0x28<br />
netlink_unicast+0x254/0x3f0<br />
netlink_sendmsg+0x2e0/0x3d4<br />
<br />
Problema 2: Enlaces simbólicos sysfs colgantes<br />
console:/ # ls -l /sys/class/net/ncm0<br />
lrwxrwxrwx ... /sys/class/net/ncm0 -&gt;<br />
/sys/devices/platform/.../gadget.0/net/ncm0<br />
console:/ # ls -l /sys/devices/platform/.../gadget.0/net/ncm0<br />
ls: .../gadget.0/net/ncm0: No existe el archivo o directorio<br />
<br />
Mover la asignación de net_device a ncm_bind() y la liberación a ncm_unbind(). Esto asegura que la interfaz de red exista solo cuando la función gadget esté realmente vinculada a una configuración.<br />
<br />
Para soportar la configuración previa a la vinculación (p. ej., establecer el nombre de la interfaz o la dirección MAC a través de configfs), almacenar en caché las opciones proporcionadas por el usuario en f_ncm_opts utilizando la estructura gether_opts. Aplicar estas configuraciones almacenadas en caché al net_device al crearse en ncm_bind().<br />
<br />
Preservar la corrección de uso después de liberación del commit 6334b8e4553c (&#39;usb: gadget: f_ncm: Fix UAF ncm object at re-bind after usb ep transport error&#39;). Verificar opts-&gt;net en ncm_set_alt() y ncm_disable() para asegurar que gether_disconnect() se ejecute solo si se estableció una conexión.



