Umgehen von App-Privilegien für Android

vorhergehende Artikel in: Java Security Rants Android
20.03.2015

Es ist erstaunlich, wie sehr die Menschen vorgeblichen Fakten vertrauen, die ihnen durch Medien und Marketing vorgesetzt werden. Ein typisches Beispiel dafür ist die sogenannte Sicherheitsarchitektur von Android.

Privilegien und ihre Änderungen im Laufe der verschiedenen Android-Versionen

Die App-Privilegien wurden in Android früher einzeln angezeigt, bei einem Update sah man nochmals alle Privilegien, die die App haben wollte: die die sie bereits hatte und eventuell neu benötigte.

Dann wurden die Privilegien in Gruppen zusammengafasst - der Anwender musste nun nur noch der Vergabe der Gruppen zustimmen, ohne genau zu wissen, welche Privilegien sich hinter den einzelnen Gruppen verbargen.

Außerdem wird bei Updates jetzt nur noch darüber informiert, welche zusätzlichen Privilegien die App benötigt - der Anwender wird nicht mehr daran erinnert, was er der App schon gegeben hat. Das macht den hier beschriebenen Angriff noch viel einfacher, als er es sowieso schon ist.

Die falsche Auffassung zur Sicherheit durch explizite Vergabe von Privilegien für Apps

Anwender denken - und sie werden von Medien und Marketing darin bestärkt - über Apps als singuläre Objekte, die keine Verbindung zu anderen auf dem Gerät haben. Sie denken, dass sie sicher sind, wenn eine App Zugriff auf ihre Kontakte haben will, jedoch keine Netzwerkverbindungen fordert.

Dabei müsste jedem klar sein, der ein Mobiles Gerät in die Hand nimmt um mehr damit zu tun, als zu telefonieren, dass die Apps untereinander Informationen austauschen: Jeder hat schon mal einen Link aus dem Browser heraus mit anderen getauscht oder eine Notiz exportiert oder per EMail verschickt. In jedem dieser Fälle und in unzähligen mehr arbeiten zwei Apps zusammen an der Umsetzung einer Anforderung.

Daher kann man sich nicht sicher sein, dass kein Unfug mit den Kontaktdaten getrieben wird, nur weil die App, die diese Erlaubnis haben möchte, nicht gleichzeitig die für die Kommunikation über das Internet haben möchte: Sie kann so programmiert sein, dass sie einfach einer anderen App mittels eines Intents interessante Daten zukommen lässt, die diese dann verschickt. Diese andere App ist auch als sicher eingestuft worden, da sie zwar Verbindung übers Internet aufnimmt, aber keinen Zugriff auf Daten aus dem Telefonbuch haben möchte. Jede der Apps für sich genommen, würde es nicht schaffen, sensible Daten aus dem Gerät auszuschleusen - beide in Kooperation aber schon! Und eine App braucht keine Erlaubnis, um Daten mit anderen austauschen zu können, beziehungsweise Intents von anderen Apps aufzurufen...

Aber alles unwichtig - wie hoch ist die Wahrscheinlichkeit, daß ich beide benötigten Apps installiere?

Diese Wahrscheinlichkeit ist sehr hoch, weil Cyber-Kriminelle heutzutage Marktforschung betreiben - sie werten Statistiken aus, welche Apps sich besonderer Beliebtheit erfreuen, sie nehmen erfolgreiche Konzepte von Bezahl-Apps und bieten sie kostenlos an. Sie manipulieren "Nutzer, die diese App heruntergeladen haben, haben auch installiert:" Wertungen. Außerdem muss es nicht so sein, daß man exakt zwei Apps installiert haben muss: Cyberkriminelle könnten auch beispielsweise 10 Apps entwerfen, die die Kontaktdaten abgreifen und 30, die Daten auf Verlangen ins Netz schicken können. Jede der 10 Apps kennt die 30 Kandidaten - und plötzlich ist aus einer Paarung, die auf dem Gerät installiert sein muss, um verwundbar zu sein, eine Menge von 10*30=300 möglichen Paarungen geworden, die den Angriff erfolgreich durchführen kann. Mit einem Minimum an Aufwand haben wir die Wahrscheinlichkeit einer Infektion auf das 300-fache erhöht!

Die Änderungen an der Art und Weise, wie Privilegien verteilt werden, macht Anwender über diesen Mechanismus angreifbar

Wie bereits oben geschildert, informiert Android seit neuestem nur noch darüber, welche neuen Rechte eine App braucht. Damit ist der Angreifer jetzt nicht mehr darauf angewiesen, ein Paar zueinander passender Apps auf das Gerät eines potentiellen Opfers zu bekommen: Er liefert seine App einfach so aus, dass sie nur das Privileg "Zugriff auf Kontakte" benötigt. Nach ein oder zwei Updates ändert er schließlich den Code so, dass nunmehr die abgegriffenen Daten ins Internet geschickt werden. Der Anwender sieht beim nächsten Update nur, dass zusätzlich das Privileg "Kommunikation über das Intenet" benötigt wird. Da hat er aber schon vergessen, dass die App ja Zugriff auf seine Kontakte hat. Durch die Änderungen beim Updateprozess wird er auch nicht an diese Tatsache erinnert und voila! - schon haben wir eine App auf dem Gerät unseres Opfers, die ihn aushorchen und sensible Daten ausschleusen kann.

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Fährnisse des Buildprozesses unter Windows

    17.07.2019

    Nachdem ich begonnen hatte, mich mit der Beschleunigung der Berechnung des Mandelbrot-Fraktals unter Zuhilfenahme der Shadereinheiten in Graphikkarten zu beschäftigen und erste Erfolge feiern konnte, wollte ich das mal auf einer richtigen Graphikkarte ausprobieren...

    Weiterlesen...

Neueste Artikel

  • Datenvalidierung UTF8 mit BiDi-Steuerzeichen (TrojanSource 2.0)

    Ich bin heute nochmal inspiriert worden, weiter über die Trojan Source Vulnerability nachzudenken. Meiner Meinung nach bestehen hier noch Probleme - speziell bei Nutzereingaben oder Daten, die über externe Schnittstellen ampfangen werden.

    Weiterlesen...
  • OpenStreetMap Navi als Docker-Container

    Ich habe die auf OpenStreetMap basierende OpenSource Navigationslösung Graphhopper in einen Docker-Container gepackt und als neuestes Mitglied in meinem Docker-Zoo willkommen geheißen.

    Weiterlesen...
  • SQL-Aggregatfunktionen in SQLite als BeanShell-Scripts

    Ich habe neulich über eine Möglichkeit berichtet, SQLite mittels der sQLshell und Beanshell-Skripten um SQL-Funktionen zu erweitern. In diesem Artikel versprach ich auch, über eine solche Möglichkeit für Aggregatfunktionen zu berichten.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.