Google ha fatto il punto sull'utilizzo dei componenti in Rust nella piattaforma Android. La strategia di integrazione di metodi di sviluppo sicuri per il nuovo codice in Android ha avuto successo. Nel 2025, per la prima volta, la percentuale di vulnerabilità causate da errori nella gestione della memoria è scesa sotto il 20% del totale delle vulnerabilità. Per confronto, nel 2024 questa cifra in Android era del 24%, mentre nel 2019 arrivava al 76%. Nel frattempo, la media del settore rimane attorno al 70%.

L'uso di codice Rust nello sviluppo dei componenti di sistema di Android è iniziato nel 2020. Nel 2025, il volume del nuovo codice in Rust in Android ha superato quello del codice C e C++ aggiunto in un anno.

Le statistiche accumulate confermano un'ipotesi precedentemente espressa, secondo cui la principale fonte di problemi di sicurezza è il nuovo codice, mentre per il codice vecchio si osserva una dipendenza esponenziale della sicurezza rispetto al tempo: nel corso del tempo, gli errori nel codice più datato vengono individuati sempre più raramente. Alla fine, in Google hanno deciso di non tentare di riscrivere il vecchio codice utilizzando linguaggi di programmazione sicuri in termini di gestione della memoria, ma di concentrarsi sull'uso di tali linguaggi per il nuovo codice.
Oltre alla sicurezza, l'introduzione di Rust ha avuto un impatto positivo sulla velocità, produttività e qualità dello sviluppo. Per il codice in Rust è stata registrata una riduzione di quattro volte dei rollback a causa di errori imprevisti, e un abbattimento del tempo di revisione del 25%.


Quando si integrano modifiche di dimensioni comparabili in Android, le modifiche in Rust richiedono circa il 20% in meno di revisioni rispetto alle loro controparti in C++.

Questi dati sono spiegati dalla semplificazione dei test e dall'anticipazione della rilevazione degli errori nelle prime fasi dello sviluppo, in cui gli errori diventano visibili prima che il programmatore inizi a revisionare il codice. Inoltre, grazie all'eliminazione dei costi associati all'isolamento sandbox, nel codice Rust si è riusciti a ottenere un miglioramento delle performance.
Tra i progetti recenti che utilizzano Rust in Android, si segnala l'implementazione nel kernel Linux 6.12 del primo driver ampiamente utilizzato scritto in Rust, oltre all'uso di Rust nello sviluppo di firmware e applicazioni. Oltre al driver Rust già impiegato nel kernel, insieme alle aziende ARM e Collabora, si sta sviluppando un nuovo driver GPU in questo linguaggio. È stato implementato in Rust ed è utilizzato nel protocollo Nearby Presence dei Google Play Services per la rilevazione di dispositivi locali tramite Bluetooth. Per la prossima release dell'app Google Messages è pianificata l'inclusione di una nuova implementazione del protocollo MLS, scritta in Rust. Nel motore di navigazione Chromium sono stati impiegati parser per web font, immagini PNG e formato JSON scritti in Rust.
Attualmente, in Android, sono scritte circa 5 milioni di righe di codice in Rust, in cui è stata rilevata solo una potenziale vulnerabilità, causata da problemi di gestione della memoria. Di conseguenza, la densità di tali vulnerabilità nel codice Rust è di 0,2 vulnerabilità per milione di righe di codice. A titolo di confronto, nel codice scritto in C e C++, questo valore si aggira intorno a 1000 vulnerabilità per milione di righe di codice. La principale fonte di problemi in Rust è il codice all'interno dei blocchi unsafe. Questa tipologia di codice è stimata rappresentare il 4% dell'intero codice scritto in Rust.
La vulnerabilità sopra menzionata, CVE-2025-48530, è stata trovata nella libreria Crabby Avif, che include un parser e un decodificatore per il formato Avif. Il problema è stato identificato da dipendenti di Google prima della pubblicazione del rilascio e non ha interessato gli utenti. La vulnerabilità è causata da un errore in un blocco unsafe, che ha portato a un overflow del buffer. Si osserva che, anche se l'errore non fosse stato notato, la sua sfruttabilità sarebbe stata bloccata dal sistema di distribuzione della memoria Scudo fornito con Android, attivato di default nei firmware per Google Pixel e alcuni altri dispositivi.
Fonte: opennet.ru
