Android sceglie Rust: addio ai bug di memoria e sviluppo più rapido del 25%

Nel 2025 Android compie un passo decisivo verso la sicurezza della memoria integrando Rust nei componenti critici: dal kernel ai driver fino al firmware e a servizi sensibili. Google evidenzia vantaggi concreti.

Android ha intrapreso un percorso ambizioso: riscrivere il codice più critico con linguaggi memory-safe, con l’obiettivo di puntare alla sicurezza della memoria, riducendo il volume e l’impatto delle vulnerabilità che storicamente hanno causato i maggiori problemi. Al centro di questa trasformazione c’è Rust, linguaggio che previene errori di memoria come buffer overflow e use-after-free, offrendo al contempo un controllo dettagliato sulla gestione delle risorse.

Il 2025 segna un punto di svolta. La quantità di nuovo codice Rust integrato nel sorgente di Android ha ormai raggiunto livelli paragonabili a quelli del C++, aprendo la strada a confronti in termini di processi di sviluppo, stabilità e produttività. Così, gli sviluppatori Google hanno voluto fare il punto, fotografando lo stato delle cose ed elaborando quella che è a tutti gli effetti una dichiarazione d’amore nei confronti di Rust.

Google: Rust non solo rende il codice più sicuro, lo rende più veloce da sviluppare

Google ha adottato Rust in Android con un obiettivo iniziale molto chiaro: ridurre le vulnerabilità. I tecnici di Mountain View affermano, tuttavia, che i benefici misurati superano di gran lunga lo scopo originario.

Innanzi tutto, Rust mostra una riduzione di oltre 1000 volte rispetto al codice C/C++ delle vulnerabilità insite nella piattaforma Android. Gli interventi Rust hanno un tasso di rollback (annullamento delle modifiche) 4 volte inferiore rispetto agli equivalenti in C++.

Gli sviluppatori aggiungono inoltre che il codice Rust richiedere il 25% di tempo in meno per la revisione del sorgente e circa il 20% di revisioni in meno. Tanto che, per quanto riguarda gli interventi sui componenti di base di Android, le modifiche su codice Rust hanno ormai eguagliato quelle su codice C++.

Android 2025: dove sta approdando Rust oggi

La maturità dell’integrazione di Rust nel core della piattaforma consente ora di espandere l’adozione in diversi livelli dello stack:

  • Il kernel Android basato su Linux 6.12 è il primo con supporto Rust attivo.
  • È già in produzione il primo driver Rust del kernel.
  • È in corso la collaborazione con Arm e Collabora per un driver GPU kernel-mode scritto in Rust.

Il firmware è storicamente il segmento più critico e vulnerabile: privilegi altissimi, risorse limitate, mitigazioni applicabili solo parzialmente. Rust rappresenta qui un salto qualitativo netto.

Google spiega di usare Rust nel firmware già da anni e ha iniziato a diffondere tutorial e riferimenti per la comunità. Il progetto Rusted Firmware-A sviluppato con Arm è uno degli sviluppi più promettenti.

Rust è inoltre introdotto in componenti che gestiscono dati sensibili: Nearby Presence su Google Play Services; MLS (Messaging Layer Security) per il sistema di messaggistica RCS; parser critici di Chromium (PNG, JSON, Web fonts), sostituiti con nuove versioni memory-safe.

Il quasi incidente: il primo potenziale bug nel codice Rust di Android

Anche se Rust previene la maggior parte degli errori di memoria, nessun linguaggio può garantire sicurezza totale, soprattutto quando si ricorre all’uso di blocchi unsafe o si interagisce con librerie esterne.

Google racconta di un episodio, avvenuto nel 2025, che si sarebbe potuto trasformare nella prima vulnerabilità di memory safety nel codice Rust della piattaforma: un problema rilevato nella libreria CrabbyAVIF, utilizzata per decodificare e gestire immagini nel formato AVIF, un formato di compressione basato su AV1, progettato per offrire immagini ad alta qualità e ridotte dimensioni. Il problema è stato corretto prima del rilascio, e gli è stato assegnato l’identificativo ufficiale CVE-2025-48530 per garantirne la tracciabilità.

Un ruolo fondamentale nella prevenzione dello sfruttamento effettivo è svolto dal sistema di gestione della memoria di Android: Scudo hardened allocator. Scudo crea guard page, pagine di memoria protette attorno alle allocazioni critiche, che rendono l’overflow non sfruttabile. In pratica, anche se il codice conteneva un bug, il sistema stesso ha impedito che diventasse un rischio reale. Le guard page hanno trasformato un errore “silenzioso” in un crash evidente, rendendo immediatamente rilevabile il problema.

Conclusioni

Il percorso intrapreso da Android dimostra che sicurezza e produttività non sono più in contrapposizione: l’adozione massiccia di Rust sta trasformando il modo in cui il sistema viene sviluppato, rendendo il codice più sicuro, stabile e veloce da rivedere.

La riduzione drastica delle vulnerabilità di memory safety, il minor numero di rollback e la gestione più efficiente delle revisioni dimostrano che investire in linguaggi memory-safe produce benefici concreti e duraturi.

In generale, la tendenza è chiara: per i nuovi sistemi operativi e i componenti critici esistenti, si tende ormai a scegliere Rust quando la sicurezza della memoria è prioritaria. Per kernel e codebase legacy molto estese, invece, l’adozione resta graduale, modulare e selettiva. Linus Torvalds ha ribadito che l’adozione di Rust nel kernel Linux non può essere messa in discussione: tuttavia, l’adozione rimane lenta ma progressiva, focalizzata su moduli e driver, per ridurre le vulnerabilità senza destabilizzare il core C.

Google abbraccia Rust in Android con un atteggiamento più aggressivo: Mountain View può riscrivere nuovi componenti in Rust senza vincoli di compatibilità con un kernel legacy complesso, ottenendo guadagni immediati in sicurezza e produttività.

Ti consigliamo anche

Link copiato negli appunti