Vulnerabilidad en Linux (CVE-2026-23368)
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
25/03/2026
Última modificación:
18/04/2026
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:<br />
<br />
net: phy: registrar los led_triggers del phy durante la sonda para evitar un interbloqueo AB-BA<br />
<br />
Existe un interbloqueo AB-BA cuando tanto LEDS_TRIGGER_NETDEV como LED_TRIGGER_PHY están habilitados:<br />
<br />
[ 1362.049207] [&lt;8054e4b8&gt;] led_trigger_register+0x5c/0x1fc &lt;-- Intentando obtener el bloqueo &#39;triggers_list_lock&#39; a través de down_write(&amp;triggers_list_lock);<br />
[ 1362.054536] [&lt;80662830&gt;] phy_led_triggers_register+0xd0/0x234<br />
[ 1362.060329] [&lt;8065e200&gt;] phy_attach_direct+0x33c/0x40c<br />
[ 1362.065489] [&lt;80651fc4&gt;] phylink_fwnode_phy_connect+0x15c/0x23c<br />
[ 1362.071480] [&lt;8066ee18&gt;] mtk_open+0x7c/0xba0<br />
[ 1362.075849] [&lt;806d714c&gt;] __dev_open+0x280/0x2b0<br />
[ 1362.080384] [&lt;806d7668&gt;] __dev_change_flags+0x244/0x24c<br />
[ 1362.085598] [&lt;806d7698&gt;] dev_change_flags+0x28/0x78<br />
[ 1362.090528] [&lt;807150e4&gt;] dev_ioctl+0x4c0/0x654 &lt;-- Mantiene el bloqueo &#39;rtnl_mutex&#39; al llamar a rtnl_lock();<br />
[ 1362.094985] [&lt;80694360&gt;] sock_ioctl+0x2f4/0x4e0<br />
[ 1362.099567] [&lt;802e9c4c&gt;] sys_ioctl+0x32c/0xd8c<br />
[ 1362.104022] [&lt;80014504&gt;] syscall_common+0x34/0x58<br />
<br />
Aquí LED_TRIGGER_PHY está registrando los disparadores LED durante phy_attach mientras mantiene RTNL y luego toma triggers_list_lock.<br />
<br />
[ 1362.191101] [&lt;806c2640&gt;] register_netdevice_notifier+0x60/0x168 &lt;-- Intentando obtener el bloqueo &#39;rtnl_mutex&#39; a través de rtnl_lock();<br />
[ 1362.197073] [&lt;805504ac&gt;] netdev_trig_activate+0x194/0x1e4<br />
[ 1362.202490] [&lt;8054e28c&gt;] led_trigger_set+0x1d4/0x360 &lt;-- Mantiene el bloqueo &#39;triggers_list_lock&#39; mediante down_read(&amp;triggers_list_lock);<br />
[ 1362.207511] [&lt;8054eb38&gt;] led_trigger_write+0xd8/0x14c<br />
[ 1362.212566] [&lt;80381d98&gt;] sysfs_kf_bin_write+0x80/0xbc<br />
[ 1362.217688] [&lt;8037fcd8&gt;] kernfs_fop_write_iter+0x17c/0x28c<br />
[ 1362.223174] [&lt;802cbd70&gt;] vfs_write+0x21c/0x3c4<br />
[ 1362.227712] [&lt;802cc0c4&gt;] ksys_write+0x78/0x12c<br />
[ 1362.232164] [&lt;80014504&gt;] syscall_common+0x34/0x58<br />
<br />
Aquí LEDS_TRIGGER_NETDEV está siendo habilitado en un LED. Primero toma triggers_list_lock y luego RTNL. Un interbloqueo AB-BA clásico.<br />
<br />
phy_led_triggers_registers() no requiere el RTNL, no realiza ninguna llamada a la pila de red que requiera protección. Tampoco existe el requisito de que el PHY haya sido conectado a un MAC, los disparadores solo hacen uso del estado de phydev. Esto permite que la llamada a phy_led_triggers_registers() se coloque en otro lugar. PHY probe() y release() no mantienen RTNL, resolviendo así el interbloqueo AB-BA.
Impacto
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/241cd64cf2e32b28ead151b1795cd8fef2b6e482
- https://git.kernel.org/stable/c/2764dcb3c35de4410f642afc62cf979727470575
- https://git.kernel.org/stable/c/2b01518eabace18f7ec8b4cafd52082303080dca
- https://git.kernel.org/stable/c/305afdd02ff3e694c165457793104710ec0728e5
- https://git.kernel.org/stable/c/c33523b8fd2d4c504ada18cd93f511f2a8f84217
- https://git.kernel.org/stable/c/c6ffc2d2338d325e1edd0c702e3ee623aa5fdc6a
- https://git.kernel.org/stable/c/c8dbdc6e380e7e96a51706db3e4b7870d8a9402d
- https://git.kernel.org/stable/c/cde2d0b5ab5d03b5b6f17d4f654d8b30ccf36757



