Studerende hentede tæt på 1 mio. Android-apps: Fandt hundreder der var sårbare

Illustration: vectortatu/Bigstock
Gennem en systematisk scanningsproces fandt studerende ved Aalborg Universitet hundredvis af sårbare Android-apps. Og der er sikkert mange flere.

I forbindelse med et projekt ved softwareingeniør-uddannelsen ved Aalborg Universitet har studerende scannet sig frem til hundredvis af sårbare Android-apps. Projektet fandt sted sidste år, men der er antageligt stadig mange sårbare apps i Googles Play-butik.

Tilbage i sommeren 2017 skulle Mikkel Christian Lybeck Christensen, Søren Aksel Helbo Bjergmark, Thomas Pilgaard Nielsen, Simon Ellegaard Larsen sammen med vejleder René Rydhof Hansen finde på en idé til et for-speciale.

De studerende ville gerne lave et projekt om at kortlægge it-sikkerhedshuller. Det er som bekendt et vidt begreb, som mange andre også beskæftiger sig med.

Og derfor var kunsten at finde en afart af området, som ikke var alt for gennemtærsket af andre forskere, og hvor de studerende havde en formodning om, at der var noget at hente.

Søren Aksel Helbo Bjergmark, der i dag er færdiguddannet og arbejder ved Netcompany, fortæller, at valget endte med at falde på udviklingsmiljøet Xamarin, som på det tidspunkt ikke var specielt undersøgt i forhold til it-sikkerhed.

»Så var der rum for, at det vi laver, er nyt. Det er også vigtigt i forhold til specialet,« fortæller han.

Xamarin, der i dag ejes af Microsoft, gør det muligt at afvikle apps på Android og iOS kodet i C#.

En sårbarhed

Efter valget faldt på Xamarin, fandt Søren Aksel Helbo Bjergmark og de andre i gruppen frem til, at software-miljøet havde været ramt af en potentielt ret alvorlig sårbarhed.

I 2015 opdagede en sikkerhedsforsker således, at det var muligt at få Xamarin til at indlæse vilkårlig kode.

Det lod sig gøre, fordi softwaren på det tidspunkt kiggede i en mappe uden for app-området efter DLL-filer, der skulle indlæses i forbindelse med runtime.

Mange Android-apps har imidlertid ifølge Søren Aksel Helbo Bjergmark tilladelse til at skrive til dette område. Tilladelsen kaldes WRITE_EXTERNAL_STORAGE.

Og derfor var det - i 2015 - muligt for andre apps at skrive til og oprette den mappe, som Xamarin indlæser DLL-filer fra.

Det vil med andre ord sige, at en ondsindet app på den måde kan få en anden app til at afvikle vilkårlig kode.

»Du kan uden nogen specielle rettigheder droppe al den kode, du vil, og så loader Xamarin det ukritisk,« fortæller Søren Aksel Helbo Bjergmark om sårbarheden.

Et angrebsscenarie kunne eksempelvis være, at en ondsindet app ved at indsætte kode i Xamarin får en ellers troværdig app til at vise et popup-vindue, der beder brugeren indtaste NemID-oplysninger.

Principperne bag angrebet står i detalje beskrevet her.

Hullet blev i 2015 lukket med Xamarin version 5.1. En begrænsning ved angrebet var, at det forudsatte, at angriberen havde skriveadgang til telefonen. Eksempelvis via en ondsindet app, der er sneget ind på enheden.

Hentede 995.000 apps

Tilbage til Aalborg-projektet. For at få et overblik over, hvordan det stod til med app-sikkerheden og Xamarin, så skulle de studerende have fat i nogle apps.

Den slags er lettere sagt end gjort.

Søren Aksel Helbo Bjergmark stødte dengang på et andet projekt, hvor forskere manuelt - altså ved at klikke på de enkelte apps - havde downloadet 1.200 programmer fra Google Play.

»Det tænkte vi, vi kunne gøre bedre, så vi downloadede 995.000 apps.«

Det stod på i september 2017, og den proces foregik - selvsagt - ikke manuel.

I udgangspunktet er det ikke muligt bare at klikke ind på play.google.com og så begynde at hente apps ned på sin PC. Det kræver en Android-telefon og et unikt device-ID. Og så selvfølgeligt en masse diskplads at lagre apps'ne på.

Via en crawler og flere virtuelle Android-enheder lykkedes det imidlertid holdet at hente de mange apps og indeksere dem i en database.

Søren Aksel Helbo Bjergmark beskriver denne del af projektet som lidt af et greyhat-område, da det strengt taget ikke er i overensstemmelse med Googles brugervilkår at hente apps på den måde.

Masser af sårbare apps

Efter at have fået de mange appdata i hus, scannede whitehat-hackerne sig frem til, at ca. 5.800 apps på det tidspunkt kørte via Xamarin. Og af disse vurderede holdet, at ca. 400 kørte en forældet udgave af Xamarin, der er sårbar overfor førnævnte angreb med DLL-filerne.

For at identificere sårbare apps, så for-speciale-skriverne blandt andet på, hvornår en app sidst var opdateret. Altså før eller efter sårbarheden blev patched.

Efterfølgende er holdet blevet opmærksom på en fejl i den måde, de har identificeret Xamarin apps på. I det lys vurderer Søren Aksel Helbo Bjergmark - han kalder det »et groft estimat« - at scannings-processen uden fejlen nok ville have afdækket omkring 6.500 Xamarin-apps og ikke 5.800.

Og dermed vil der altså også være grund til at tro, at mængden af sårbare apps vil være højere end de ca. 400, som holdet nåede frem til i forbindelse med for-specialet.

Søren Aksel Helbo Bjergmark vurderer - baseret på grove scanninger og manuelt tjek - at der i skrivende stund er mindst 100 sårbare apps på Google Play. Han fortæller, at der kan mange årsager til det tilsyneladende fald i sårbare apps i Play - eksempelvis kan apps være blevet fjernet som følge af en ændring i udviklervilkår.

Scannede for danske apps

Flere af de sårbare apps viste sig at være danske. En af de mere bemærkelsesværdige af slagsen var 'Akuthjælp' fra Danske Regioner.

Søren Aksel Helbo Bjergmark har overfor Version2 demonstreret, hvordan en ondsindet app vil kunne indsætte beskeder i den dengang sårbare app fra Danske Regioner. Det kunne principielt også være et NemID-vindue, der i konteksten ville se troværdigt ud, og som ville kunne bruges til at franarre danskerne deres login-oplysninger med.

»Hvis man begynder at være lidt mere ondsindet, som eksempelvis at poppe et Nemid-vindue op i Akuthjælp-app’en, så har man et problem,« forklarer Søren Aksel Helbo Bjergmark.

Og det kan få andre slemme konsekvenser også. For angrebs-appen vil nemlig kunne udnytte de rettigheder, som den sårbare app har på telefonen.

Søren Aksel Helbo Bjergmark var forbi Version2-redaktionen, hvor han demonstrerede et angreb mod en sårbar Xamarin-app. Illustration: Jakob Møllerhøj

»Du har kontrol over hele appen, du kan gøre, hvad du vil. Fra ‘Akuthjælp’ ville jeg kunne begynde at ringe til folk, jeg kan udnytte alle de permissions, der er givet til den pågældende app.«

Angrebs-demonstrationen, som Version2 blev præsenterer for, foregik i øvrigt på en telefon med en relativt sikkerhedsmæssigt opdateret Android 8.1 (sikkerhedspatches fra august i år).

  1. december sidste år kontaktede Søren Aksel Helbo Bjergmark Danske Regioner og gjorde opmærksom på, at der var en kendt sårbarhed i app'en. Software-ingeniøren in spe bliver sendt videre til udvikleren bag Akuthjælp.

Version2 har set en overordnet konstruktiv mail-dialog om problemet, hvor det fremgår, at fejlen rettet 27. december. Danske Regioners app-udvikler slutter i øvrigt dialogen med at ønske Søren Aksel Helbo Bjergmark et godt nytår.

Det er som sådan let nok at rette problemet. Det kræver blot, at app'en bliver gen-kompileret med en ikke-sårbar udgave af Xamarin.

Google

En helt lige så gnidningsfri dialog som den med Danske Regioner har Søren Aksel Helbo Bjergmark ikke oplevet med distributøren af de mange sårbare apps, Google.

Da han tog kontakt til internetgiganten, afviste Google umiddelbart at ville hjælpe med at udrydde de sårbare apps. I stedet blev Søren Aksel Helbo Bjergmark opfordret til selv at tage kontakt til de enkelte app-udviklere, altså nogle hundrede stykker på det tidspunkt.

»Jeg fik et afslag og tænkte, at så må det være sådan. Jeg skrev netop direkte til Google, fordi det ville være noget, de kunne fikse generelt, og ikke noget, der skulle fikses i individuelle apps. Det med at skrive til 400 forskellige app-udviklere, virkede ikke som min opgave,« siger Søren Aksel Helbo Bjergmark.

Mens de daværende studerende hos Aalborg Universitet måtte foretage forskellige krumspring for til sidst at få data, der kunne scannes for Xamarin-sårbarheden, så vil Google have anderledes lige adgang til det, mener Søren Aksel Helbo Bjergmark.

»De kunne sagtens detektere sårbare apps, så kunne de sende en mail til udviklerne og sige: Få det fikset, ellers fjerner vi app'en inden for x-antal dage.«

Version2 har blandt andet spurgt Google, hvorfor virksomhedens automatiske scannings-mekanismer ikke fanger, at stribevis af apps indeholder en kendt sårbarhed. Vi vender tilbage, skulle der komme nævneværdigt nyt i den sag.

Hvad med Apple og iOS?

Men hov, hvorfor har Søren Aksel Helbo Bjergmark og resten af holdet slet ikke scannet efter Xamarin på iOS? Det kunne da være sjovt at vide, om Apple har mere styr på butikken, end det umiddelbart er tilfældet hos Google.

Forklaringen er, at den pågældende sårbarhed ikke optræder på iOS, som Søren Aksel Helbo Bjergmark betegner som en mere lukket platform end Android. Sidstnævnte er blandt andet open source.

Åbenheden på Android giver mere frihed for udviklerne, men samtidig kan det også gøre platformen mere sårbar, vurderer Søren Aksel Helbo Bjergmark.

»Det er jo en åbenhedsstruktur, man har på Android, og den kan jeg egentlig godt lide, sådan generelt set,« siger han.

I forhold til hvorfor DLL-sårbarheden ikke lader sig gøre på iOS, henviser Søren Aksel Helbo Bjergmark til, at det ikke slet ikke tilladt at eksekvere dynamisk genereret kode på iOS.

Det forklarer Microsoft mere om her, hvor Windows-producenten kalder det en ‘security restriction’ fastsat af Apple.

Windows-producenten omtaler det som en en ‘security restriction’ fastsat af Apple.

Restriktionen bevirker ifølge forklaringen, at mens Xamarin-kode på Android bliver kompileret on-demand via en JIT-compiler, så bliver koden på iOS kompileret ‘ahead of time’ til en native binary, der kan køre på ARM-processen i en iPhone.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (6)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Søren Aksel Bjergmark

Hvis man kigger på alle downloadede apps så ja.

Dog kiggede vi kun på Xamarin apps (5800 apps) for en bestemt type sårbarhed. Dette giver ca 7% i stedet, hvis man køber den præmis at jeg beregner ud fra det. :)

Derudover er der tale om en ret alvorlig sårbarhed, hvor der burde gøres noget ved det. Det ville eksempelvis være ret uheldigt, hvis Akuthjælp app'en havde vist et nemid login vindue til brugerne.

Jens Hansen

Jeg har svært ved at forstå hvordan man kan betragte en sårbarhed, som kræver at brugeren eksekverer vilkårlig kode (ondsindet) og kun kan benyttes til lateral bevægelse for kritisk.

Du er fortsat begrænset af den sandbox som applikationen du angriber.

Der er så mange angrebsvoktorere i Android, så hvis du allerede har fået en bruger til at eksekvere din kode, er der langt mere interessante veje at gå.

Som speciale virker det en smule tyndt i praktis, men det teoretiske omkring scanneren og automatisere download af apps er da vel måske sjovt.

Edit: tilføjer at både Apple og Android af gode grunde specifikt noterer i deres egne security bulletins hvis en sårbarhed kun kan udnyttes ved en app. Som typisk single user miljø er det simpelthen for ukritisk et problem for mange aktører på markedet.

Søren Aksel Bjergmark

Du har helt ret I at det kræver noget kode på telefonen. Det er dog tidligere set at det er lykkedes at smugle ting ind på Google Play. Det vil i så fald være en app, der kræver meget få permissions og derfor for de fleste ikke vil rejse nogle røde flag.

Du har en pointe i forhold til om hvor kritisk sårbarheden skulle være. Jeg ser dog rigtigt mange scenarier, som ikke er specielt behagelige og gør denne sårbarhed værd at bruge tid på. Eksempler kan være:

Efter afinstallation af en ondsindet app vil de andre apps stadig køre det uautoriserede kode (den overlever dog ikke en nulstilling af telefonen)

Du kan desuden bruge den til at eksekvere alt den kode du vil fra en anden app. Mulige anvendelser her kan være alt få fat i loginoplysninger fra andre apps eller læse app'ens private data (Derudover er der scenariet med NemID på Akuthjælp)

I forhold til vores forspeciale (9. semester) så er fejlen i Xamarin kun en meget lille del af rapporten (og det samlede tidsforbrug). Ville give dig ret i at det ville være tyndt grundlag udenlukkende at skrive et speciale/forspeciale i.

Søren Aksel Bjergmark

Vi hentede gratis apps tilgængelige i den danske del af Google Play. APKPure virker som et glimrende alternativt forslag vi nok også kunne have brugt i stedet.

Jeg mener dog vi kiggede på en lignende side og der var flere danske Android apps vi ikke kunne finde og vi gik derfor efter at kunne hente direkte fra Google Play.

Log ind eller Opret konto for at kommentere