Circa il 21% del nuovo codice compilato in Android 13 è scritto in Rust

Gli ingegneri di Google hanno riassunto i primi risultati dell'introduzione del supporto per lo sviluppo nel linguaggio Rust nella piattaforma Android. In Android 13, circa il 21% del nuovo codice compilato aggiunto è scritto in Rust e il 79% in C/C++. Il repository AOSP (Android Open Source Project), che sviluppa il codice sorgente della piattaforma Android, contiene circa 1.5 milioni di righe di codice Rust associato a nuovi componenti come il key store crittografico Keystore2, uno stack per chip UWB (Ultra-Wideband) , implementazione del protocollo DNS-over-HTTP3, framework di virtualizzazione AVF (Android Virtualization Framework), stack sperimentali per Bluetooth e Wi-Fi.

Circa il 21% del nuovo codice compilato in Android 13 è scritto in Rust

In conformità con la strategia adottata in precedenza di ridurre il rischio di vulnerabilità causate da errori nell'utilizzo della memoria, il linguaggio Rust è attualmente utilizzato principalmente nello sviluppo di nuovo codice e per rafforzare gradualmente la sicurezza dei componenti software più vulnerabili e vitali. Non esiste un obiettivo generale di trasferire l'intera piattaforma su Rust e il vecchio codice rimane in C/C++, e la lotta contro gli errori in esso viene effettuata attraverso l'uso di test fuzzing, analisi statica e l'uso nello sviluppo di tecniche simili a utilizzando il tipo MiraclePtr (associazione su puntatori grezzi, esecuzione di controlli aggiuntivi per l'accesso alle aree di memoria liberate), il sistema di allocazione della memoria Scudo (un sostituto sicuro per malloc/free) e meccanismi di rilevamento degli errori quando si lavora con la memoria HWAsan (Hardware-assisted AddressSanitizer), GWP-ASAN e KFENCE.

Per quanto riguarda le statistiche sulla natura delle vulnerabilità nella piattaforma Android, si nota che man mano che diminuisce il nuovo codice che funziona in modo non sicuro con la memoria, diminuisce anche il numero di vulnerabilità causate da errori quando si lavora con la memoria. Ad esempio, la quota di vulnerabilità causate da problemi di memoria è scesa dal 76% nel 2019 al 35% nel 2022. In numeri assoluti, nel 2019 sono state identificate 223 vulnerabilità legate alla memoria, 2020 nel 150, 2021 nel 100 e 2022 nel 85 (tutte le vulnerabilità rilevate erano nel codice C/C++; nel codice Rust, finora non sono stati riscontrati problemi simili) trovato). Il 2022 è stato il primo anno in cui le vulnerabilità legate alla memoria hanno smesso di dominare.

Circa il 21% del nuovo codice compilato in Android 13 è scritto in Rust

Poiché le vulnerabilità legate alla memoria sono solitamente le più pericolose, le statistiche complessive mostrano anche una diminuzione del numero di problemi critici e di problemi che possono essere sfruttati da remoto. Allo stesso tempo, la dinamica di identificazione delle vulnerabilità non legate al lavoro con la memoria è rimasta approssimativamente allo stesso livello negli ultimi 4 anni: 20 vulnerabilità al mese. Rimane anche la quota di problemi pericolosi tra le vulnerabilità causate da errori durante l'utilizzo della memoria (ma poiché il numero di tali vulnerabilità diminuisce, diminuisce anche il numero di problemi pericolosi).

Circa il 21% del nuovo codice compilato in Android 13 è scritto in Rust

Le statistiche tracciano anche la correlazione tra la quantità di nuovo codice che funziona in modo non sicuro con la memoria e il numero di vulnerabilità legate alla memoria (overflow del buffer, accesso alla memoria già liberata, ecc.). Questa osservazione conferma l’ipotesi secondo cui l’attenzione nell’implementazione di tecniche di programmazione sicura dovrebbe concentrarsi sulla rimozione del nuovo codice piuttosto che sulla riscrittura del codice esistente, poiché la maggior parte delle vulnerabilità identificate si trova nel nuovo codice.

Circa il 21% del nuovo codice compilato in Android 13 è scritto in Rust


Fonte: opennet.ru

Aggiungi un commento