← Volver a artículos
Seguridad· 3 min de lectura

CVE-2026-31407: el conntrack de netfilter no valida los datos netlink y deja leer memoria del kernel

El subsistema netfilter del kernel Linux arrastraba un problema en su seguimiento de conexiones (conntrack) que dejaba leer memoria del kernel que no debería ser accesible. El fallo, registrado como CVE-2026-31407, vive en el manejo de conexiones SCTP a través de la interfaz netlink y se publicó el 6 de abril de 2026.

El conntrack es la parte del firewall del kernel que recuerda el estado de cada conexión: si un paquete pertenece a una sesión ya establecida, si es nueva, si está relacionada con otra. Para SCTP, ese estado incluye un campo state que indica en qué punto de la negociación está la conexión. El problema está en que la función nlattr_to_sctp(), dentro de nf_conntrack_proto_sctp.c, copiaba el valor CTA_PROTOINFO_SCTP_STATE que llega por netlink directamente a ct->proto.sctp.state, sin comprobar antes que ese valor esté dentro del rango permitido de estados SCTP.

Como el valor lo controla quien envía el mensaje netlink, se puede colar un número fuera de rango. Más adelante el kernel usa ese campo como índice en tablas internas, y un índice disparatado lleva a accesos fuera de los límites del buffer. Las herramientas de sanitizado que usan los desarrolladores del kernel detectaron lecturas de hasta 5.600 bytes más allá de un objeto de apenas 320 bytes. Esa memoria leída puede contener datos sensibles del propio kernel.

A quién afecta y con qué gravedad

CVE-2026-31407 tiene una puntuación CVSS 7.1 (alta). El vector es local: AV:L/AC:L/PR:L/UI:N. Es decir, hace falta acceso local al sistema y algún privilegio, no se explota desde internet sin más. Lo que abre es una vía de fuga de información del kernel, útil sobre todo como pieza intermedia en una cadena de explotación (por ejemplo, para saltarse mitigaciones como KASLR antes de un ataque de escalada).

El código afectado lleva mucho tiempo presente. Según la base de datos de NVD, el problema toca ramas que vienen desde versiones antiguas y se mantiene hasta las series modernas. NVD clasifica la debilidad como CWE-787 (escritura/acceso fuera de límites), no solo lectura, así que conviene tratarlo con respeto aunque el efecto observado sea filtrar memoria.

Versiones corregidas

El arreglo añade la validación que faltaba: ahora se comprueba que el valor recibido por netlink esté dentro del rango de estados válidos antes de asignarlo. kernel.org publicó la corrección repartida en varios commits sobre las distintas ramas mantenidas. Las versiones que ya lo incluyen son, entre otras:

  • Serie 6.6.x: a partir de 6.6.136
  • Serie 6.12.x: a partir de 6.12.83
  • Serie 6.18.x: a partir de 6.18.24

Los archivos tocados son net/netfilter/nf_conntrack_netlink.c y net/netfilter/nf_conntrack_proto_sctp.c.

Si gestionas tu propio kernel, actualiza a una versión que incluya el parche. Si usas una distribución, espera a la actualización del paquete del kernel de tu proveedor y aplícala en cuanto esté disponible; los mantenedores suelen retroportar este tipo de correcciones a sus ramas LTS. Para entender mejor el ciclo de vida de las versiones que mantiene la comunidad, puedes consultar la ficha del kernel Linux.

Fuente