Salta al contenuto principale


La prima CVE del codice Rust nel kernel Linux è già un bug critico


Il mondo della tecnologia è un vero e proprio campo di battaglia, dove i geni del coding sfidano ogni giorno i malintenzionati a colpi di exploit e patch di sicurezza. Ecco perché la recente scoperta di una vulnerabilità nel kernel Linux è una notizia che ha fatto scalpore nel mondo dell’informatica: una falla di sicurezza, ufficialmente riconosciuta come CVE-2025-68260, è stata individuata e corretta nel kernel Linux.

In pratica, questa vulnerabilità, riguardante il driver Android Binder riscritto in Rust, avrebbe potuto creare non pochi problemi agli utenti Linux, come crash di sistema nel caso peggiore. L’importanza della scoperta risiede nel fatto che rappresenta la prima CVE formalmente assegnata al codice Rust nel kernel principale.

Per chi fosse interessato ad approfondire la questione, Greg Kroah-Hartman è stato determinante per segnalare e risolvere il problema. Insomma, niente panico, la falla è stata fixata ma l’episodio offre spunti interessanti per chi è appassionato di sicurezza digitale e sviluppo del kernel Linux.

Al centro del bug c’è un’operazione non sicura all’interno dell’implementazione di Binder basata su Rust, in cui un elemento viene rimosso da una lista concatenata mentre un altro thread può manipolare contemporaneamente gli stessi puntatori prev/next. Il progetto presupponeva che un oggetto NodeDeath non sarebbe mai apparso in una lista “esterna”; in pratica, tuttavia, si è verificato uno scenario in cui lo stesso elemento poteva essere elaborato simultaneamente da più contesti.

Il problema derivava dalla logica di Node::release: veniva acquisito un blocco, tutti gli elementi venivano spostati in un elenco temporaneo basato su stack, il blocco veniva rilasciato e quindi l’elenco locale veniva attraversato. Se, in parallelo, un altro thread invocava una rimozione non sicura sull’elenco originale, si verificava una condizione di competizione che corrompeva i puntatori prev/next, causando infine corruzione della memoria e crash del kernel. Un esempio di errore citava “Impossibile gestire la richiesta di paging del kernel” nel modulo rust_binder.

La correzione ha comportato la riscrittura di Node::release per estrarre gli elementi direttamente dall’elenco originale, eliminando del tutto l’elenco intermedio basato sullo stack. Secondo il team CVE del kernel Linux, il problema è stato introdotto in Linux 6.18 (commit eafedbc7c050c44744fbdf80bdf3315e860b7513) e risolto in 6.18.1 (3428831264096d32f830a7fcfc7885dd263e511a), così come in 6.19-rc1 (3e0ae02ba831da2b707905f4e602e43f8507b8cc). Il file interessato è drivers/android/binder/node.rs.

Il team CVE del kernel Linux suggerisce fortemente di passare a una versione stabile del kernel corrente come strategia di riduzione dei rischi: le modifiche individuali non sono soggette a test distinti e l’applicazione mirata di patch non riceve supporto ufficiale. Qualora non sia possibile eseguire l’aggiornamento, è possibile individuare le correzioni adatte consultando i commit menzionati nel repository del ramo stabile.

L'articolo La prima CVE del codice Rust nel kernel Linux è già un bug critico proviene da Red Hot Cyber.