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 Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Multi-User-WebDAV, Docker, GitHub

    17.11.2019

    Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...

    Weiterlesen...

Neueste Artikel

  • Migration der Webseite und aller OpenSource Projekte

    In eigener Sache...

    Weiterlesen...
  • AutoHideToolbar für Java Swing

    Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.

    Weiterlesen...
  • Integration von EBMap4D in die sQLshell

    Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.

    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, muss 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 Codeberg-Repositories findet man hier.