Google tira le somme: il passaggio a Rust rende Android più sicuro

Il nuovo linguaggio di programmazione porta a meno vulnerabilità di sicurezza della memoria
Alessandro Nodari
Alessandro Nodari
Google tira le somme: il passaggio a Rust rende Android più sicuro

Su queste pagine parliamo spesso dei problemi di sicurezza di Android e degli sforzi di Google per combatterli. I più comuni e più difficili da affrontare riguardano i bug di sicurezza della memoria causati da un linguaggio di sviluppo non sicuro, e infatti l'anno scorso la casa di Mountain View ha annunciato il supporto a Rust per l'Android Open Source Project (AOSP).

Ora è il momento di tirare le somme, e Google ha pubblicato una serie di dati in cui dimostra che il numero di vulnerabilità di sicurezza della memoria è diminuito notevolmente negli ultimi anni, o versioni, di Android, come si può vedere nel grafico sottostante.

Segui AndroidWorld su News

Fonte: Google

Ma cos'è la sicurezza della memoria e perché Rust è più sicuro? La sicurezza della memoria è lo stato di protezione da vari bug del software e vulnerabilità di sicurezza quando si ha a che fare con l'accesso alla memoria, e i bug di sicurezza della memoria in C e C++ continuano a essere la fonte di errore più difficile da affrontare.

Senza entrare troppo nel tecnico, Java e Kotlin, l'opzione migliore per lo sviluppo di app Android, rilevano gli errori di runtime mentre C e C++ no. Purtroppo però, mentre l'utilizzo di questi linguaggi da parte di Android protegge efficacemente ampie porzioni della piattaforma Android dai bug di memoria, per i livelli inferiori del sistema operativo non è possibile.

Fonte: Google

Per C e C++, lo sviluppatore è responsabile della gestione della durata della memoria, ma è facile commettere errori, mentre Rust fornisce garanzie di sicurezza della memoria utilizzando una combinazione di controlli in fase di compilazione e controlli di runtime per garantire che gli accessi alla memoria siano validi. Il tutto con prestazioni equivalenti a C e C++.

Come si vede dal grafico sopra, la riduzione di vulnerabilità di sicurezza della memoria sono passate da un numero annuale di 223 a 85, e ancora più importante è il fatto che queste non rappresentino più la maggioranza delle vulnerabilità di Android, passando dal 76% delle vulnerabilità totali al 35% di adesso.

Per vulnerabilità si intende il totale delle vulnerabilità segnalate nel bollettino sulla sicurezza di Android, che include vulnerabilità critiche/di gravità elevata segnalate tramite il programma di premi per la vulnerabilità (VRP) e vulnerabilità segnalate internamente.

E con Android 13 le cose non possono che migliorare, in quanto l'ultima versione di Android è la prima in cui la maggior parte del nuovo codice aggiunto è in un linguaggio sicuro per la memoria.

Fonte: Google

Rust costituisce infatti il 21% del nuovo codice nativo in Android 13, inclusi lo stack Ultra-wideband (UWB), DNS-over-HTTP3, Keystore2, il framework di virtualizzazione di Android (AVF) e vari altri componenti e le loro dipendenze open source.

A supporto di quanto detto, Google rileva come finora siano state scoperte "zero vulnerabilità di sicurezza della memoria nel codice Rust di Android'" su Android 12 e 13.

Certo, questa correlazione non implica necessariamente una casualità, ma la GrandeG osserva come la percentuale di vulnerabilità causate da problemi di sicurezza della memoria sembra correlare piuttosto strettamente con il linguaggio di sviluppo utilizzato per il nuovo codice.

Fonte: Google

A riprova di quanto questi sforzi siano importanti, Google rileva come le vulnerabilità legate alla sicurezza della memoria rappresentino quelle più critiche, e parla anche i suoi piani futuri. La casa di Mountain View ammette infatti come la  migrazione da C/C++ sia impegnativa, e bisogna arrivare a utilizzare Rust ovunque nella base del codice.

Questi i progetti in corso:

  • implementazione degli HAL dello spazio utente in Rust
  • aggiungere il supporto per Rust nelle applicazioni attendibili
  • migrazione del firmware della VM in Android Virtualization Framework a Rust
  • supporto per Rust in Linux 6.1, che porta la sicurezza della memoria nel kernel, a partire dai driver