Rust is een van de belangrijkste talen voor de ontwikkeling van Android-platforms

Google heeft aangekondigd dat de programmeertaal Rust is opgenomen in de talen die zijn toegestaan ​​voor de ontwikkeling van het Android-platform. De Rust-taalcompiler werd in 2019 opgenomen in de Android-bronstructuur, maar de ondersteuning voor deze taal bleef experimenteel. Enkele van de eerste Rust-componenten die voor Android zijn gepland, omvatten nieuwe implementaties van het Binder-interprocess-communicatiemechanisme en de Bluetooth-stack.

De introductie van Rust werd uitgevoerd als onderdeel van een project om de beveiliging te versterken, veilige programmeertechnieken te bevorderen en de efficiëntie van het identificeren van problemen bij het werken met geheugen in Android te vergroten. Opgemerkt wordt dat ongeveer 70% van alle gevaarlijke kwetsbaarheden die in Android worden geïdentificeerd, worden veroorzaakt door fouten bij het werken met geheugen. Het gebruik van Rust, dat zich richt op geheugenveiligheid en automatisch geheugenbeheer, verkleint de kans op kwetsbaarheden veroorzaakt door geheugenfouten zoals after-free access en bufferoverruns.

Rust dwingt de geheugenveiligheid af tijdens het compileren door referentiecontrole, objecteigendom en het volgen van de levensduur van objecten (scopes), en door de juistheid van geheugentoegang tijdens runtime te evalueren. Rust biedt ook bescherming tegen overflows van gehele getallen, vereist dat variabelewaarden vóór gebruik worden geïnitialiseerd, heeft een betere foutafhandeling in de standaardbibliotheek, gebruikt standaard het concept van onveranderlijke referenties en variabelen en biedt sterke statische typering om logische fouten te minimaliseren.

In Android wordt geheugenveiligheid geboden in de reeds ondersteunde talen Kotlin en Java, maar deze zijn vanwege de hoge overhead niet geschikt voor het ontwikkelen van systeemcomponenten. Rust maakt het mogelijk om prestaties te bereiken die dicht bij de talen C en C++ liggen, waardoor het kan worden gebruikt voor het ontwikkelen van delen van het platform op laag niveau en componenten voor interactie met hardware.

Om de veiligheid van C- en C++-code te garanderen, maakt Android gebruik van sandbox-isolatie, statische analyse en fuzzing-tests. De mogelijkheden van sandbox-isolatie zijn beperkt en hebben de limiet van hun mogelijkheden bereikt (verdere fragmentatie in processen is onpraktisch vanuit het oogpunt van het verbruik van hulpbronnen). Beperkingen bij het gebruik van sandbox zijn onder meer hoge overheadkosten en een verhoogd geheugengebruik veroorzaakt door de noodzaak om nieuwe processen voort te brengen, evenals extra vertragingen die verband houden met het gebruik van IPC.

Tegelijkertijd elimineert sandbox de kwetsbaarheden in de code niet, maar vermindert het alleen de risico's en compliceert de aanval, aangezien exploitatie de identificatie van niet één, maar meerdere kwetsbaarheden vereist. Methoden gebaseerd op het testen van codes zijn beperkt in die zin dat het, om fouten te identificeren, noodzakelijk is voorwaarden te scheppen waarin het probleem zich kan manifesteren. Het is niet mogelijk om alle mogelijke opties te behandelen, waardoor veel fouten onopgemerkt blijven.

Voor systeemprocessen in Android hanteert Google de ‘regel van twee’, waarbij toegevoegde code aan niet meer dan twee van drie voorwaarden mag voldoen: werken met niet-gevalideerde invoergegevens, gebruik maken van een onveilige programmeertaal (C/C++), en uitgevoerd zonder strikte sandbox-isolatie (met verhoogde rechten). Deze regel impliceert dat de code voor het verwerken van externe gegevens moet worden teruggebracht tot minimale privileges (geïsoleerd) of moet worden geschreven in een veilige programmeertaal.

Google heeft niet de bedoeling bestaande C/C++-code in Rust te herschrijven, maar is van plan deze taal te gebruiken om nieuwe code te ontwikkelen. Het is logisch om Rust te gebruiken voor nieuwe code, omdat statistisch gezien de meeste bugs voorkomen in nieuwe of onlangs gewijzigde code. In het bijzonder wordt ongeveer 50% van de gedetecteerde geheugenfouten in Android gedetecteerd in code die minder dan een jaar geleden is geschreven.

Rust is een van de belangrijkste talen voor de ontwikkeling van Android-platforms


Bron: opennet.ru

Voeg een reactie