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

Vulnerabilidad en kernel de Linux (CVE-2024-38558)

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
19/06/2024
Última modificación:
20/10/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: net: openvswitch: corrige la sobrescritura de la tupla original de ct para ICMPv6 OVS_PACKET_CMD_EXECUTE tiene 3 atributos principales: - OVS_PACKET_ATTR_KEY - Metadatos de paquetes en formato netlink. - OVS_PACKET_ATTR_PACKET: contenido del paquete binario. - OVS_PACKET_ATTR_ACTIONS: acciones a ejecutar en el paquete. OVS_PACKET_ATTR_KEY se analiza primero para completar la estructura sw_flow_key con metadatos como el estado de conexión, el puerto de entrada, la identificación de recirculación, etc. Luego, el paquete en sí se analiza para completar el resto de las claves de los encabezados del paquete. Siempre que el código de análisis de paquetes comienza a analizar el encabezado ICMPv6, primero pone a cero los campos en la clave correspondiente a la información de descubrimiento de vecinos, incluso si no es un paquete ND. Es un campo 'ipv6.nd'. Sin embargo, 'ipv6' es una unión que comparte el espacio entre 'nd' y 'ct_orig' que contiene los metadatos de conntrack de tupla originales analizados a partir de OVS_PACKET_ATTR_KEY. Los paquetes ND normalmente no deberían tener estado de seguimiento, por lo que está bien compartir el espacio, pero los paquetes ICMPv6 Echo normales o tal vez otros tipos de ICMPv6 pueden tener el estado adjunto y no deben sobrescribirse. El problema provoca que todos, excepto los últimos 4 bytes de la dirección de destino, se borren de la tupla conntrack original, lo que provoca una coincidencia incorrecta de paquetes y, potencialmente, la ejecución de acciones incorrectas en caso de que este paquete recircule dentro de la ruta de datos o regrese al espacio de usuario. No se debe acceder a los campos ND en paquetes que no sean ND, por lo que no borrarlos debería estar bien. Ejecutar memset() solo para paquetes ND reales para evitar el problema. Es necesario inicializar todo antes del análisis porque es posible que el paquete ND no contenga todas las opciones. El problema solo afecta la ruta OVS_PACKET_CMD_EXECUTE y no afecta a los paquetes que ingresan a la ruta de datos OVS desde las interfaces de red, porque en este caso los metadatos CT se completan desde skb después de que el paquete ya se haya analizado.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.11 (incluyendo) 4.19.316 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 4.20 (incluyendo) 5.4.278 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.5 (incluyendo) 5.10.219 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (incluyendo) 5.15.161 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 6.1.93 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (incluyendo) 6.6.33 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (incluyendo) 6.8.12 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.9 (incluyendo) 6.9.3 (excluyendo)