# CVE-2026-23111: un sol caràcter a nf_tables obre la porta a root a Linux

- **Publicat el:** 2026-02-05
- **Categoria:** Seguretat
- **Pàgina original:** https://linuxgratis.com/ca/articles/cve-2026-23111-nf-tables-privesc-root-kernel-linux

Una condició invertida a nft_map_catchall_activate() del kernel Linux provoca un use-after-free explotable per escalar d'usuari sense privilegis a root. Qui afecta, quina gravetat té i com mitigar-lo.

---

El subsistema **netfilter nf_tables** del kernel Linux s'encarrega del filtratge de paquets i sosté tot el que fa `nftables`. Acaba de sumar una falla greu més: **CVE-2026-23111**. És un *use-after-free* (ús de memòria ja alliberada) que deixa un usuari local sense privilegis arribar fins a **root**. El més curiós és que tant l'error com el seu arranjament caben en **un únic caràcter** de codi.

## Què és la vulnerabilitat

El bug és a la funció `nft_map_catchall_activate()`, dins del fitxer `net/netfilter/nf_tables_api.c`. Quan s'avorta una transacció de nftables, aquesta funció arrossega una **condició invertida**: processa els elements *actius* i es salta els inactius, just al revés del que fa la versió correcta, `nft_mapelem_activate()`.

La conseqüència és discreta però perillosa. En avortar una operació `DELSET`, no es torna a cridar `nft_setelem_data_activate()` per a l'element *catchall*. Amb elements de veredicte `NFT_GOTO`, això es tradueix en que mai es restaura el comptador de referències `chain->use`. **Cada cicle d'avortament deixa aquest comptador un punt més baix, i de manera permanent.** Quan `chain->use` toca zero, una operació `DELCHAIN` allibera la cadena tot i que els elements catchall encara hi apunten, i aquí surt el use-after-free.

Des d'aquest punt, un atacant pot filtrar l'adreça base del kernel, després una adreça de heap, i rematar amb una cadena ROP que pivota sobre objectes `msg_msg` fins a fer-se amb privilegis de root.

## A qui afecta

La falla toca moltes branques del kernel Linux: hi ha versions afectades des de la sèrie 5.4 fins a la **6.18.10**, passant per 5.10, 5.15, 6.1, 6.6 i 6.12. A la pràctica, els sistemes vulnerables són els que porten activades `CONFIG_USER_NS` (espais de noms d'usuari) i `CONFIG_NF_TABLES`, una cosa de lo més normal a distribucions d'escriptori i de servidor. L'explotació s'ha demostrat a **Debian Bookworm, Debian Trixie, Ubuntu 22.04 LTS i Ubuntu 24.04 LTS**.

I aquí hi ha el quid: els espais de noms d'usuari deixen que algú sense privilegis manipuli nftables dins del seu propi namespace, cosa que tira a terra la barrera de sempre, la de "has de ser root per tocar netfilter".

## Gravetat

El **CVSS 3.1 és 7.8 (alta)**, amb vector `AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H`. Demana accés local i privilegis baixos, sense interacció de l'usuari. La gravetat puja de nivell perquè, després de publicar-se el pedaç el 5 de febrer de 2026, van sortir a la llum **exploits funcionals públics** i proves de concepte que reprodueixen l'escalada a root sense despentinar-se.

## Mitigació i pedaç

El pedaç *upstream*, aplicat el 5 de febrer de 2026, es redueix a **treure un signe de negació (`!`)** perquè la comprovació casi amb la de `nft_mapelem_activate()`: saltar-se els elements actius i processar els inactius.

Què fer ja:

- **Actualitza el kernel** a una versió amb pedaç (per exemple 5.10.249, 6.1.162, 6.6.122 o 6.12.71 o posteriors) i reinicia.
- Si no pots aplicar el pedaç ara mateix, **desactiva els espais de noms d'usuari no privilegiats** mentre no els facis servir: `sysctl -w kernel.unprivileged_userns_clone=0` (en kernels Debian/Ubuntu) o `sysctl -w user.max_user_namespaces=0`.
- Planteja't carregar mòduls de seguretat com SELinux o AppArmor per retallar la superfície d'atac dels processos compromesos.

Com que aquesta vulnerabilitat s'apoia en els espais de noms d'usuari, val la pena entendre bé aquesta tecnologia al nostre article sobre [namespaces i cgroups](/ca/articles/namespaces-i-cgroups), i estrènyer la contenció de processos amb [SELinux i AppArmor](/ca/articles/selinux-i-apparmor).

Pots consultar la fitxa del component afectat a [/ca/linux-kernel](/ca/linux-kernel).

## Font

- NVD - NIST: [https://nvd.nist.gov/vuln/detail/CVE-2026-23111](https://nvd.nist.gov/vuln/detail/CVE-2026-23111)
