Janus-sårbarheten tillåter angripare att modifiera appar utan att påverka deras signaturer. Det upptäcktes av GuardSquare och har åtgärdats av Google.
Android är installerat på ett stort antal enheter, och det gör det till ett mål för illvilliga angripare. Sårbarheter i Googles mobiloperativsystem fortsätter att upptäckas varje månad, men den goda nyheten är att Google är vanligtvis noggrann med att fixa dem i vanliga säkerhetskorrigeringar som sedan erbjuds till OEM, som sedan skickar dem till enheter.
Nyligen upptäckte säkerhetsforskare en sårbarhet som lurade användare att tillåta angripare att spela in sin enhets skärm. Den särskilda utnyttjandet fixades i Android Oreo, men analytiker på GuardSquare rapporterade nyligen en annan allvarlig sårbarhet som påverkar Android-appar signerade av ett äldre signatursystem.
GuardSquares rapport anger att Janussårbarhet (CVE-2017-13156) i Android tillåter angripare att ändra koden i applikationer utan att påverka deras signaturer. Rapporten fortsätter att säga att roten till sårbarheten är att en fil kan vara en giltig APK-fil och en giltig DEX-fil samtidigt.
Janus utnyttjar det faktum att extra byte går obemärkt förbi i APK-filer och DEX-filer. De GuardSquare rapporten förklarar att en APK-fil är ett ZIP-arkiv som kan innehålla godtyckliga byte i början, före och mellan dess ZIP-poster. JAR-signaturschemat tar bara hänsyn till ZIP-posterna och ignorerar eventuella extra byte vid beräkning eller verifiering av applikationens signatur.
Det fortsätter med att förklara att en DEX-fil, å andra sidan, kan innehålla godtyckliga bytes i slutet - efter de vanliga avsnitten av strängar, klasser, metoddefinitioner, etc. Därför kan en fil vara en giltig APK-fil och en giltig DEX-fil samtidigt.
GuardSquare nämner också att ett nyckelelement i sårbarheten är en "ofarlig" funktion hos den virtuella Dalvik/ART-maskinen. Rapporten säger att i teorin laddar Android-runtimen APK-filen, extraherar dess DEX-fil och kör sedan dess kod. Men i praktiken kan den virtuella maskinen (VM) ladda och köra både APK-filer och DEX-filer. Problemet är att när den virtuella datorn får en APK-fil, tittar den fortfarande på de magiska byten i rubriken för att avgöra vilken typ av fil det är: DEX eller APK. När den hittar en DEX-rubrik, laddar den filen som en DEX-fil. Om den inte hittar en rubrik, laddar den filen som en APK-fil som innehåller en zip-post med en DEX-fil. Således kan den misstolka dubbla DEX/APK-filer.
GuardSquare säger att en angripare kan utnyttja denna dualitetsfunktion hos den virtuella datorn för att lägga till en skadlig DEX-fil till en normal APK-fil utan att påverka dess signatur. Android-runtime kommer att acceptera APK-filen som en giltig uppdatering till en legitim tidigare appversion, men Dalvik VM kommer att ladda koden från DEX-filen, som har injicerats med skadlig kod.
Normalt sett, när en användare installerar en uppdaterad version av en app, verifieras appens signatur av Android-runtime för att säkerställa att den matchar den äldre versionen. När verifieringen är positiv får den uppdaterade applikationen de behörigheter som hade beviljats den ursprungliga applikationen. På så sätt kan angripare använda Janus-sårbarheten för att kringgå signaturverifieringsprocessen och få overifierad kod installerad på intet ont anande användares enheter.
Vad som är ännu värre är att denna overifierade kod kan få tillgång till kraftfulla behörigheter. Detta ger upphov till några allvarliga möjligheter. GuardSquare stater:
"En angripare kan ersätta en betrodd applikation med höga privilegier (till exempel en systemapp) med en modifierad uppdatering för att missbruka dess behörigheter. Beroende på den riktade applikationen kan detta göra det möjligt för hackaren att komma åt känslig information som lagras på enheten eller till och med ta över enheten helt. Alternativt kan en angripare skicka en modifierad klon av ett känsligt program som en legitim uppdatering [som] kan se ut och bete sig som det ursprungliga programmet men injicera skadligt beteende."
Företaget tillade att de för närvarande inte hade sett några applikationer som utnyttjar Janus i det vilda. Den andra goda nyheten är att sårbarheten kräver att en användare installerar en skadlig uppdatering från en källa utanför Google Play Butik. Därför är användare som begränsar appinstallationer till Play Butik skyddade.
Janus-sårbarheten påverkar enheter som kör Android 5.0+. Appar som har signerats med APK-signaturschema v1 påverkas. APK-filer signerade med signaturschema v2 är skyddade mot sårbarheten. Detta kräver att APK-filerna körs på enheter som stöder det senaste signaturschemat (Android 7.0 och senare). Schema v2 är skyddat eftersom till skillnad från schema v1, tar det hänsyn till alla byte i APK-filen.
"Äldre versioner av applikationer och nyare applikationer som körs på äldre enheter förblir mottagliga. Utvecklare bör åtminstone alltid tillämpa signaturschema v2," GuardSquare stater.
GuardSquare rapporterade det här problemet till Google den 31 juli 2017 och fick ett kvitto samma dag. Företagets rapport säger att Google släppte en patch till sina partners i november och publicerade buggen (CVE-2017-13156) i Android Security Bulletin den 4 december 2017. Sårbarheten har fixats i Android-säkerhetspatchen från december 2017. Separat har F-Droid-applikationer från deras officiella arkiv bekräftats vara säkra. Slutligen har det bekräftats att sårbarheten har åtgärdats APKMirror.
Källa: GuardSquare