The Guardian: Eine Übersicht über die Sicherheitskonzepte der mobilen Plattform

Das Android-Sicherheitsmodell

Christian Küster

Die Android-Mobilplattform bietet ein innovatives Sicherheitsmodell, das Entwickler und Endanwender gleichermaßen zufriedenstellen möchte. Doch mit welchen technischen Tricks und Kniffen haben die Entwickler versucht, die Plattform gegen unbefugte Eingriffe zu schützen? Ein kleiner Einblick in die Tiefen von Android.

Mit der Android-Plattform gelang Google der Einstieg in das Segment der mobilen Plattformen. Ziel des Projekts ist eine Plattform für mobile Geräte wie Telefone, PDAs oder auch Netbooks. Bemerkenswert ist dabei, dass die komplette Plattform unter verschiedenen freien Lizenzen verfügbar ist. So basiert das Gesamtsystem auf Linux und weiteren freien Bibliotheken aus dessen Umfeld, was einen detaillierten Einblick in die Interna von Android ermöglicht. Gleichzeitig ermöglicht die Lizenz von Android aber auch, dass Hersteller von Mobiltelefonen den möglicherweise veränderten Quellcode der Plattform nicht wieder freigeben müssen. So ist der Großteil der zurzeit im Markt befindlichen Geräte mit einer modifizierten Android-Plattform ausgestattet. Der von Google unter dem Namen Android Open Source Project (AOSP) freigegebene Teil ist jedoch eine voll funktionstüchtige Plattform für moderne Smartphones, der bis auf konkrete Treiber für spezifische Hardwarefunktionalitäten alles Wichtige bereitstellt.

Die modernen Smartphones von Herstellern wie Apple, Nokia oder BlackBerry bieten dem Anwender den einfachen Zugriff auf einen jeweiligen Downloadmarkt an – neudeutsch auch App Store genannt -, in der sich Anwender neue Applikationen leicht herunterladen und installieren können. Das wirft allerdings einige Sicherheitsbedenken auf. Inwieweit kann man Fremdapplikationen trauen, die aus einem Markt heruntergeladen wurden? Niemand, auch nicht der Betreiber des Marktes, kann gewährleisten, dass Applikationen frei von Schadcode sind. Zu diesem Zweck wurde beim Entwurf von Android auf ein Sicherheitsmodell Wert gelegt, dass solche Gefahren minimieren soll. Zum einen setzt es auf die Fähigkeit des Benutzers, die Sinnhaftigkeit von Berechtigungen einer Applikation einzuschätzen, zum anderen auf technische Maßnahmen, auf die im weiteren Verlauf eingegangen wird.

Virtualisierung

Applikationen werden unter Android virtualisiert ausgeführt. Die Eigenentwicklung der virtuellen Maschine Dalvik interpretiert dabei so genannten Dalvik-Bytecode. Dieser wird bei der Entwicklung von Applikationen zurzeit aus Java-Bytecode transformiert, was die Verwendung eines üblichen Java-Compilers und der für einen Java-Entwickler gewohnten Entwicklungsumgebung, wie beispielsweise Eclipse, ermöglicht. Die Transformation des Java- in den Dalvik-Bytecode wird erst vor der Paketierung der Applikation durchgeführt. Die Verwendung von Virtualisierung bietet üblicherweise einen zusätzlichen Schutz vor Schadcode, der das Gesamtsystem beeinflusst, da dieser zunächst aus der Virtualisierung ausbrechen müsste. Seit einiger Zeit ist es jedoch mittels des Native-Development-Kits [1] für Android möglich, innerhalb von Applikationen nativen Code auszuführen zu lassen. Daher ist die Verwendung einer Virtualisierung in Android keine zusätzliche Verteidigungslinie. Das wird ebenfalls durch den Umstand deutlich, dass der Java Security Manager und dessen Berechtigungssystem innerhalb von Android keinerlei Rolle spielt. Mit dessen Hilfe wäre es lediglich möglich, ein Sicherheitsmodell innerhalb von Java-Code durchzusetzen, wie dies beispielsweise für die Ausführung von in Webseiten eingebetteten Java-Applets innerhalb von Browsern der Fall ist. Die Ausführbarkeit von nativem Code würde dagegen ein Ausbrechen aus dem Java-Security-Manager zu einem leichten Unterfangen machen.

Um trotzdem eine geeignete Isolation von Prozessen zu gewährleisten, wurde eine Stufe tiefer angesetzt. Der Linux-Prozess selbst stellt die Vertrauenseinheit der Android-Plattform dar. Das wird dadurch gewährleistet, indem jede installierte Applikation unter einer eigenen, exklusiven Benutzeridentität (Linux UID) ausgeführt wird. Zum Installationszeitpunkt der Applikation wird vom Paketmanager eine freie Benutzeridentität zugeteilt, mit deren Rechten anschließend die Applikation läuft. Die Prozessisolation des Linux-Kernels übernimmt dabei automatisch die Absicherung der einzelnen Android-Applikationen untereinander, denn Prozesse mit unterschiedlicher Benutzeridentität können nicht einfach aufeinander zugreifen.

Androids Sicherheitsmechanismen

Wichtigstes Instrument in Androids Sicherheitsmodell ist das Berechtigungskonzept, eine Form von Mandatory Access Control. Alle Aktionen, die entweder das Gesamtsystem oder andere Applikationen beeinflussen können, müssen von der Anwendung explizit deklariert werden und bedürfen der Zustimmung des Benutzers. Dazu gehört beispielsweise die Möglichkeit, ein Netzwerk zu verwenden oder auf Telefonfunktionen und -daten zugreifen zu können. Die von der Applikation gewünschten beziehungsweise benötigten Berechtigungen müssen vom Entwickler zum Entwicklungszeitpunkt im Manifest der Applikation mittels <uses-permission> deklariert werden (Abb. 1).

Abb. 1: Auswahl der von der Applikation deklarierten Berechtigungen während der Entwicklung

Bei der Installation der Software werden sie dem Benutzer vom Paketmanager aufgeführt. Dieser kann dann über die Sinnhaftigkeit der Berechtigungen entscheiden. Sollte eine Applikation eine nicht berechtigte Aktion durchführen, terminiert sie (in vielen Fällen) mit einer Sicherheitsverletzung und wird beendet (Abb. 2).

Abb. 2: Log-Ausgabe beim Versuch, ein Netzwerk-Socket ohne entsprechende Berechtigung zu verwenden
Geschrieben von
Christian Küster
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.