CVE-2026-98563 in Linux
Resumen
por VulDB • 2026-10-18
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
net: phylink: registrar el PHY solo una vez; el bringup no puede fallar
phylink_bringup_phy() almacena el PHY en pl->phydev antes de su último paso susceptible a fallos: en un MAC cuyas operaciones de phylink implementan LPI, phy_eee_rx_clock_stop() puede fallar con un error MDIO real. Los llamadores deshacen la operación (unwind) mediante phy_detach(), que no conoce nada sobre pl->phydev; por lo tanto, un puntero a un PHY que ya no está conectado sobrevive al fallo de conexión.
Lo que esto cuesta depende de cómo el llamador llegó aquí. phylink_connect_phy() pasa por phylink_attach_phy(), la cual se niega a conectar mientras pl->phydev esté establecido, convirtiendo un error MDIO transitorio en un -EBUSY permanente. La ruta SFP es peor: sfp_sm_probe_phy() responde al fallo con phy_device_remove() y phy_device_free(), y asigna sfp->mod_phy solo después de ese retorno de error; por lo tanto, nada limpia pl->phydev y este queda apuntando a un phy_device liberado que phylink_resolve() y las utilidades de ethtool continúan leyendo. phylink_fwnode_phy_connect() no tiene dicha comprobación, por lo que una conexión posterior sobrescribe el puntero obsoleto y oculta el problema. Una desconexión no hace esto: phylink_disconnect_phy() entrega ese puntero a phy_disconnect(), y la segunda llamada a phy_detach() sobre el mismo PHY reduce las referencias que ya fueron liberadas en la primera.
Se encontró mientras se hacía que un puerto DSA sobreviviera a un PHY cuyo controlador llega después de que el switch haya sido sondeado: mantener el puerto durante una conexión fallida y reintentar es lo que hace accesible esta ventana temporal.
Publicar el puntero después de la última llamada que puede fallar, en lugar de deshacerlo posteriormente. Nada entre los dos puntos lee pl->phydev, y el registro posterior no puede fallar: phy_request_interrupt() vuelve a usar sondeo (polling) por su cuenta. El estado del lado PHY mantiene el orden original, por lo que ninguna operación MDIO se mueve en relación con otra.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.