Vulnerabilidad en kernel de Linux (CVE-2024-26803)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
04/04/2024
Última modificación:
01/04/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: net: veth: borra GRO al borrar XDP incluso cuando está desactivado veth configura NETIF_F_GRO automáticamente cuando XDP está habilitado, porque ambas funciones utilizan la misma maquinaria NAPI. La lógica para borrar NETIF_F_GRO se encuentra en veth_disable_xdp(), que se llama tanto en ndo_stop como cuando XDP está desactivado. Para evitar que la bandera se borre cuando se baja el dispositivo, la eliminación se omite cuando IFF_UP no está configurado. De hecho, bajar el dispositivo no debería modificar sus características. Desafortunadamente, esto significa que la limpieza también se omite cuando XDP está deshabilitado _mientras_ el dispositivo está inactivo. Y no hay nada en el camino abierto para volver a sincronizar las funciones del dispositivo. IOW, si el usuario habilita XDP, lo deshabilita y luego enciende el dispositivo, terminaremos con un indicador GRO perdido pero sin instancias NAPI. No dependemos del indicador GRO en la ruta de datos, por lo que la ruta de datos no fallará. Nos bloquearemos (o colgaremos), sin embargo, la próxima vez que se sincronicen las funciones (ya sea por el usuario a través de ethtool o por un compañero cambiando su configuración). La bandera GRO desaparecerá y Veth intentará desactivar las NAPI. Pero el camino abierto nunca los creó ya que XDP estaba desactivado, la bandera GRO estaba perdida. Si NAPI se inicializó antes, colgaremos napi_disable(). Si nunca fue así, fallaremos al intentar detener el hrtimer no inicializado. Mueva las actualizaciones del indicador GRO a las rutas de activación/desactivación de XDP, en lugar de mezclarlas con las rutas ndo_open/ndo_close.
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.13 (incluyendo) | 5.15.151 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (incluyendo) | 6.1.81 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (incluyendo) | 6.6.21 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (incluyendo) | 6.7.9 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:6.8:rc1:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.8:rc2:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.8:rc3:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.8:rc4:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.8:rc5:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.8:rc6:*:*:*:*:*:* |
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/16edf51f33f52dff70ed455bc40a6cc443c04664
- https://git.kernel.org/stable/c/7985d73961bbb4e726c1be7b9cd26becc7be8325
- https://git.kernel.org/stable/c/8f7a3894e58e6f5d5815533cfde60e3838947941
- https://git.kernel.org/stable/c/f011c103e654d83dc85f057a7d1bd0960d02831c
- https://git.kernel.org/stable/c/fe9f801355f0b47668419f30f1fac1cf4539e736
- https://git.kernel.org/stable/c/16edf51f33f52dff70ed455bc40a6cc443c04664
- https://git.kernel.org/stable/c/7985d73961bbb4e726c1be7b9cd26becc7be8325
- https://git.kernel.org/stable/c/8f7a3894e58e6f5d5815533cfde60e3838947941
- https://git.kernel.org/stable/c/f011c103e654d83dc85f057a7d1bd0960d02831c
- https://git.kernel.org/stable/c/fe9f801355f0b47668419f30f1fac1cf4539e736