Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en Linux (CVE-2025-68795)

Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
13/01/2026
Última modificación:
15/04/2026

Descripción

En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:<br /> <br /> ethtool: Evitar el desbordamiento del búfer del espacio de usuario en la consulta de estadísticas<br /> <br /> El comando ethtool -S opera a través de tres llamadas ioctl:<br /> ETHTOOL_GSSET_INFO para el tamaño, ETHTOOL_GSTRINGS para los nombres, y<br /> ETHTOOL_GSTATS para los valores.<br /> <br /> Si el número de estadísticas cambia entre estas llamadas (p. ej., debido a la<br /> reconfiguración del dispositivo), la asignación de búfer del espacio de usuario será incorrecta,<br /> lo que podría llevar a un desbordamiento de búfer.<br /> <br /> Generalmente se espera que los controladores mantengan recuentos de estadísticas estables, pero algunos<br /> controladores (p. ej., mlx5, bnx2x, bna, ksz884x) usan contadores dinámicos, haciendo<br /> posible este escenario.<br /> <br /> Algunos controladores intentan manejar esto internamente:<br /> - bnad_get_ethtool_stats() retorna temprano en caso de que stats.n_stats no sea<br /> igual al recuento de estadísticas del controlador.<br /> - micrel/ksz884x también se asegura de no escribir nada más allá de<br /> stats.n_stats y desbordar el búfer.<br /> <br /> Sin embargo, ambos usan stats.n_stats que ya está asignado con el valor<br /> retornado de get_sset_count(), por lo tanto, no resolverá el problema descrito<br /> aquí.<br /> <br /> Cambiar ethtool_get_strings(), ethtool_get_stats(),<br /> ethtool_get_phy_stats() para no retornar nada en caso de una discrepancia<br /> entre el tamaño del espacio de usuario y get_sset_size(), para prevenir el desbordamiento de búfer.<br /> El valor n_stats retornado será igual a cero, para reflejar que<br /> no se ha retornado nada.<br /> <br /> Esto podría resultar en uno de dos casos al usar ethtool upstream,<br /> dependiendo de cuándo se detecte el cambio de tamaño:<br /> 1. Cuando se detecta en ethtool_get_strings():<br /> # ethtool -S eth2<br /> no hay estadísticas disponibles<br /> <br /> 2. Cuando se detecta en la obtención de estadísticas, todas las estadísticas se reportarán como cero.<br /> <br /> Ambos casos son presumiblemente transitorios, y una llamada ethtool subsiguiente<br /> debería tener éxito.<br /> <br /> Aparte de la evitación del desbordamiento, estos dos casos son muy evidentes (sin<br /> salida/estadísticas borradas), lo cual es posiblemente mejor que presentar<br /> estadísticas incorrectas/desplazadas.<br /> También consideré retornar un error en lugar de una respuesta &amp;#39;silenciosa&amp;#39;, pero<br /> eso parece más destructivo para las aplicaciones del espacio de usuario.<br /> <br /> Notas:<br /> - Este parche no pretende corregir la condición de carrera inherente, solo se asegura<br /> de que no desbordemos el búfer del espacio de usuario, y proporciona un comportamiento<br /> más predecible.<br /> <br /> - El bloqueo RTNL se mantiene durante cada ioctl, la ventana de carrera existe entre<br /> las llamadas ioctl separadas cuando se libera el bloqueo.<br /> <br /> - ethtool del espacio de usuario siempre llena stats.n_stats, pero es probable que<br /> estas ioctls de estadísticas estén implementadas en otras aplicaciones del espacio de usuario<br /> que podrían no llenarlo. El código añadido verifica que no sea cero,<br /> para prevenir cualquier regresión.

Impacto