# CVE-2026-23240: use-after-free crític al subsistema TLS del kernel Linux

- **Publicat el:** 2026-03-10
- **Categoria:** Seguretat
- **Pàgina original:** https://linuxgratis.com/ca/articles/cve-2026-23240-tls-use-after-free-kernel-linux

Una condició de cursa a net/tls/tls_sw.c deixa que un worker toqui memòria ja alliberada. Què afecta, quines versions i com es corregeix.

---

El kernel Linux arrossega des de fa anys un error a la seva capa de TLS que s'ha resolt ara sota l'identificador CVE-2026-23240. És un use-after-free provocat per una condició de cursa, amb una puntuació CVSS de 9.8 sobre 10 segons kernel.org. Dit d'una altra manera: gravetat crítica.

## Què passa exactament

El subsistema TLS del kernel (kTLS) descarrega el xifratge de les connexions TLS dins del mateix nucli, sense passar per una llibreria d'espai d'usuari. Part d'aquesta feina de transmissió es fa de forma diferida mitjançant un *delayed work* anomenat `tx_work_handler()`, que viu a `net/tls/tls_sw.c`.

Quan es tanca el socket, `tls_sk_proto_close()` crida `tls_sw_cancel_work_tx()`, que al seu torn fa servir `cancel_delayed_work_sync()` per cancel·lar aquesta feina pendent abans d'alliberar l'objecte TLS. El problema és que aquesta cancel·lació no impedeix que la feina es torni a programar després. Hi ha rutes, com el gestor de Delayed ACK o `ksoftirqd`, que poden tornar a disparar la planificació a través de `tls_write_space()` → `tls_sw_write_space()`. Aquesta funció marca el bit `BIT_TX_SCHEDULED` i crida `schedule_delayed_work()`.

El resultat és una finestra de temps en què `cancel_delayed_work_sync()` ja ha acabat, l'objecte TLS s'allibera, i un worker s'executa més tard sobre aquesta memòria. Dereferencia una cosa que ja no existeix. Això és un use-after-free de manual, i pot acabar en corrupció de memòria del kernel o en una caiguda completa del sistema.

## A qui afecta

Qualsevol màquina amb un kernel que faci servir kTLS i que obri i tanqui connexions TLS accelerades pel nucli. El rang de versions afectades és ampli:

- De la 5.3 fins a la 6.12.74.
- De la 6.13 fins a la 6.18.15.
- De la 6.19 fins a la 6.19.5.

És a dir, gairebé qualsevol kernel modern que no estigui ja apedaçat. Servidors que terminen TLS amb descàrrega al kernel, balancejadors i màquines amb càrregues de xarxa intenses són els candidats més exposats que la condició de cursa es dispari en producció.

## Gravetat real

El vector CVSS (AV:N/AC:L/PR:N/UI:N) indica que el problema és assolible per xarxa, sense privilegis previs ni interacció de l'usuari. Una condició de cursa és per natura difícil de provocar de manera fiable, però l'impacte si s'aconsegueix és seriós: pèrdua d'integritat i disponibilitat del sistema, i la possibilitat de corrompre estructures del kernel. Per això la nota tan alta.

## Mitigació

La correcció és petita i neta: se substitueix `cancel_delayed_work_sync()` per `disable_delayed_work_sync()`. La diferència és que `disable_delayed_work_sync()` també marca la feina com a deshabilitada, de manera que qualsevol intent posterior de tornar a programar-la no té efecte. Es tanca la finestra de cursa d'arrel.

No hi ha cap configuració que puguis tocar per evitar-ho sense apedaçar: actualitza el kernel a una versió corregida (6.12.75 o posterior a la branca estable, 6.18.16+, 6.19.6+, segons correspongui) i reinicia. Si fas servir una distribució, espera el paquet del teu proveïdor i aplica'l; moltes ofereixen també livepatch per evitar el reinici. Consulta la [fitxa del kernel Linux](/ca/linux-kernel) per situar la teva versió.

## Font

- NVD: <https://nvd.nist.gov/vuln/detail/CVE-2026-23240>
