it-sa Security-Newsletter NR.8 - 17.9.2009 - Anwender-Forum
Das Android-Sicherheitsmodell

- Christian Küster, tarent GmbH
Christian Küster, tarent GmbH
Mit der Android-Plattform gelang Google der Einstieg in das Mobilplattformsegment. Ziel des Projektes ist eine Plattform für mobile Geräte, wie Telefone, PDAs oder auch Netbooks. Das Bemerkenswerte ist, dass die komplette Plattform unter verschiedenen freien Lizenzen verfügbar ist. Dabei basiert das Gesamtsystem auf Linux und weiteren freien Bibliotheken aus dessen Umfeld. Jedermann kann einen Blick in die Interna von Android werfen. Zu bedenken ist jedoch, dass die Lizenz von Android ermöglicht, dass Hersteller von Mobiltelefonen den möglicherweise veränderten Quellcode der Plattform nicht wieder freigeben müssen. Der von Google freigegebene Teil von Android ist jedoch eine voll funktionstüchtige Plattform, der bis auf konkrete Treiber für spezifische Hardware-Funktionalitäten eines Smartphones bereitstellt.
Die moderenen Smartphones von Herstellern wie Apple, Nokia oder BlackBerry bieten dem Anwender den einfachen Zugriff auf einen jeweiligen Download-Markt an, in der sich Anwender neue Applikationen leicht herunterladen und installieren können. Dies wirft allerdings einige Sicherheitsbedenken auf. Inwieweit kann ich Fremdapplikationen trauen, die ich aus einem Markt herunterlade? 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 dieserart Gefahren minimieren soll. Zum einen setzt es auf die Fähigkeit des Benutzers die Sinnhaftigkeit von Berechtigungen einer Applikation einzuschätzen, zum anderen auf folgende technische Maßnahmen:
Applikationen werden unter Android virtualisiert ausgeführt. Die Eigenentwicklung DalvikVM interpretiert dabei Dalvik-Bytecode. Bei der Entwicklung von Applikationen wird dieser aus Java-Byte-Code transformiert. Dies ermöglicht zum Entwicklungszeitpunkt die Verwendung eines üblichen Java-Compilers. Seit kurzer Zeit ist es jedoch ebenfalls möglich auch nativen Code auszuführen, was von Anfang an Entwurfsziel der Plattform gewesen ist. Daher ist die Verwendung einer Virtualisierung keine zusätzliche Verteidigungslinie. Dies wird ebenfalls durch den Umstand deutlich, dass der Java-Security-Manager und dessen Berechtigungssystem innerhalb von Android keinerlei Rolle spielt.
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. Dies wird gewährleistet, in dem jede installierte Applikation unter einer eigenen Benutzer-Identität (Linux UID) ausgeführt wird. Zum Installationszeitpunkt der Applikation wird vom Paketmanager eine freie Benutzeridentität zugeteilt, unter der anschließend die Applikation läuft.
Daneben verfügt Android über ein ausgereiftes Berechtigungssystem für kritische Aktionen, die entweder das Gesamtsystem oder andere Applikationen beeinflussen können. Dazu gehört beispielsweise die Möglichkeit Netzwerk zu verwenden oder auf Telefon und -daten zugreifen zu können. Die von der Applikation eingenommenen Berechtigungen müssen vom Entwickler zum Entwicklungszeitpunkt deklariert werden. Bei der Installation der Software werden diese dem Benutzer aufgeführt. Dieser kann dann über die Sinnhaftigkeit der Berechtigungen entscheiden. Sollte eine Applikation eine nicht berechtigte Aktion durchführen, terminiert diese mit einer Sicherheitsverletzung und wird beendet.
Die Durchsetzung der Berechtigungen wird auf verschiedenen Ebenen der Plattform erreicht. Entscheidend ist immer die Benutzeridentität der Applikation, in einigen Fällen aber auch die Teilnahme an einer oder mehreren Benutzergruppen (Linux-GIDs). Die Berechtigung zur Verwendung von Netzwerk wird anhand der Teilnahme an einer speziellen Gruppe ermittelt. Die entsprechende Kontrolle der Zugehörigkeit zur Gruppe wird auf Kernel-Ebene durchgeführt.
Ein weiterer Sicherheitsmechanismus wurde für den Zugriff auf Daten von System und anderen Applikationen entwickelt. Auf Daten wird nie direkt zugegriffen, sondern ausschließlich durch eine Datenabstraktion. So wird gewährleistet, dass das Berechtigungssystem auch für den Zugriff auf fremde Daten verwendet werden kann.
Das Sicherheitsmodell ist ein pragmatischer Ansatz zwischen technischer Durchsetzung und Bedienbarkeit durch den Benutzer des mobilen Gerätes. Benutzer können daher sicher sein, dass Applikationen nur Funktionen und Daten nutzen, für die die Applikation die Berechtigung hat.


