Google har annonceret, at programmeringssproget Rust nu er et af de tilladte sprog til udvikling af Android-platformen. Rust-kompilatoren blev allerede inkluderet i Androids kildekode i 2019, men understøttelsen af dette sprog forblev eksperimentel. Nogle af de første komponenter baseret på Rust, som forventes leveret til Android, er nye implementeringer af mekanismen til procesinteraktion Binder og Bluetooth-stakken.
Implementeringen af Rust er en del af et projekt, der har til formål at styrke sikkerhed, fremme sikre programmeringsmetoder og forbedre effektiviteten af problemidentifikation i hukommelseshåndtering i Android. Det bemærkes, at omkring 70 % af alle kritiske sårbarheder, der er blevet identificeret i Android, skyldes hukommelsesfejl. Brugen af Rust, som fokuserer på sikker hukommelseshåndtering og automatisk hukommelsesstyring, vil reducere risikoen for sårbarheder, der skyldes hukommelsesfejl, såsom adgang til hukommelse efter den er blevet frigivet og buffer overflow.
Sikker hukommelseshåndtering i Rust sikres under kompileringen gennem referencekontrol, ejerskabsopfølgning og livscyklusstyring af objekter (synlighed), samt gennem evaluering af korrekt adgang til hukommelse under kørsel af koden. Rust tilbyder også midler til beskyttelse mod heltalsoverløb, kræver obligatorisk initialisering af variablers værdier inden brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet for uforanderlige (immutable) referencer og variabler som standard og tilbyder stærk statisk typetjek for at minimere logiske fejl.
I Android sikres sikker hukommelseshåndtering allerede i de understøttede sprog Kotlin og Java, men disse er ikke egnede til udvikling af systemkomponenter på grund af store overheadomkostninger. Rust muliggør en ydeevne tæt på C- og C++-sprog, hvilket gør det muligt at bruge det til udvikling af low-level dele af platformen og komponenter til hardwareinteraktion.
For securing code in C and C++ on Android, sandbox isolation, static analysis, and fuzz testing are applied. The capabilities of sandbox isolation are limited and have reached their peak (further breaking down into processes is impractical concerning resource consumption). Among the limitations of using a sandbox are high overhead costs and increased memory consumption due to the need to spawn new processes, as well as additional delays associated with IPC use.
The sandbox does not eliminate vulnerabilities in the code but merely reduces risks and complicates the execution of an attack, as exploiting requires identifying not just one, but several vulnerabilities. Code testing methods are limited by the necessity to create conditions for the manifestation of the problem to detect errors. It’s impossible to cover all possible scenarios, which is why many errors go unnoticed.
For system processes in Android, Google adheres to the 'two condition rule', according to which any added code must meet no more than two of the following three conditions: dealing with untrusted input data, using an unsafe programming language (C/C++), and running without strict sandbox isolation (having elevated privileges). From this rule, it follows that code for handling external data must either be pared down to minimal privileges (isolated) or written in a safe programming language.
Google does not aim to rewrite existing C/C++ code in Rust but plans to use this language for developing new code. Using Rust for new code makes sense, as statistics indicate that most errors surface in new or recently modified code. Specifically, around 50% of detected memory management errors in Android are found in code written less than a year ago.

Kilde: opennet.ru
