← Tornar als articles
Seguretat· 2 min de lectura

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

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 per situar la teva versió.

Font