Vulnerabilidad en kernel de Linux (CVE-2025-37865)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
09/05/2025
Última modificación:
12/11/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: net: dsa: mv88e6xxx: corrección de -ENOENT al eliminar VLAN y MST no es compatible Russell King informa que en ZII dev rev B, la eliminación de una VLAN de puente de un puerto de usuario falla con -ENOENT: https://lore.kernel.org/netdev/Z_lQXNP0s5-IiJzd@shell.armlinux.org.uk/ Esto viene de mv88e6xxx_port_vlan_leave() -> mv88e6xxx_mst_put(), que intenta encontrar una entrada MST en &chip->msts asociada con el SID, pero falla y devuelve -ENOENT como tal. Pero sabemos que este chip no admite MST en absoluto, por lo que no es sorprendente. La pregunta es por qué la protección en mv88e6xxx_mst_put() no sale antes: if (!sid) return 0; La respuesta parece sencilla: el SID proviene de vlan.sid, que supuestamente se rellenaba previamente con mv88e6xxx_vtu_get(). Sin embargo, algunas implementaciones de chip->info->ops->vtu_getnext() no rellenan vlan.sid; por ejemplo, véase mv88e6185_g1_vtu_getnext(). En ese caso, más adelante en mv88e6xxx_port_vlan_leave(), usamos un SID no válido, que es simplemente memoria de pila residual. La prueba de sid == 0 cubre todos los casos de una VLAN sin puente o una VLAN de puente asignada al MSTI predeterminado. Para algunos chips, el SID 0 es válido y se instala con mv88e6xxx_stu_setup(). Un chip que no admita la STU solo permitiría, implícitamente, la asignación de todas las VLAN al MSTI predeterminado. Por lo tanto, aunque el SID 0 no es válido, bastaría con inicializar a cero la estructura de la VLAN para corregir el error, debido a la coincidencia de que ya existe una prueba para vlan.sid == 0 que produce el mismo comportamiento (correcto). Otra opción suficiente sería añadir una prueba para mv88e6xxx_has_stu() dentro de mv88e6xxx_mst_put(), simétrica a la existente en mv88e6xxx_mst_get(). Sin embargo, esta ubicación implica que el emisor tendrá que desreferenciar vlan.sid, lo que implica acceder a memoria no inicializada, lo cual no es conveniente incluso si lo ignora posteriormente. Por lo tanto, realizamos ambas modificaciones para no depender solo de la coincidencia de sid == 0, sino también para evitar tener campos de estructura sin inicializar a los que se pueda acceder temporalmente.
Impacto
Puntuación base 3.x
5.50
Gravedad 3.x
MEDIA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.18 (incluyendo) | 6.1.135 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (incluyendo) | 6.6.88 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (incluyendo) | 6.12.25 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (incluyendo) | 6.14.4 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:6.15:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.15:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:debian:debian_linux:11.0:*:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/35cde75c08a1fa1a5ac0467afe2709caceeef002
- https://git.kernel.org/stable/c/9da4acbd60664271d34a627f7f63cd5bad8eba74
- https://git.kernel.org/stable/c/9ee6d3a368ed34f2457863da3085c676e9e37a3d
- https://git.kernel.org/stable/c/afae9087301471970254a9180e5a26d3d8e8af09
- https://git.kernel.org/stable/c/ea08dfc35f83cfc73493c52f63ae4f2e29edfe8d
- https://lists.debian.org/debian-lts-announce/2025/05/msg00045.html



