Siden offentliggjørelsen av de første, kjente sårbarhetene i Stagefright-biblioteket til Android, libstagefright, i juli i fjor, har Google omtrent hver eneste måned fram til nå kunngjort at flere sårbarheter i biblioteket har blitt fjernet.
Dette er den viktigste enkeltårsaken til at Google har begynt å komme med månedlige sikkerhetsoppdateringer til Android. Men oppdagelsene, kombinert med en dusørordning som ble innført i fjor sommer, har også ført til at mange andre sårbarheter i Android har blitt oppdaget og fjernet.
Det er nå klart at sårbarhetssituasjonen i libstagefright ikke er holdbar. I praksis har Google kunnet velge mellom å skifte ut hele biblioteket med et nytt, eller å forsterke libstagefright.
Trolig finnes det ingen garanti om at en erstatning vil være mindre sårbar enn libstagefright, så Google har valgt å forsterke biblioteket i stedet. Noe av dette avhenger dog ikke bare av biblioteket, men også operativsystemet rundt, noe som betyr at det aller meste av forsterkningen bare vil være tilgjengelig i Android N og nyere.
Forsterkningen skal skje delvis ved å hindre at feil blir sårbarheter, men også ved å begrense mulighetene som sårbarhetene åpner for.
Tryggere «overflytsfeiling»
Ifølge Google er de fleste sårbarheter i libstagefright et resultat av overflytsfeil i head-minneområdet, noe som igjen har vært en konsekvens av overflytsfeil knyttet til ikke-signerte heltall – altså heltall uten fortegn.
Heltalls-overflytsfeilene har gjort det mulig for angripere å allokere et minnebuffer med mindre plass enn det som er nødvendig for å romme de innkommende dataene. Resultatet av en slik overflytsfeil kan ikke, fordi dette dreier seg om C/C++, ikke garanteres. Ifølge Google kan forfatteren av kompilatoren dog velge den resulterende atferden, og vanligvis velges det raskeste eller enkleste alternativet.
Det Google nå har gjort, er å gjøre endringer i kompilatoren slik at atferden som følge av overflytsfeil blir tryggere. Dette gjøres delvis ved å innføre «integer sanitization», som sjekker om heltallsrelaterte overflytsfeil har oppstått, noe som i så fall utløser en trygg abort i stedet for en korrumpering av minnet.
Mange er fjernet
Men Google skal også ha brukt mye tid på finne og fjerne de aktuelle overflytsfeilene, slik at abortering likevel kan unngås.
– De fleste av de overflytsfeilene som har blitt oppdaget, er fikset. De som gjenstår – for det meste av ytelsesårsaker – har blitt verifisert og markert som trygge, for å unngå abortering under kjøringen, skriver Google. Med trygge menes at de ikke utgjør sårbarheter som kan utnyttes.
Uten at Google opplyser det direkte, vil trolig forbedringene som er nevnt over, gjøres tilgjengelig for alle støttede utgaver av Android, i praksis Android 4.4.4 og nyere.
I Android N vil deteksjon av overflytsfeil relatert til både signerte og usignerte heltall være aktivert i hele mediaserver-delen, inkludert libstagefright.
Innkapsling
Noe av det som har gjort Stagefright-sårbarhetene så alvorlige, er at mediaserver-prosessen i Android har tilgang til mengder ressurser og muligheter. Det skyldes at den har ansvar for det aller meste som er knyttet til håndteringen av multimedia og derfor kan aksessere ressurser som kameraet, mikrofonen, grafikk, telefonifunksjonalitet, Bluetooth og internett.
Men de fleste av sårbarhetene har blitt funnet i kode som primært er ansvarlig for mediekodeker og parsing av filformater. Denne koden behøver ikke egentlig tilgang til alle tillatelsene som selve mediaserver-prosessen har. Derfor vil mediaserver-komponenten i Android N være langt mer oppdelt, hvor parsingkode flyttes til sikkerhetssandkasser med få eller ingen tillatelser, og hvor komponenter som har behov for sensitive tillatelser, flyttes over i egne sandkasser som gjør at bare cameraserver-delen får tilgang til kameraet, at kun audioserver-delen får tilgang til Bluetooth, og lignende.
Denne tilgang kontrolleres av SELinux og seccomp, sikkerhetsteknologier som er velkjente fra blant annet ulike Linux-distribusjoner.
Det forventede resultatet vil være at det blir langt vanskeligere å utnytte eventuelle sårbarheter i libstagefright, og at slik utnyttelse gir langt færre muligheter enn i dag.
I et blogginnlegg skriver medlemmer av sikkerhetsteamet for Android at tilsvarende teknikker er i ferd med å bli tatt i bruk i forbindelse med andre komponenter i Android.
Reell fare?
Som alltid er det et problem at Android-oppdateringene bare blir distribuert til utvalgte enheter. De som har de mest populære modellene, eller Nexus-enheter, vil ofte motta oppdateringer over en forholdsvis lang periode. Men brukerne mange billigere enheter, som ofte allerede ved lanseringstidspunktet er utstyrt med en utdatert Android-versjon, kan ofte se langt etter selv sikkerhetsoppdateringene.
Så sent som mandag denne uken kom Google med en sikkerhetsoppdatering til Android. En rekke sårbarheter fjernes, men mange av dem er relatert til spesifikk maskinvare, først og fremst systembrikker fra Qualcomm.
Nå skal det sies at det har kommet få eller ingen rapporter om at Stagefright-sårbarhetene har blitt utnyttet i angrep. Trolig er det betydelig enklere å oppnå tilgang ved å lokke brukerne til å installere ondsinnede apper.
- Leste du denne? Fortsatt langt fra skadevarefritt i Google Play