Google heeft de resultaten van het initiatief voor de implementatie van veilige ontwikkelingsmethoden (Safe Coding) in Android gepresenteerd, zoals het gebruik van programmeertalen die veilige geheugenwerking waarborgen, het toepassen van statische analyzers en het ontwerpen van API's met een focus op veiligheid. De veranderingen hebben het percentage geheugen gerelateerde kwetsbaarheden in Android weten te verlagen van 76% in 2019 naar 24% in 2024, wat aanzienlijk lager is dan het gemiddelde in de industrie ā 70%.
Google-ingenieurs hebben ook geconstateerd dat de belangrijkste bron van beveiligingsproblemen nieuwe code is en dat de focus moet liggen op het moderniseren van de ontwikkelingsmethoden voor nieuwe code. Bestaande code wordt in de loop der tijd betrouwbaarder en veiliger (er is een exponentiƫle afhankelijkheid van veiligheid in de tijd), wat investeringen in herschrijfprojecten van bestaande code minder aantrekkelijk maakt. Bijvoorbeeld, 5-jaar oude code heeft gemiddeld 3.4 keer een lagere dichtheid van kwetsbaarheden dan nieuwe code. Voor Android- en Chromium-projecten is de verschil door de implementatie van veilige geheugenwerkmethoden 7.4 keer.

Als we dus kunnen voorkomen dat er fouten optreden bij de geheugenwerking in nieuwe code, zullen dergelijke fouten in oude code na verloop van tijd steeds minder vaak worden aangetroffen. Over het algemeen adviseert Google om oude code niet te herschrijven, maar te focussen op het schrijven van nieuwe code in talen die veilig met geheugen werken en het waarborgen van de overdraagbaarheid tussen nieuwe en oude code.
Naast het verminderen van het aantal kwetsbaarheden, verhoogt het gebruik van veilige programmeermethoden de ontwikkelingsproductiviteit, verbetert het de codekwaliteit en heeft het een positief effect op de prestaties. Bijvoorbeeld, de herschrijving van de code voor het genereren van QR-codes in Chromium in de taal Rust leidde tot een prestatieverbetering van 95% door het elimineren van overheadkosten die ontstonden door de noodzaak voor extra sandbox-isolatie.
De snelheid en kwaliteit van de ontwikkeling neemt toe dankzij het vereenvoudigen van tests en het verschuiven van de detectie van fouten naar eerdere fasen van de ontwikkeling, waarin fouten al zichtbaar worden voordat de ontwikkelaar begint met het controleren van de code. Ter illustratie worden de terugrolstatistieken genoemd: voor Rust-code is het aantal terugrolacties als gevolg van onvoorziene fouten twee keer zo laag als voor C++-code.
In algemene zin wordt het gebruik van veilige programmeermethoden gepresenteerd als de meest effectieve ontwikkelingsparadigma tot nu toe, die de eerdere drie benaderingen vervangt:
- Het corrigeren van kwetsbaarheden na ontdekking. Dit is kostbaar, vereist frequente updates en snelle levering aan gebruikers.
- Proactieve bescherming, gericht op het toepassen van technieken die het misbruiken van kwetsbaarheden bemoeilijken. De prijs voor deze bescherming was een verminderde prestaties en een constant kat-en-muis spel met aanvallers.
- Vroegtijdige ontdekking van kwetsbaarheden door gebruik te maken van fuzzing-tests en tools zoals AddressSanitizer en MemorySanitizer. Deze methode verwijderde alleen symptomen en niet de oorzaak van het probleem en vereiste constante inspanningen.


Bron: opennet.ru
