Quattro vulnerabilità rimaste per anni nel kernel Linux hanno ora exploit pubblici capaci, in certe condizioni, di trasformare l’accesso di un normale utente locale in una shell con privilegi root. I bug interessano componenti di rete molto diversi tra loro – IPsec per IPv6, TUN/TAP, PPPoE e SCTP – ma condividono un tratto decisamente più importante: permettono di corrompere la memoria del kernel.
Il ricercatore Asim Viladi Oglu Manizada li ha segnalati al team di sicurezza Linux a metà luglio 2026 e ha pubblicato i dettagli tecnici il 18 settembre, dopo aver atteso l’arrivo delle correzioni nei rami supportati.
Le vulnerabilità hanno ricevuto i seguenti appellativi: DirtyAH6, TUNderflow, PPPoEject e DiagSpill. Corrispondono rispettivamente ai seguenti bollettini: CVE-2026-80844, CVE-2026-81000, CVE-2026-68121 e CVE-2026-74469.
Il codice problematico è stato inserito nel kernel Linux da 10 a 21 anni fa: è un dato interessante perché ricorda quanto sia difficile individuare problemi di memory safety in un progetto enorme e continuamente modificato come Linux, soprattutto quando l’errore emerge soltanto attraverso combinazioni poco comuni di strutture dati, protocolli e dispositivi virtuali.
Quattro falle diverse, lo stesso obiettivo: modificare la memoria del kernel
Il lavoro pubblicato da Manizada parla di vulnerabilità che coinvolgono percorsi di esecuzione profondamente differenti. A unirle è il risultato finale: scritture o accessi oltre i limiti previsti, riferimenti a memoria ormai liberata oppure dimensionamenti errati di un buffer. Sono proprio queste condizioni che, con sufficiente controllo sulla disposizione degli oggetti in memoria, possono trasformarsi da semplice crash a esecuzione di operazioni con i privilegi del kernel.
Se un aggressore dispone già di un account limitato, può eseguire codice attraverso un servizio compromesso oppure gode del controllo su un processo dotato di un “raggio d’azione” contenuto, ottenere i privilegi root significa superare la separazione fra utente e sistema operativo. Da lì diventano possibili accesso ai dati degli altri utenti, modifica dei file protetti, manipolazione dei servizi e persistenza sulla macchina.
Tre delle quattro falle sfruttate dal ricercatore diventano particolarmente interessanti in presenza degli unprivileged user namespaces. Linux permette infatti a un processo senza privilegi di creare, quando la distribuzione lo consente, uno user namespace nel quale il processo sia in grado di operare come UID 0 e possedere abilità di cui non è dotato nel namespace principale.
Da IPv6 a SCTP: le diverse strade per guadagnare i privilegi root
DirtyAH6, TUNderflow, PPPoEject e DiagSpill sfruttano errori molto differenti, ma – come osservato in precedenza – tutti finiscono per alterare la memoria del kernel.
DirtyAH6 nasce da una validazione incompleta di alcuni campi IPv6 e può spingere un puntatore oltre i limiti previsti; TUNderflow parte invece da un calcolo errato dell’headroom TUN/TAP che, dopo una conversione a valore unsigned, può trasformarsi in una dimensione enorme e portare i dati fuori dall’area realmente allocata.
PPPoEject sfrutta un errore use-after-free: il codice PPPoE continua a usare un puntatore verso memoria che nel frattempo può essere stata riallocata.
Con DiagSpill, infine, il problema nasce da un contatore SCTP a 16 bit che va in overflow dopo 65.535 elementi, inducendo il kernel a dimensionare male un buffer e consentendo una scrittura fuori limite molto ampia. In pratica, cambiano protocolli e meccanismi, ma il passaggio decisivo è sempre lo stesso: ottenere una primitiva di corruzione della memoria abbastanza controllabile da interferire con strutture sensibili del kernel e trasformare un normale accesso locale in privilegi root.
Gli exploit sono pubblici, ma non sono universali
Come abbiamo detto, le quattro vulnerabilità sono errori di memory safety: trasformare una corruzione della memoria in un accesso root richiede il cosiddetto memory grooming. L’attaccante tenta cioè di organizzare le allocazioni affinché il dato corrotto finisca accanto a un oggetto utile alla successiva acquisizione dei diritti più estesi.
Piccoli cambiamenti nella build del kernel, nella configurazione, nella quantità di RAM o nella disposizione degli oggetti possono rompere l’exploit.
Per tale ragione, i PoC (proof-of-concept) pubblicati dal ricercatore indicano esplicitamente le macchine e le versioni per cui sono stati preparati. Lo stesso Manizada avverte che un tentativo non riuscito può corrompere l’oggetto sbagliato e mandare in crash il sistema.
In ogni caso, le vulnerabilità non sono affatto trascurabili: un exploit pubblico fornisce ad altri ricercatori – e agli aggressori – una base concreta dalla quale partire, eliminando una parte considerevole del lavoro necessario per comprendere la primitiva di corruzione.
Sui server multiutente, sulle macchine che eseguono codice non completamente fidato e nelle infrastrutture basate su container il rischio merita quindi una valutazione rapida.
Quali versioni Linux correggono tutte e quattro le vulnerabilità
I quattro bug non hanno ricevuto patch correttive nello stesso momento: PPPoEject e DiagSpill, per esempio, risultano corretti in alcuni rami prima di DirtyAH6 e TUNderflow.
Se l’obiettivo è avere un kernel upstream che contenga tutte e quattro le correzioni, le prime versioni stabili indicate dal ricercatore sono Linux 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50 e 7.2.4.
Non bisogna però confrontare meccanicamente questi numeri con l’output di uname -r su Ubuntu, Debian, Red Hat Enterprise Linux, SUSE o altre distribuzioni.
I vendor mantengono propri kernel, applicano backport delle patch di sicurezza e conservano spesso un numero di versione che all’apparenza può sembrare più vecchio. Una distribuzione può quindi avere già corretto una CVE pur mostrando una release numericamente inferiore a quella del kernel upstream.
La verifica corretta passa dagli advisory della distribuzione e dai changelog dei pacchetti installati.
Bug vecchi fino a 21 anni trovati con strumenti AI
Manizada spiega di avere scoperto le quattro vulnerabilità attraverso un metodo assistito dall’intelligenza artificiale che combina una rappresentazione a grafo degli oggetti e delle proprietà rilevanti per la sicurezza con strumenti capaci di “ragionare” sulla disposizione della memoria.
Il processo applicato comprende analisi del codice, rappresentazioni strutturate, ipotesi sulla geometria degli oggetti in memoria, verifica manuale e sviluppo degli exploit. Nel commit relativo a DirtyAH6 compare perfino un riconoscimento “Assisted-by” agli strumenti AI personalizzati utilizzati nella ricerca.
Codice sottoposto per anni a revisione umana può ancora nascondere errori profondi in percorsi poco battuti.
I nuovi strumenti di analisi aiutano a incrociare condizioni che un revisore difficilmente collegherebbe a colpo d’occhio. DirtyAH6, TUNderflow, PPPoEject e DiagSpill ne sono un buon esempio: quattro difetti nati in epoche diverse, nascosti in sottosistemi differenti, ma abbastanza potenti da consegnare l’accesso root quando qualcuno riesce a “mettere insieme tutti i pezzi”.