← Tornar als articles
Seguretat· 3 min de lectura

CVE-2026-31407: el conntrack de netfilter no valida les dades netlink i deixa llegir memòria del kernel

El subsistema netfilter del kernel Linux arrossegava un problema en el seu seguiment de connexions (conntrack) que deixava llegir memòria del kernel que no hauria de ser accessible. L’error, registrat com a CVE-2026-31407, viu en el maneig de connexions SCTP a través de la interfície netlink i es va publicar el 6 d’abril de 2026.

El conntrack és la part del tallafoc del kernel que recorda l’estat de cada connexió: si un paquet pertany a una sessió ja establerta, si és nova, si està relacionada amb una altra. Per a SCTP, aquest estat inclou un camp state que indica en quin punt de la negociació es troba la connexió. El problema és que la funció nlattr_to_sctp(), dins de nf_conntrack_proto_sctp.c, copiava el valor CTA_PROTOINFO_SCTP_STATE que arriba per netlink directament a ct->proto.sctp.state, sense comprovar abans que aquest valor estigui dins del rang permès d’estats SCTP.

Com que el valor el controla qui envia el missatge netlink, es pot colar un número fora de rang. Més endavant el kernel fa servir aquest camp com a índex en taules internes, i un índex disbaratat porta a accessos fora dels límits del buffer. Les eines de sanititzat que fan servir els desenvolupadors del kernel van detectar lectures de fins a 5.600 bytes més enllà d’un objecte de tot just 320 bytes. Aquesta memòria llegida pot contenir dades sensibles del mateix kernel.

A qui afecta i amb quina gravetat

CVE-2026-31407 té una puntuació CVSS 7.1 (alta). El vector és local: AV:L/AC:L/PR:L/UI:N. És a dir, cal accés local al sistema i algun privilegi, no s’explota des d’internet sense més. El que obre és una via de fuga d’informació del kernel, útil sobretot com a peça intermèdia en una cadena d’explotació (per exemple, per saltar-se mitigacions com KASLR abans d’un atac d’escalada).

El codi afectat fa molt de temps que hi és. Segons la base de dades de NVD, el problema toca branques que vénen de versions antigues i es manté fins a les sèries modernes. NVD classifica la debilitat com a CWE-787 (escriptura/accés fora de límits), no només lectura, així que convé tractar-lo amb respecte encara que l’efecte observat sigui filtrar memòria.

Versions corregides

L’arranjament afegeix la validació que faltava: ara es comprova que el valor rebut per netlink estigui dins del rang d’estats vàlids abans d’assignar-lo. kernel.org va publicar la correcció repartida en diversos commits sobre les diferents branques mantingudes. Les versions que ja l’inclouen són, entre d’altres:

  • Sèrie 6.6.x: a partir de 6.6.136
  • Sèrie 6.12.x: a partir de 6.12.83
  • Sèrie 6.18.x: a partir de 6.18.24

Els fitxers tocats són net/netfilter/nf_conntrack_netlink.c i net/netfilter/nf_conntrack_proto_sctp.c.

Si gestiones el teu propi kernel, actualitza a una versió que inclogui el pegat. Si fas servir una distribució, espera l’actualització del paquet del kernel del teu proveïdor i aplica-la així que estigui disponible; els mantenidors solen retroportar aquest tipus de correccions a les seves branques LTS. Per entendre millor el cicle de vida de les versions que manté la comunitat, pots consultar la fitxa del kernel Linux.

Font