Janus-sårbarheten lar angripere endre apper uten å påvirke signaturene deres. Det ble oppdaget av GuardSquare og har blitt fikset av Google.
Android er installert på et stort antall enheter, og det gjør det til et mål for ondsinnede angripere. Sårbarheter i Googles mobile operativsystem fortsetter å bli oppdaget hver måned, men den gode nyheten er at Google er vanligvis flittig med å fikse dem i vanlige sikkerhetsoppdateringer som deretter tilbys til OEM-er, som deretter sender den til enheter.
Nylig avdekket sikkerhetsforskere en sårbarhet som lurte brukere til å la angripere ta opp enhetens skjerm. Den spesielle utnyttelsen ble fikset i Android Oreo, men analytikere på GuardSquare nylig rapportert en annen alvorlig sårbarhet som påvirker Android-apper signert av en eldre signaturordning.
GuardSquaresin rapport sier at Janussårbarhet (CVE-2017-13156) i Android lar angripere endre koden i applikasjoner uten å påvirke signaturene deres. Rapporten fortsetter å si at roten til sårbarheten er at en fil kan være en gyldig APK-fil og en gyldig DEX-fil på samme tid.
Janus utnytter det faktum at ekstra byte går ubemerket hen i APK-filer og DEX-filer. De GuardSquare rapporten forklarer at en APK-fil er et ZIP-arkiv som kan inneholde vilkårlige byte i starten, før og mellom ZIP-oppføringene. JAR-signaturordningen tar kun hensyn til ZIP-oppføringene, og ignorerer eventuelle ekstra byte når du beregner eller verifiserer applikasjonens signatur.
Det fortsetter med å forklare at en DEX-fil, derimot, kan inneholde vilkårlige byte på slutten - etter de vanlige delene av strenger, klasser, metodedefinisjoner, etc. Derfor kan en fil være en gyldig APK-fil og en gyldig DEX-fil på samme tid.
GuardSquare nevner også at et sentralt element i sårbarheten er en «ufarlig» funksjon ved den virtuelle Dalvik/ART-maskinen. Rapporten sier at i teorien laster Android-runtime APK-filen, trekker ut DEX-filen og kjører deretter koden. Men i praksis kan den virtuelle maskinen (VM) laste og kjøre både APK-filer og DEX-filer. Problemet er at når VM får en APK-fil, ser den fortsatt på de magiske bytene i overskriften for å bestemme hvilken type fil det er: DEX eller APK. Når den finner en DEX-header, laster den filen som en DEX-fil. Hvis den ikke finner en overskrift, laster den filen som en APK-fil som inneholder en zip-oppføring med en DEX-fil. Dermed kan den feiltolke doble DEX/APK-filer.
GuardSquare sier at en angriper kan utnytte denne dualitetsfunksjonen til VM for å legge til en ondsinnet DEX-fil til en vanlig APK-fil uten å påvirke signaturen. Android-runtime vil godta APK-filen som en gyldig oppdatering til en legitim tidligere appversjon, men Dalvik VM vil laste inn koden fra DEX-filen, som har blitt injisert med skadelig kode.
Vanligvis, når en bruker installerer en oppdatert versjon av en app, verifiseres appens signatur av Android-kjøretiden for å sikre at den samsvarer med den eldre versjonen. Når bekreftelsen er positiv, får den oppdaterte applikasjonen tillatelsene som ble gitt til den opprinnelige applikasjonen. På denne måten kan angripere bruke Janus-sårbarheten til å omgå signaturverifiseringsprosessen og få ubekreftet kode installert på enhetene til intetanende brukere.
Det som er enda verre er at denne ubekreftede koden kan få tilgang til kraftige tillatelser. Dette gir opphav til noen alvorlige muligheter. GuardSquare sier:
"En angriper kan erstatte en pålitelig applikasjon med høye privilegier (for eksempel en systemapp) med en modifisert oppdatering for å misbruke tillatelsene. Avhengig av den målrettede applikasjonen, kan dette gjøre det mulig for hackeren å få tilgang til sensitiv informasjon som er lagret på enheten eller til og med overta enheten fullstendig. Alternativt kan en angriper sende en modifisert klone av en sensitiv applikasjon som en legitim oppdatering [som] kan se ut og oppføre seg som den originale applikasjonen, men injisere ondsinnet oppførsel."
Selskapet la til at de foreløpig ikke hadde sett noen applikasjoner som utnytter Janus i naturen. Den andre gode nyheten er at sårbarheten krever at en bruker installerer en ondsinnet oppdatering fra en kilde utenfor Google Play Store. Derfor er brukere som begrenser appinstallasjoner til Play-butikken beskyttet.
Janus-sårbarheten påvirker enheter som kjører Android 5.0+. Apper som er signert med APK-signaturskjema v1 er berørt. APK-er signert med signaturplan v2 er beskyttet mot sårbarheten. Dette krever at APK-ene kjører på enheter som støtter det siste signaturskjemaet (Android 7.0 og nyere). Scheme v2 er beskyttet fordi i motsetning til skjema v1, vurderer det alle byte i APK-filen.
"Eldre versjoner av applikasjoner og nyere applikasjoner som kjører på eldre enheter forblir følsomme. Utviklere bør i det minste alltid bruke signaturordning v2," GuardSquare stater.
GuardSquare rapporterte dette problemet til Google 31. juli 2017, og mottok bekreftelse samme dag. Selskapets rapport sier at Google ga ut en oppdatering til partnerne sine i november, og publiserte feilen (CVE-2017-13156) i Android Security Bulletin 4. desember 2017. Sårbarheten har blitt fikset i Android-sikkerhetsoppdateringen for desember 2017. Separat har F-Droid-applikasjoner fra deres offisielle depot blitt bekreftet å være trygge. Til slutt er det bekreftet at sårbarheten er lappet på APKMirror.
Kilde: GuardSquare