Google’s overstap naar Rust-programmering vermindert Android-geheugenkwetsbaarheden met 52%

Google heeft bekendgemaakt dat de overstap naar geheugenveilige talen zoals Rust als onderdeel van de secure-by-design-aanpak ertoe heeft geleid dat het percentage geheugenveilige kwetsbaarheden dat in Android is ontdekt, in zes jaar tijd is gedaald van 76% naar 24%.

Volgens de techgigant vermindert de focus op veilig coderen voor nieuwe functies niet alleen het algehele beveiligingsrisico van een codebase, maar wordt de overstap ook ‘schaalbaarder en kosteneffectiever’.

Uiteindelijk leidt dit tot een afname van kwetsbaarheden in de veiligheid van het geheugen, omdat de ontwikkeling van nieuwe, onveilige geheugenfuncties na een bepaalde tijd afneemt en de ontwikkeling van nieuwe, veilige geheugenfuncties het overneemt, aldus Jeff Vander Stoep en Alex Rebert van Google in een bericht dat werd gedeeld met The Hacker News.

Misschien nog interessanter is dat het aantal kwetsbaarheden in de geheugenveiligheid ook kan dalen, ondanks een toename van de hoeveelheid nieuwe code die onveilig is voor het geheugen.

Deze paradox wordt verklaard door het feit dat kwetsbaarheden exponentieel afnemen. Uit onderzoek is gebleken dat een groot aantal kwetsbaarheden zich vaak in nieuwe of recent gewijzigde code bevindt.

“Het probleem zit hem vooral in de nieuwe code, die een fundamentele verandering in de manier waarop we code ontwikkelen noodzakelijk maakt,” merkten Vander Stoep en Rebert op. “Code rijpt en wordt met de tijd veiliger, exponentieel, waardoor de opbrengsten van investeringen zoals herschrijven in de loop van de tijd afnemen naarmate de code ouder wordt.”

Google, dat in april 2021 officieel aankondigde dat het de programmeertaal Rust in Android wilde ondersteunen, zei dat het rond 2019 prioriteit begon te geven aan de overgang van nieuwe ontwikkelingen naar geheugenveilige talen.

Hierdoor is het aantal kwetsbaarheden in het geheugenveiligheidssysteem dat in het besturingssysteem is ontdekt, gedaald van 223 in 2019 naar minder dan 50 in 2024.

Rust-programmering

Het spreekt voor zich dat de afname van dit soort fouten voor een groot deel te danken is aan de vooruitgang in de manieren om ze te bestrijden. Zo is er een verschuiving gaande van reactief patchen naar proactief beperken en proactief kwetsbaarheidsonderzoek met behulp van hulpmiddelen als Clang Sanitizers.

De techgigant merkte verder op dat strategieën voor geheugenveiligheid verder moeten evolueren en prioriteit moeten geven aan ‘preventie met hoge mate van zekerheid’ door ‘secure-by-design’-principes op te nemen die beveiliging verankeren in de basis.

“In plaats van ons te richten op de toegepaste interventies (beperkingen, fuzzing) of te proberen de toekomstige beveiliging te voorspellen op basis van eerdere prestaties, kunnen we met Safe Coding sterke uitspraken doen over de eigenschappen van de code en wat er wel of niet kan gebeuren op basis van die eigenschappen”, aldus Vander Stoep en Rebert.

Dat is nog niet alles. Google zei dat het zich ook richt op het bieden van interoperabiliteit tussen Rust, C++ en Kotlin, in plaats van het herschrijven van code, als een “praktische en incrementele aanpak” om geheugenveilige talen te omarmen en uiteindelijk hele kwetsbaarheidsklassen te elimineren.

“Het implementeren van Safe Coding in nieuwe code zorgt voor een paradigmaverschuiving, waardoor we de inherente afname van kwetsbaarheden in ons voordeel kunnen gebruiken, zelfs in grote bestaande systemen”, aldus het rapport.

“Het concept is simpel: zodra we de kraan voor nieuwe kwetsbaarheden dichtdraaien, nemen ze exponentieel af. Hierdoor wordt al onze code veiliger, wordt het beveiligingsontwerp effectiever en worden de schaalbaarheidsuitdagingen die samenhangen met bestaande strategieën voor geheugenveiligheid verlicht. Hierdoor kunnen ze effectiever en gerichter worden toegepast.”

De ontwikkeling vindt plaats terwijl Google aankondigde intensiever samen te werken met de productbeveiligings- en grafische verwerkingseenheid (GPU)-engineeringteams van Arm om meerdere tekortkomingen aan het licht te brengen en de algehele beveiliging van de GPU-software/firmwarestack in het Android-ecosysteem te verbeteren.

Dit omvat de ontdekking van twee geheugenproblemen in de aanpassing van de drivercode van Pixel (CVE-2023-48409 en CVE-2023-48421) en een ander in de firmware van de Arm Valhall GPU en de firmware van de 5e generatie GPU-architectuur (CVE-2024-0153).

“Proactief testen is een goede manier om de veiligheid te waarborgen, omdat het kan leiden tot het detecteren en oplossen van nieuwe kwetsbaarheden voordat ze worden misbruikt”, aldus Google en Arm.

Thijs Van der Does