Android-Security

Überblick über Android

  • Open-Source-Plattform für mobile, Internet-fähige Geräte (Smartphones, Tablets, Set-Top-Boxen, ...)
  • Initiiert und maßgeblich getrieben von Google
  • Basiert auf Linux-Kernel, diversen Bibliotheken und einem Andwendungs-Framework (Middleware) [12]
    • Unterstützt GSM, UMTS, Bluetooth, WiFi, GPS, Kompass, Beschleunigungs- und Lagesensoren, Multi-Touch, SD-Karten, Kamera,

Kernel-Security

  • Präventive Maßnahmen: [3]
    • Stack-Protection für Software (das erste mal auf einer ARM-Platform)
    • dlmalloc: Heap-Chunk-Protection gegen Heap-Overflows
  • Fehlende Features u.a.: [3]
    • Kein Adress-Space-Layout-Randomization (ASLR), kein No-Execute-Bit für Stack

App-Security

  • Installierbare Programme ("Apps") werden ausschließlich in Java geschrieben und in einer speziellen JavaVM (Dalvik VM) ausgeführt, die eine sehr restriktive Sandbox darstellt. => Application Sandbox [1, 2, 3]
    • Es kann aber auch nativer C/C++-Code aus einer Bibliothek zu einer Java-Anwendung hinzugeladen werden, mittels Native Development Kit [9].
    • Es wird aber immer eine Java-App vorausgesetzt, die in der Dalvik-VM läuft. Native C/C++-Anwendungen können nicht ausgeführt werden.
  • Apps müssen digital signiert sein, jedoch reicht auch ein selbst-signiertes Zertifikat [1, 3]
    • Updates für eine App werden nur installiert, wenn sie mit dem selben Schlüssel signiert wurden, wie die ursprüngliche Anwendung
  • Verwendung der Standard-Zugriffskontrolle (UID, GID, rwx-Bits) von Linux zum Abschotten der Apps untereinander: [1, 3]
    • Jede App erhält bei der Installation eine eigene UID
    • Dateien sind standardmäßig nur für den User (sprich: eine App) les- und schreibbar (Zugriffsbits für "world" im Unix-Dateisystem nicht gesetzt)
    => Eine Art Same-Origin-Policy aus der Browser-Welt auf Betriebssystemebene
    • Zwei Programme einer App können optional die gleiche UID erhalten, wenn sie mit dem gleichen Zertifikat signiert sind
  • Weiterhin können auf Ebene der Apps (und ihrer Subkomponenten) feinere Rechte spezifiziert werden. [1, 2]
    • 194 verschiedene Zugriffsberechtigungen, die vergeben werden können (Stand 08/2009 [3])
    • Apps müssen global deklarieren, auf welche Komponenten sie welche Zugriffe benötigen (Internet, GPS, Telefonbuch, ..., read, write, ...). Bei der Installation der App bekommt der Anwender die angeforderten Rechte zu sehen (oder Signatur) und kann sie einzeln gewähren oder ablehnen. Eine App erhält keine Rechte, die nicht explizit angefordert und gewährt wurden.
    • Apps können eigene Rechte definieren, um bspw. anderen Apps Zugriff auf ihre Daten und/oder Dienste zu gewähren.
    • Zugriff auf Systemkomponenten (Telefon, GPS, Kamera, Mikrofon, Internet, Bluetooth, ...) werden intern durch GIDs pro Komponente geregelt [3]
      • Jedes Gerät erhält eine eigene GID, das Device-Node in /dev gehört dieser Gruppe
      • Eine App erhält Zugriff auf eine Komponente, indem sie vom System der entsprechenden Gruppe zugeordnet wird
  • Media-Codecs sehr häufig unsicher und anfällig für diverse Attacken (Overflows, etc.) [3]
    • Eigener Media-Server-Prozess zum dekodieren von Audio/Video-Daten
    • Läuft mit minimalen Rechten: Nur Zugfiff auf Display und Soundkarte
    • Alle Anwendungen senden die Daten zum Media-Server, die sie dekodiert und darstellt
  • Automatische Updates über mobiles Internet

Android-Market

  • Offener Marktplatz, kein zentraler Code-Review: http://www.android.com/market/
    • Community-getriebene "Sicherheit": Benutzer können Anwendungen direkt im Market bewerten und/oder als schädlich markieren
    • Erste Banking-App mit Trojaner tauchte bereits 2009 im Marekt auf [7]
    • Updates der Apps ermöglichen es im Prinzip, die Trojaner-Funktion erst mit einem Update nachzuinstallieren [10]
  • Rasant wachsende Anzahl an Apps:
    • 5.000 Apps in 08/2009 [3]
    • 16.000 Apps in 12/2009 [4]
    • 30.000 Apps in 03/2010 [5]
  • Fragwürdige Offenheit: Google behält per AGB die Gewalt über die Apps und den Marktplatz:
    • "Wenn Google ein Produkt entdeckt, das die Android Marktplatz – Nutzungsbedingungen für den Entwicklervertrieb oder anwendbare Gesetze verletzt, hat Google das Recht, nach eigenem Ermessen ein solches Produkt durch Fernzugriff von Ihrem Gerät zu entfernen, wenn das Produkt Ihnen, Ihrem Gerät oder einem beteiligten Telekommunikationsunternehmen einen ernsthaften Schaden zuzufügen geeignet ist." [8]
=> Existiert ein geheimes Kill-Bit für Apps, um sie Remote zu löschen?

Privacy-Probleme durch Google?

  • Google-Account nicht zwangsläufig erforderlich, für einige Dienste allerdings schon, bspw. Zugang zum Android-Market
  • Synchronisation der Daten mit diversen Google-Diensten standardmäßig aktiviert, falls Google-Account eingerichtet (lässt sich alles deaktivieren, opt-out):
    • Standort (GPS oder GSM-Funkzelle) für lokalisierte Google-Suche
    • Standort für Google-Maps
    • Adressbuch
    • Kalender
  • Weitere Google-Dienste bzw. Synchronisationen können optional aktiviert werden (opt-in):
    • RSS-Feeds mit Google Reader
    • Verlauf der Google-Suche synchronisieren
    • Google Latitude (eigener Aufenthaltsort für Freunde sichtbar)
    • Google Buzz (ortsbasierte Kurznachrichten)
  • Im Market finden sich diverse Alternativen zu den Google-Diensten und Programmen (bspw. Opera-Browser, OpenStreetMap-Karten, LDAP-Client, ...), diese müssen jedoch manuell gesucht und installiert werden. Sie werden dem Benutzer jedoch nicht automatisch zur Auswahl angeboten, wie dies z.B. Microsoft unter Windows für den Browser oder die Suchmaschine tut. [11]

Quellen

[1] http://developer.android.com/guide/topics/security/security.html
[2] http://siis.cse.psu.edu/slides/android-sec-tutorial.pdf
[3] http://www.usenix.org/events/sec09/tech/tech.html#cannings
[4] http://www.androidcentral.com/google-says-only-16000-apps-market
[5] http://www.androidcentral.com/android-market-has-30000-apps
[6] http://developer.android.com/sdk/ndk/index.html
[7] http://www.heise.de/security/meldung/Android-App-spionierte-Bank-Logins-aus-901768.html
[8] http://www.google.com/intl/de_at/mobile/android/market-policies.html
[9] http://developer.android.com/sdk/ndk/index.html#overview
[10] http://www.heise.de/open/meldung/Der-Smartphone-Bot-der-mit-dem-App-Update-kam-949544.html
[11] http://www.heise.de/newsticker/meldung/Microsoft-liefert-Webbrowser-Auswahlfenster-in-Deutschland-aus-948723.html
[12] http://developer.android.com/guide/basics/what-is-android.html

Zuletzt geändert am 11 Juni 2010 11:04 Uhr von chrschn