Google har afsluttet evalueringen af initiativet om implementering af sikre udviklingsmetoder (Safe Coding) i Android, såsom brug af programmeringssprog, der sikrer sikker håndtering af hukommelse, anvendelse af statiske analysetools og design af API'er med fokus på sikkerhed. Ændringerne har reduceret andelen af hukommelsesrelaterede sårbarheder i Android fra 76% i 2019 til 24% i 2024, hvilket er betydeligt lavere end det gennemsnitlige brancheniveau på 70%.
Google-ingeniører har også konkluderet, at den primære kilde til sikkerhedsproblemer er ny kode, og derfor bør fokus rettes mod at modernisere metoderne til udvikling af ny kode. Den eksisterende kode bliver over tid mere pålidelig og sikker (der observeres en eksponentiel afhængighed af sikkerhed med tiden), hvilket gør investeringer i projekter, der genforfatter eksisterende kode, mindre attraktive. For eksempel har 5-årig kode i gennemsnit en 3,4 gange lavere sårbarhedstæthed end ny kode. For Android- og Chromium-projekter, takket være implementeringen af sikre metoder til hukommelseshåndtering, er forskellen 7,4 gange.

Så hvis man kan forhindre fejl i hukommelseshåndteringen i den nye kode, vil sådanne fejl i den gamle kode blive opdaget mindre og mindre over tid. Generelt anbefaler Google ikke at genforfatte gammel kode, men at fokusere på at skrive ny kode med sprog, der arbejder sikkert med hukommelse, og sikre portabilitet mellem ny og gammel kode.
Udover reduktionen af antallet af sårbarheder forbedrer brugen af sikre programmeringsmetoder også udviklingsproduktiviteten, sikrer højere kodekvalitet og påvirker performance positivt. For eksempel har omskrivningen af koden i Chromium til generering af QR-koder på Rust-sproget resulteret i en 95% forbedring af dens præstation ved at eliminere overhead, der skyldes behovet for yderligere sandbox-isolering.
Hastigheden og kvaliteten af udviklingen øges ved at forenkle testning og flytte opdagelse af fejl til de tidlige udviklingsfaser, hvor fejlene bliver synlige, inden udvikleren begynder at gennemgå koden. Som eksempel nævnes tilbageslag af ændringer — for kode skrevet i Rust er antallet af tilbageslag på grund af uforudsete fejl halvdelen af, hvad det er for kode skrevet i C++.
Generelt præsenteres anvendelsen af sikre programmeringsmetoder som den mest effektive udviklingsparadigme i dag, der har erstattet de tidligere tre tilgange:
- Reparation af sårbarheder efter deres opdagelse. Omkostningstungt, kræver hyppige opdateringer og hurtig udbredelse til brugerne.
- Forebyggende beskyttelse, der fokuserer på anvendelse af teknikker, som komplicerer udnyttelsen af sårbarheder. Prisen for denne form for beskyttelse var et fald i ydeevnen og en konstant katte- og musespil med angribere.
- Tidlig opdagelse af sårbarheder gennem anvendelse af fuzzing-test og værktøjer som AddressSanitizer og MemorySanitizer. Metoden fjernede kun symptomerne, men ikke årsagen til sygdommen, og krævede konstant opmærksomhed.


Kilde: opennet.ru
