Rust è incluso tra i principali linguaggi per lo sviluppo della piattaforma Android

Google ha annunciato l'inserimento del linguaggio di programmazione Rust tra i linguaggi consentiti per lo sviluppo della piattaforma Android. Il compilatore del linguaggio Rust è stato incluso nell'albero dei sorgenti di Android nel 2019, ma il supporto per questo linguaggio è rimasto sperimentale. Alcuni dei primi componenti Rust pianificati per Android includono nuove implementazioni del meccanismo di comunicazione interprocesso Binder e dello stack Bluetooth.

L'introduzione di Rust è stata effettuata come parte di un progetto per rafforzare la sicurezza, promuovere tecniche di programmazione sicure e aumentare l'efficienza nell'identificazione dei problemi quando si lavora con la memoria in Android. Si noti che circa il 70% di tutte le vulnerabilità pericolose identificate in Android sono causate da errori durante l'utilizzo della memoria. L'uso di Rust, che si concentra sulla sicurezza della memoria e sulla gestione automatica della memoria, ridurrà il rischio di vulnerabilità causate da errori di memoria come l'accesso after-free e il sovraccarico del buffer.

Rust rafforza la sicurezza della memoria in fase di compilazione attraverso il controllo dei riferimenti, la proprietà degli oggetti e il tracciamento della durata degli oggetti (ambiti) e valutando la correttezza degli accessi alla memoria in fase di esecuzione. Rust fornisce anche protezione contro gli overflow di numeri interi, richiede che i valori delle variabili vengano inizializzati prima dell'uso, ha una migliore gestione degli errori nella libreria standard, utilizza il concetto di riferimenti e variabili immutabili per impostazione predefinita e offre una forte tipizzazione statica per ridurre al minimo gli errori logici.

In Android la sicurezza della memoria è garantita nei linguaggi già supportati Kotlin e Java, che però non sono adatti allo sviluppo di componenti di sistema a causa dell'elevato sovraccarico. Rust consente di raggiungere prestazioni vicine ai linguaggi C e C++, il che ne consente l'utilizzo per lo sviluppo di parti di basso livello della piattaforma e componenti per l'interazione con l'hardware.

Per garantire la sicurezza del codice C e C++, Android utilizza l'isolamento sandbox, l'analisi statica e i test fuzzing. Le capacità di isolamento della sandbox sono limitate e hanno raggiunto il limite delle loro capacità (un'ulteriore frammentazione nei processi non è pratica dal punto di vista del consumo di risorse). Le limitazioni dell'utilizzo della sandbox includono grandi costi generali e un maggiore consumo di memoria causato dalla necessità di generare nuovi processi, nonché ulteriori ritardi associati all'utilizzo di IPC.

Allo stesso tempo, la sandbox non elimina le vulnerabilità nel codice, ma riduce solo i rischi e complica l'attacco, poiché lo sfruttamento richiede l'identificazione non di una, ma di diverse vulnerabilità. I metodi basati sul test del codice sono limitati in quanto per identificare gli errori è necessario creare le condizioni per la manifestazione del problema. Non è possibile coprire tutte le opzioni possibili, quindi molti errori passano inosservati.

Per i processi di sistema in Android, Google aderisce alla "regola del due", secondo la quale qualsiasi codice aggiunto non deve soddisfare più di due delle tre condizioni: lavorare con dati di input non convalidati, utilizzare un linguaggio di programmazione non sicuro (C/C++) e in esecuzione senza un rigido isolamento sandbox (con privilegi elevati). Questa regola implica che il codice per l'elaborazione dei dati esterni deve essere ridotto a privilegi minimi (isolato) o scritto in un linguaggio di programmazione sicuro.

Google non mira a riscrivere il codice C/C++ esistente in Rust, ma prevede di utilizzare questo linguaggio per sviluppare nuovo codice. Ha senso usare Rust per il nuovo codice perché, statisticamente, la maggior parte dei bug compaiono nel codice nuovo o modificato di recente. In particolare, circa il 50% degli errori di memoria rilevati in Android vengono rilevati in codice scritto meno di un anno fa.

Rust è incluso tra i principali linguaggi per lo sviluppo della piattaforma Android


Fonte: opennet.ru

Aggiungi un commento