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

Google ha annunciato l'inclusione del linguaggio di programmazione Rust tra i linguaggi consentiti per lo sviluppo della piattaforma Android. Il compilatore di Rust è stato integrato nell'albero del codice sorgente di Android nel 2019, ma il supporto per questo linguaggio è rimasto sperimentale. Tra i primi componenti basati su Rust previsti per Android ci sono le nuove implementazioni del meccanismo di interazione tra processi Binder e dello stack Bluetooth.

L'implementazione di Rust è stata effettuata nell'ambito di un progetto volto a rafforzare la sicurezza, promuovere pratiche di programmazione sicura e migliorare l'efficacia nell'individuazione di problemi relativi alla memoria in Android. Si segnala che circa il 70% di tutte le vulnerabilità critiche identificate in Android è causato da errori nella gestione della memoria. L'utilizzo del linguaggio Rust, che si concentra su una gestione sicura della memoria e offre una gestione automatica della memoria, contribuirà a ridurre il rischio di vulnerabilità causate da errori di gestione della memoria, come l'accesso a aree di memoria dopo la loro liberazione e il superamento dei limiti del buffer.

La gestione sicura della memoria in Rust avviene durante la compilazione attraverso il controllo dei riferimenti, il tracciamento della proprietà degli oggetti e la gestione del ciclo di vita degli oggetti (scope), nonché mediante la valutazione della correttezza dell'accesso alla memoria durante l'esecuzione del codice. Rust offre anche strumenti per proteggere da overflow di interi, richiede l'inizializzazione obbligatoria delle variabili prima del loro utilizzo, gestisce meglio gli errori nella libreria standard, applica il concetto di immutabilità (immutable) per riferimenti e variabili per impostazione predefinita e offre una forte tipizzazione statica per minimizzare gli errori logici.

In Android, la gestione sicura della memoria è garantita nei linguaggi già supportati Kotlin e Java, ma questi non sono adatti per lo sviluppo di componenti di sistema a causa dell'elevato overhead. Rust consente di ottenere prestazioni simili a quelle dei linguaggi C e C++, permettendo il suo utilizzo per lo sviluppo di parti a basso livello della piattaforma e di componenti per l'interazione con l'hardware.

Per garantire la sicurezza del codice in C e C++ su Android, vengono utilizzate l'isolamento sandbox, l'analisi statica e i test di fuzzing. Le capacità di isolamento sandbox sono limitate e hanno raggiunto il loro potenziale massimo (ulteriore suddivisione in processi non è praticabile dal punto di vista del consumo delle risorse). Tra i limiti dell'uso della sandbox si segnalano gli alti costi di overhead e l'aumento del consumo di memoria, causati dalla necessità di generare nuovi processi, oltre all'insorgenza di ritardi aggiuntivi legati all'uso dell'IPC.

Tuttavia, la sandbox non elimina le vulnerabilità nel codice, ma riduce solo i rischi e complica l'esecuzione di attacchi, poiché per sfruttare la vulnerabilità è necessario identificare non una, ma diverse debolezze. I metodi basati sul test del codice sono limitati dal fatto che per rilevare errori è necessario creare le condizioni per manifestare il problema. Coprire tutte le possibili varianti non è possibile, quindi molti errori rimangono inosservati.

Per i processi di sistema in Android, Google segue la "regola dei due", secondo la quale qualsiasi codice aggiunto può rientrare in non più di due condizioni su tre: gestione di input non verificati, uso di linguaggi di programmazione non sicuri (C/C++) e esecuzione senza una forte isolamento sandbox (presenza di privilegi elevati). Da questa regola si evince che il codice per gestire dati esterni deve essere ridotto ai privilegi minimi (isolato) o scritto in un linguaggio di programmazione sicuro.

Google non ha l'obiettivo di riscrivere il codice C/C++ esistente in Rust, ma prevede di utilizzare questo linguaggio per lo sviluppo di nuovo codice. Ha senso usare Rust per il nuovo codice, poiché statisticamente la maggior parte degli errori si verifica nel codice nuovo o recentemente modificato. In particolare, circa il 50% degli errori rilevati nella gestione della memoria in Android si manifesta in codice scritto meno di un anno fa.

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


Fonte: opennet.ru
Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster