Ingenieurs van Google hebben de eerste resultaten gepresenteerd van de implementatie van ondersteuning voor ontwikkeling in de programmeertaal Rust op het Android-platform. In Android 13 is ongeveer 21% van de nieuwe compileerbare code geschreven in Rust, terwijl 79% in C/C++ is geschreven. In de AOSP-repository (Android Open Source Project), waar de broncode van het Android-platform wordt ontwikkeld, zijn er ongeveer 1,5 miljoen regels code in Rust, die verband houden met nieuwe componenten zoals de Keystore2 cryptografische sleutelopslag, de stack voor UWB-chips (Ultra-Wideband), de implementatie van het DNS-over-HTTP3 protocol, het Android Virtualization Framework (AVF) en experimentele stacks voor Bluetooth en Wi-Fi.

In overeenstemming met de eerder aangenomen strategie voor het verminderen van het risico op kwetsbaarheden die voortkomen uit geheugenfouten, wordt Rust voorlopig voornamelijk toegepast bij het ontwikkelen van nieuwe code en voor het geleidelijk versterken van de beveiliging van de meest kwetsbare en vitale softwarecomponenten. Er is geen algemeen doel om het hele platform naar Rust over te zetten en oude code blijft in C/C++, terwijl de strijd tegen fouten in die code wordt gevoerd via fuzzing-testen, statische analyse en ontwikkeltechnieken zoals het gebruik van MiraclePtr (wrapper bovenop raw pointers die extra controles uitvoert op vrijgegeven geheugengebieden), het Scudo geheugenbeheersysteem (veilige vervanging voor malloc/free) en mechanismen voor het opsporen van geheugenfouten zoals HWAsan (Hardware-assisted AddressSanitizer), GWP-ASAN en KFENCE.
Wat betreft de statistieken over de aard van kwetsbaarheden in het Android-platform, wordt opgemerkt dat met de afname van nieuwe code die onveilig met geheugen omgaat, ook het aantal kwetsbaarheden dat door geheugenfouten wordt veroorzaakt, afneemt. Bijvoorbeeld, het percentage kwetsbaarheden veroorzaakt door geheugenproblemen is gedaald van 76% in 2019 tot 35% in 2022. In absolute cijfers werden in 2019 223 kwetsbaarheden gerapporteerd gerelateerd aan geheugengebruik, in 2020 150, in 2021 100, en in 2022 85 (alle genoemde kwetsbaarheden zijn in de C/C++ code, in de Rust code zijn tot nu toe dergelijke problemen niet gevonden). 2022 was het eerste jaar waarin geheugenkwetsbaarheden niet langer dominant waren.

Aangezien geheugengerelateerde kwetsbaarheden doorgaans de meest gevaarlijke zijn, is er in de algemene statistieken ook een afname van het aantal kritische problemen en problemen die op afstand kunnen worden uitgebuit. De dynamiek van het opsporen van kwetsbaarheden die niet met geheugenwerk te maken hebben, blijft echter al vier jaar ongeveer gelijk ā 20 kwetsbaarheden per maand. Ook het aandeel van gevaarlijke problemen onder kwetsbaarheden, veroorzaakt door geheugenfouten, blijft bestaan (maar omdat het aantal van dergelijke kwetsbaarheden afneemt, neemt ook het aantal gevaarlijke problemen af).

In de statistieken wordt ook een correlatie gevolgd tussen de hoeveelheid nieuwe code die onveilig met geheugen omgaat en het aantal geheugenkwetsbaarheden (buffer-overflow, toegang tot al vrijgegeven geheugen, enz.). Deze observatie bevestigt de veronderstelling dat de belangrijkste focus bij de implementatie van veilige programmeertechnieken zou moeten liggen op nieuwe code, in plaats van het herschrijven van bestaande code, aangezien het grootste deel van de ontdekte kwetsbaarheden betrekking heeft op nieuwe code.

Bron: opennet.ru
