Table Of ContentIdentifikation von kritischen
Informationsflu¨ssen in
Android-Anwendungen auf Basis von
statischen Programmanalysen
Masterarbeit
Stefan Gommer
Matrikelnummer: 2180655
22.04.2015
Fachbereich Mathematik / Informatik
Studiengang Informatik
1. Gutachter: Dr. Karsten Sohr
2. Gutachter: Prof. Dr. Rainer Koschke
ii Statische Analyse von Android-Anwendungen
Erkl¨arung
Ich versichere, die Masterarbeit ohne fremde Hilfe angefertigt zu haben. Ich habe keine
anderen als die angegebenen Quellen und Hilfsmittel benutzt. Alle Stellen, die w¨ort-
lich oder sinngem¨aß aus Ver¨offentlichungen entnommen sind, sind als solche kenntlich
gemacht.
Bremen, den 22.04.2015
......................................
(Stefan Gommer)
Stefan Gommer iii
iv Statische Analyse von Android-Anwendungen
Danksagung
Ich m¨ochte zun¨achst einmal meinen Eltern danken, die mich mein gesamtes Studium
u¨berunterstu¨tzthabenundimmermitRatundTatzurSeitestanden.Außerdemdanke
ich meiner Freundin, die mich moralisch unterstu¨tzt und aufgebaut und die die Arbeit
immer wieder Korrektur gelesen hat. Nicht zuletzt danke ich meinen Betreuern, die
sich immer viel Zeit zur Besprechung genommen haben und mich ebenfalls mit vielen
wertvollen Tipps unterstu¨tzten.
Stefan Gommer v
vi Statische Analyse von Android-Anwendungen
INHALTSVERZEICHNIS
1 Einleitung 1
1.1 Die Entwicklung der Mobiltelefonie . . . . . . . . . . . . . . . . . . . . 1
1.2 Google Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Der Android Market . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Googles Reviewing Prozess . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Ziel der Masterthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6 Kapitelu¨bersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Grundlagen 7
2.1 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Sicherheitslu¨cken in Android . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Automatisierte Analysemethoden . . . . . . . . . . . . . . . . . . . . . 15
2.3.1 Dynamische Analyse . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.2 Statische Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.3 Gegenu¨berstellung . . . . . . . . . . . . . . . . . . . . . . . . . 18
3 Analysewerkzeuge 19
3.1 Soot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.1 Das IFDS-Framework . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.2 Das IDE-Framework . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 FlowDroid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 EPICC - Effective and Precise Intercomponent
Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4 IccTA - Inter Component Communication Taint Analysis . . . . . . . . 28
4 Konzeption 31
4.1 Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3 AndroidModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.4 Verwendete Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
vii
Inhaltsverzeichnis
4.4.1 Transformation der Daten aus FlowDroid in das
AndroidModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.4.2 Finden eines Einstiegspunktes . . . . . . . . . . . . . . . . . . . 39
4.4.3 Traversierung des Aufrufgraphen . . . . . . . . . . . . . . . . . 39
4.4.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.5 Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.6 Graphische Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5 Validierung 49
5.1 Auswahl der Testanwendungen . . . . . . . . . . . . . . . . . . . . . . . 49
5.2 Testverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.2.1 Abfragen auf Graphen mit Cypher . . . . . . . . . . . . . . . . 53
5.2.2 Cypher-Abfragen fu¨r DroidBench-Anwendungen . . . . . . . . . 54
5.2.3 Testumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.3 Testergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.4 Fallstudie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6 Abschlussbetrachtung und Ausblick 67
Abbildungsverzeichnis 72
Listings 73
viii Statische Analyse von Android-Anwendungen
KAPITEL 1
Einleitung
1.1 Die Entwicklung der Mobiltelefonie
Seit den 1990er Jahren werden Mobiltelefone immer beliebter. Die hierzulande als
“Handys”bezeichneten Ger¨ate wurden schnell immer kleiner und gu¨nstiger, so dass
sie auf weltweiten M¨arkten fu¨r immer mehr Verbrauchergruppen erreichbar wurden.
Es ist schnell zur Normalit¨at geworden, immer erreichbar zu sein. Technnologien wie
der “Short Message Service”(SMS) stellten eine neue Form der Kommunikation dar,
die es nicht l¨anger notwendig machte, dass der Empf¨anger aktuell erreichbar ist. Eine
Antwort kann erfolgen, sobald sich die Gelegenheit ergab.
Mit der Steigerung der Bedeutung technischer Errungenschaften wurden die Mobilte-
lefone immer vielf¨altiger in ihren Funktionen. Neben der Telefon- und SMS-Funktion
wurden sie schnell durch Adressbu¨cher, Kalender, Taschenrechner und andere kleine
Programme erweitert. Sogar rudiment¨are Internetinhalte konnten mit Hilfe des “Wire-
less Application Protocol”(WAP) auf den fu¨r heutige Standards eher langsamen U¨bert-
ragungsger¨aten angezeigt werden. Im Vergleich zu heimischen Computern war der Leis-
tungsumfang dementsprechend noch sehr du¨rftig. Auch die Bedienung gestaltete, sich
aufgrund der bis zu diesem Zeitpunkt vorhandenen Tastaturen und Displaygr¨oßen, als
mu¨hsam.
Der Durchbruch zu einer neuen Generation von Mobiltelefonen gelang erstmals der Fir-
ma Apple Computer mit der Ver¨offentlichung des iPhone im Jahr 2007. Dies war das
erste sogenannte Smartphone auf dem Markt. Es unterscheidet sich in vielen Punkten
von bislang u¨blichen Mobiltelefonen oder ebenfalls gebr¨auchlichen PDAs. Es besitzt
1
Kapitel 1. Einleitung
ein h¨oher aufl¨osendes Display, einen Internetbrowser, der herk¨ommliche HTML Sei-
ten darstellen konnte und eine Reihe von “Apps”. Dies sind Anwendungen, die wie
auf einem normalen Computer ausgefu¨hrt und unterschiedliche Aufgaben u¨bernehmen
k¨onnen. Durch die beru¨hrungsempfindlichen Bildschirme wurde auch die Bedienung
stark vereinfacht
Laut BITKOM wurden in Deutschland bisher bereits rund 24 Millionen Smartphones
verkauft (Stand 2014). Dies macht mittlerweile ca. 97% des gesamten Handyumsatzes
aus [Ill].
Moderne Smartphones verfu¨gen neben einem sehr großen Angebot unterschiedlicher
Anwendungen auch u¨ber in die Ger¨ate eingebaute Sensoren. Diese k¨onnen u¨ber die von
dem jeweiligen Betriebssystem, z.B. Android (siehe Kapitel 2.1), angebotenen Schnitt-
stellen, in den Anwendungen angesprochen werden.
1.2 Google Android
NachderVer¨offentlichungdesiPhoneszogenKonkurrenzfirmenschnellnachundbrach-
ten eigene Smartphone-Varianten auf den Markt. Inzwischen gibt es eine Vielzahl un-
terschiedlicher Modelle, die auf verschiedenen Betriebssytemen basieren. Abbildung 1.1
zeigt die Marktanteile der meist genutzten mobilen Betriebssysteme von 2010 bis 2013.
Wie zu erkennen ist, ist 2010 das Android-Betriebssystem mit fast 30% mit iOS und
Blackberry gleichauf. In den folgenden Jahren stieg der Absatz jedoch stark an, sodass
der Marktanteil von Android-Ger¨aten 2013 bei u¨ber 70% liegt, w¨ahrend der Anteil von
iOS-Ger¨aten seit 2010 stagniert.
1.3 Der Android Market
Als Google das Android-Betriebssystem entwickelte, wusste man bereits vom iPhone,
dass die Nutzer eine zentrale Anlaufstelle zum Download von Anwendungen bevor-
zugen. Daher entwickelte Google, ¨ahnlich wie auch Apple, einen eigenen App-Store
fu¨r Android: den Android Market. Dieser besaß eine Sparte fu¨r Spiele und auch die
2 Statische Analyse von Android-Anwendungen
Description:5.2.2 Cypher-Abfragen für DroidBench-Anwendungen . fahren handeln, mit dem bestimmte Datenflüsse eindeutig identifiziert und zugeordnet.