Fragiles Sicherheitskonzept

Androiden unter Beschuss

13.10.2011
Von Ronny Sackmann

Verschiedene Schutzstufen

Die einzelnen Berechtigungen untergliedert Android in verschiedene Schutzstufen. Zur niedrigsten Schutzstufe "normal" gehört beispielsweise die Berechtigung VIBRATE, die einer Applikation den Zugriff auf den Vibrationsalarm ermöglicht. In der Berechtigungsstufe "dangerous" finden sich alle Berechtigungen mit Zugriff auf persönliche Daten des Benutzers (bspw. READ_SMS) oder zur Steuerung des Gerätes (bspw. WRITE_SETTINGS). Darüber hinaus gibt es noch die Schutzklassen "signature" und "signatureOrSystem", die Interaktionen (bspw. INJECT_EVENTS) zwischen Applikationen mit gleicher Signatur oder Änderungen am System (bspw. INSTALL_PACKAGES) durch Applikationen des Herstellers reglementieren. Welche Schutzklasse einer Berechtigung zugeteilt ist, kann man im Source Code von Android nachlesen. Listing 6 zeigt einen Auszug aus der entsprechenden Quelltextdatei AndroidManifest.xml.

<!-- + /* //device/apps/common/AndroidManifest.xml
...
<!-- ================================== -->
<!-- Permissions for accessing messages -->
<!-- ================================== -->+...
<!-- Allows an application to monitor incoming SMS messages, to record or perform processing on them. -->
<permission android:name="android.permission.RECEIVE_SMS"android:permissionGroup="android.permission-group.MESSAGES" android:protectionLevel="dangerous" android:label="@string/permlab_receiveSms" android:description="@string/permdesc_receiveSms"/>
...

Listing 6: Android-Berechtigungen und zugehörige Schutzklasse

Ressourcenzugriffe der Schutzklasse "dangerous" präsentiert der Paketmanager dem Benutzer bei der Installation einer Applikation und verlangt die Bestätigung aller angeforderten Berechtigungen.

Twitter-App: Android-Berechtigungen und zugehörige Schutzklasse
Twitter-App: Android-Berechtigungen und zugehörige Schutzklasse
Foto: Ronny Sackmann

Den Zugriff auf eine Ressource steuert Android über die Mitgliedschaft in Benutzergruppen. Bestätigt ein Anwender bei der Installation einer Anwendung die angeforderten Berechtigungen, fügt der Paketmanager die Applikation jeweils der zu einer Berechtigung zugehörigen Benutzergruppe hinzu. Die Zuordnung zwischen Benutzergruppe und Berechtigungen speichert Android in der Datei /system/etc/permissions/platform.xml (Listing 7).

<!-- /system/etc/permissions/platform.xml -->
<permissions>
...
<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
<group gid="sdcard_rw" />
</permission>+ <permission name="android.permission.INTERNET" >
<group gid="inet" />
</permission>
...
</permissions>

Listing 7: Android-Berechtigungen und zugehörige Benutzergruppe

Die Anwendung "Twitter" fordert beispielsweise die Berechtigung für den Zugriff auf die Speicherkarte (WRITE_EXTERNAL_STORAGE). Der Paketmanager fügt die Applikationen daraufhin bei der Installation der zugehörigen Benutzergruppe sdcard_rw hinzu. Die Kontrolle der Zugriffsberechtigungen erledigt der Betriebssystemkern anhand der Gruppenzugehörigkeit, wofür teilweise Kernelanpassungen notwendig waren]

Im Gegensatz zu seinen Konkurrenten unterstützt die mobile Plattform von Google Multitasking und erlaubt das gleichzeitige Ausführen von Applikationen. Damit einher geht eine Kommunikation der Applikationen untereinander. Um dabei die Sicherheit des Systems aufrecht zu erhalten, hat Google das unter Linux für die Interprozess-Kommunikation (IPC) eingesetzte System-V-IPC durch OpenBinder ersetzt. OpenBinder erlaubt die Prüfung von Berechtigungen auf Basis der Prozess- bzw. Benutzeridentität und ermöglicht somit die Umsetzung des Android-Berechtigungsmodells auch auf IPC-Ebene.