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

CVE-2026-23111: un solo carácter en nf_tables abre la puerta a root en Linux

El subsistema netfilter nf_tables del kernel Linux se encarga del filtrado de paquetes y es lo que hay debajo de nftables. Acaba de sumar otro fallo serio: CVE-2026-23111, un use-after-free (uso de memoria ya liberada) con el que un usuario local sin privilegios escala hasta root. Lo llamativo es que el error nace y se arregla con un único carácter de código.

Qué es la vulnerabilidad

El bug está en la función nft_map_catchall_activate(), dentro del fichero net/netfilter/nf_tables_api.c. Cuando se aborta una transacción de nftables, esa función arrastra una condición invertida: procesa los elementos activos y se salta los inactivos. Es justo al revés de lo que hace la función correcta, nft_mapelem_activate().

El efecto es discreto, pero peligroso. Al abortar una operación DELSET, ya no se vuelve a llamar a nft_setelem_data_activate() para el elemento catchall. Con elementos de veredicto NFT_GOTO, eso significa que nunca se restaura el contador de referencias chain->use. Cada ciclo de aborto decrementa ese contador de forma permanente. Cuando chain->use llega a cero, una operación DELCHAIN libera la cadena mientras los elementos catchall siguen apuntando a ella, y ahí aparece el use-after-free.

A partir de ahí, un atacante puede filtrar la dirección base del kernel, luego una dirección de heap y, por último, lanzar una cadena ROP que pivota sobre objetos msg_msg hasta hacerse con privilegios de root.

A quién afecta

El fallo toca muchas ramas del kernel Linux: desde la serie 5.4 hasta la 6.18.10, pasando por 5.10, 5.15, 6.1, 6.6 y 6.12. En la práctica los sistemas vulnerables son los que llevan activadas CONFIG_USER_NS (espacios de nombres de usuario) y CONFIG_NF_TABLES, algo habitual tanto en escritorios como en servidores. La explotación se ha demostrado en Debian Bookworm, Debian Trixie, Ubuntu 22.04 LTS y Ubuntu 24.04 LTS.

Esto pesa porque los espacios de nombres de usuario dejan que alguien sin privilegios manipule nftables dentro de su propio namespace. Cae así la barrera clásica de “necesitas ser root para tocar netfilter”.

Gravedad

El CVSS 3.1 es 7.8 (alta), con vector AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. Hace falta acceso local y privilegios bajos, sin que el usuario tenga que hacer nada. El riesgo real sube porque, después de publicarse el parche el 5 de febrero de 2026, salieron exploits funcionales públicos y pruebas de concepto que reproducen la escalada a root sin fallar.

Mitigación y parche

El parche upstream, aplicado el 5 de febrero de 2026, se reduce literalmente a quitar un signo de negación (!) para que la comprobación cuadre con nft_mapelem_activate(): saltarse los elementos activos y procesar los inactivos.

Qué hacer ya:

  • Actualiza el kernel a una versión parcheada (por ejemplo 5.10.249, 6.1.162, 6.6.122 o 6.12.71 o posteriores) y reinicia.
  • Si no puedes parchear ahora mismo, desactiva los espacios de nombres de usuario no privilegiados cuando no los uses: sysctl -w kernel.unprivileged_userns_clone=0 (en kernels Debian/Ubuntu) o sysctl -w user.max_user_namespaces=0.
  • Plantéate cargar módulos de seguridad como SELinux o AppArmor para recortar la superficie de ataque de procesos comprometidos.

Como esta vulnerabilidad se apoya en los espacios de nombres de usuario, viene bien conocer esa tecnología en nuestro artículo sobre namespaces y cgroups, y apuntalar la contención de procesos con SELinux y AppArmor.

Tienes la ficha del componente afectado en /linux-kernel.

Fuente