Fragiles Sicherheitskonzept

Androiden unter Beschuss

13.10.2011
Von Ronny Sackmann
Android-Smartphones und Tablets stellen mittlerweile bei vielen Anwendern privat und beruflich den Mittelpunkt ihres digitalen Lebens dar. Damit rücken die Geräte auch in das Visier von Kriminellen. Grund genug, sich mit der Sicherheitsarchitektur von Android näher auseinanderzusetzen.

Google schaffte 2005 mit dem Zukauf des Unternehmens Android den Einstieg in das Segment der mobilen Plattformen. Entwickelt unter dem Dach der von Google initiierten Open Handset Alliance (OHA)avancierte das gleichnamige Betriebssystem inzwischen zur meistverbreiteten mobilen Plattform. Maßgebend für die rasante Entwicklung von Android ist die Lizenzpolitik der Open Handset Alliance, die das Betriebssystem den Herstellern von Mobiltelefonen zur freien Verfügung stellt.

Kern des Betriebssystems ist ein für den mobilen Einsatz optimierter Linux-Kernel, sowie zahlreiche Treiber und Bibliotheken aus dessen Umfeld. Wesentliches Merkmal von Android ist die Verwendung der Programmiersprache Java. Den Java-Bytecode von Anwendungen interpretiert die Dalvik Virtual Machine (DVM), eine von Google für den Betrieb auf mobilen Endgeräten angepasste Java-Laufzeitumgebung.

Jede Anwendung läuft unter Android in einem eigenen Prozess und in einer eigenen Instanz der Dalvik Virtual Machine. Dies gilt auch für die vorinstallierten Anwendungen, zu denen der Browser oder die Email-Applikation zählen. Zentrale Komponente des Betriebssystems ist das Programm Zygote. Als Masterprozess der Dalvik Virtual Machine ist Zygote für das Starten und Verwalten aller Applikationen verantwortlich. Beim Start des Android-Betriebssystems lädt Zygote häufig verwendete Bibliotheken in einen globalen Speicherbereich, so dass diese mit anderen Applikationen gemeinsam verwendet werden können. Anschließend öffnet Zygote einen Socket und wartet auf eingehende Anfragen zum Starten von Applikationen. Erhält Zygote eine entsprechende Nachricht, erzeugt es durch den Systemaufruf fork() eine neue Instanz der Dalvik Virtual Machine und startet die Applikationen mit einem gleichzeitigen Wechsel in deren Benutzerkontext.

Die Isolation der Applikationen bewerkstelligt der zugrunde liegende Linux-Kernel. Hierfür vergibt der Paketmanager zum Installationszeitpunkt jeder Android-Anwendung eine exklusive Benutzeridentität (UID). Welche UID der Paketmanager einer Applikation zugeordnet hat, speichert Android in einer XML-Struktur in der Datei /data/system/packages.xml. Listing 1 zeigt unter anderem die Benutzeridentität der im Android-Market kostenlos verfügbaren Anwendung "Twitter".

<!-- /data/system/packages.xml -->
...
<package name="com.twitter.android" codePath="/data/app/com.twitter.android.apk" system="false" ts="1312815675000" version="134" userId="10065" installer="com.google.android.feedback">
...

<perms>
<item name="android.permission.USE_CREDENTIALS" />
<item name="android.permission.WRITE_EXTERNAL_STORAGE" />
<item name="android.permission.GET_ACCOUNTS" />
<item name="android.permission.READ_CONTACTS" />
<item name="android.permission.WRITE_CONTACTS" />
<item name="android.permission.AUTHENTICATE_ACCOUNTS" />
<item name="android.permission.WRITE_SYNC_SETTINGS" />
<item name="com.twitter.android.permission.RESTRICTED" />
<item name="android.permission.INTERNET" />
<item name="com.twitter.android.permission.READ_DATA" />
<item name="android.permission.ACCESS_FINE_LOCATION" />
<item name="android.permission.READ_SYNC_SETTINGS" />
<item name="android.permission.MANAGE_ACCOUNTS" />
<item name="android.permission.VIBRATE" />
<item name="android.permission.WAKE_LOCK" />
<item name="com.twitter.android.permission.C2D_MESSAGE" />
...
</perms>
</package>
...
<package name="com.lge.hidden_camera" codePath="/system/app/CameraTest.apk" system="true" ts="1294384488000" version="7" sharedUserId="10005">
...
<package name="com.android.providers.drm" codePath="/system/app/DrmProvider.apk" system="true" ts="1294384488000" version="7" sharedUserId="10005">
...

Listing 1: Zuordnung von UIDs und Applikationen in der packages.xml