SE Android: In Lollipop wird das Rooten schwer

Bereits vor der offiziellen Veröffentlichung von Android 5 meldete der Rooting-Experte Chainfire, dass es nahezu unmöglich sei, Root-Rechte in Lollipop zu erlangen. Denn Google hat Security Enhanced Android - oder SE Android - systemweit aktiviert, auch für den Startprozess. Dort konnten bislang Root-Rechte durch selbst gebaute Skripts aktiviert werden. Diese funktionieren jetzt nicht mehr.

"Mit Android 5 wird SE Linux in allen Bereichen erzwungen" , schreibt Google(öffnet im neuen Fenster) . Das Ausnutzen zahlreicher Schwachstellen sei mit Hilfe von SE Linux verhindert worden, seitdem es im vergangenen Jahr eingeführt wurde. In Android 5 sei SE Android noch weiter verbessert worden, auch mit Hilfe zahlreicher externer IT-Sicherheitsexperten. Dadurch bekomme das mobile Betriebssystem die Sicherheitsstandards, die Unternehmenskunden und Regierungen benötigen.
Ohne Root ein geschlossenes System
Aus der Entwicklergemeinschaft heißt es hingegen, Android werde immer mehr zu einem "Walled Garden", einem geschlossenen System. Der Entwickler Chainfire wiegelt ab(öffnet im neuen Fenster) . Er begrüße die Ausweitung von SE Linux, da es tatsächlich die Sicherheit in Android erhöhe. Auch wenn es jetzt schwieriger sei, Root-Rechte zu erlangen, unmöglich sei es nicht. Die Bedingungen hätten sich jedoch erschwert.
SE Linux in Android ist nicht neu. Seit 2012 wird das von Linux übernommene Sicherheitsframework speziell an Android angepasst und trägt sogar einen eigenen Namen: Security Enhancements für Android(öffnet im neuen Fenster) . Maßgeblich an der Entwicklung beteiligt ist unter anderem die NSA, die auch das ursprüngliche SE Linux entwickelt hat. Später wurde es von Red Hat weiterentwickelt und bereits 2003 offiziell in den Linux-Kernel integriert. Nicht alle Linux-Distributionen setzen es aber ein. Es gibt ähnliche Frameworks, etwa Apparmor, das von Canonical in Ubuntu verwendet wird.
Mehr Sicherheit durch SE Android
SE Android erweitert die traditionelle Rechtevergabe unter Linux(öffnet im neuen Fenster) , nämlich die Einteilung von Rechten nach Benutzern, etwa Root mit seinen Administratorrechten sowie der normale Benutzer, der im Gegensatz zu Root keinen Zugriff auf systemnahe Dienste und Anwendungen und deren Konfigurationsdateien hat. Die traditionellen Rechte unterteilen sich in Lesen , Schreiben und Ausführen und werden jeweils einer einzelnen Datei zugewiesen. So können Dienste meist nur von Root ausgeführt, Anwendungen aber von Benutzern gestartet werden.
Obwohl diese Rechte - auch DAC oder Discretionatory Access Control genannt - weiterhin eine entscheidende Rolle unter Linux und Unix spielen, sind sie gewissermaßen unflexibel und teils kompliziert umzusetzen, vor allem dann, wenn Benutzer Zugriff auf systemnahe Funktionen bekommen sollen. Ein Beispiel: Damit Anwender über die Benutzeroberfläche einen Zugang zu einem neuen WLAN einrichten können, müssten sie Zugriff auf Systemdateien bekommen, die eigentlich nur vom Administrator verändert werden dürfen. Wird der Zugriff auf die entsprechenden Konfigurationsdateien unter dem traditionellen Rechtemodell für alle Benutzer freigegeben, stellt das ein gravierendes Angriffspotenzial dar, denn dann erhalten sämtliche Anwendungen ebenfalls die Rechte für die Netzwerkeinstellungen. Mit dem herkömmlichen DAC lässt sich die Rechtevergabe über Gruppen steuern, was allerdings das Einrichten eines Systems deutlich erschwert. DAC ist als Kompromiss zwischen der Benutzerverwaltung und der Systemverwaltung in modernen komplexen Linux-Systemen also eher ungeeignet.
Eingeschränkte Rechte selbst bei Root-Zugriff
Hier setzt SE Android an. Das Sicherheitsframework agiert auf Systemebene und schränkt zunächst sämtliche Rechte aller Prozesse ein. Mit Hilfe von Profilen werden bestimmten Prozessen nur bestimmte Zugriffsrechte eingeräumt, etwa der Zugriff auf Datenträger oder Netzwerkgeräte. Das Konzept nennt sich Mandatory Access Control - kurz MAC. Startet ein Dienst oder eine Anwendung einen Prozess, wird dynamisch festgelegt, welche Rechte dieser Prozess erhält.
Unabhängig von den herkömmlichen Benutzern und ihren zugewiesenen Rollen verwaltet SE Android seine eigenen, nämlich Domänen, Benutzer und Rollen. Sie werden jedem Prozess oder Dienst einzeln zugewiesen, einen allmächtigen Administrator gibt es bei SE Android nicht. SE Android stellt gewissermaßen einen Container dar, in dem Anwendungen nur in einem gewissen Kontext agieren dürfen. Selbst Anwendungen mit Root-Rechten können so eingeschränkt werden, etwa indem ihnen der Zugriff auf den Datenträger über /dev/block oder bestimmte Ordner, etwa das Benutzerverzeichnis /data , verweigert wird. Dort liegen normalerweise die Apps, die SuperSU-Rechte benötigen. So soll unter anderem verhindert werden, dass fehlerhafte oder manipulierte Apps das gesamte System kompromittieren können.
Rechte werden erzwungen statt nur vorgeschlagen
Bisher lief SE Linux in Android im sogenannten Permissive-Modus. Die Regeln waren zwar implementiert, wurden aber nicht erzwungen. Überschreitungen wurden lediglich in den Protokolldateien festgehalten. Root-Apps konnten im System daher den Startprozess Init noch nutzen, um dort eigene Startskripte einzufügen, etwa Chainfire mit seinem angepassten install_recovery.sh . Damit wurde ein SuperSU-Daemon gestartet, der dem Benutzer Root-Rechte gewährleistete.
In Lollipop werden SE-Android-Rechte jetzt erzwungen. Das gilt auch für den Startprozess und verhindert somit, dass herkömmliche Root-Apps funktionieren.
Lollipop benötigt neuen Kernel für Root-Rechte
Chainfire geht davon aus, dass ein eigener Kernel benötigt wird, um Root-Rechte zu erlangen. Seine bisherige Lösung besteht darin, die Ramdisk zu manipulieren. Dabei handelt es sich um ein komprimiertes Linux, das in einer Datei untergebracht ist und vom Linux-Kernel vor dem eigentlichen Systemstart in den Arbeitsspeicher entpackt wird. Dort gibt es neben Basistreibern ebenfalls einen Init-Prozess, in dem Chainfire die Zeile auskommentiert hat, die später das Skript install_recovery.sh in seinem eigenen SE-Linux-Kontext startet.
Damit muss aber das Kernel-Paket von Android manipuliert werden, denn einen Zugriff auf die Systempartition erlauben die neuen SE Android-Regeln nicht. Das setzt jedoch voraus, dass der Bootloader eines Geräts entsperrt werden kann. Nicht alle Gerätehersteller machen das möglich. Außerdem gibt es Zweifel, ob ein angepasster Kernel später ein Update des Systems übersteht. Das gelte auch für SuperSU-Skripte, die mögliche Sicherheitslücken im System ausnutzten, schreibt Chainfire. Optional ist noch die Verifizierung durch dm-verify , die notfalls einen vermeintlich manipulierten Kernel durch einen ursprünglichen ersetzt, der auf einer versteckten und nur lesbaren Backup-Partition liegt. Diese Sicherheitsfunktion wird bereits in ChromeOS angewendet.
Root-Apps müssen angepasst werden
Auch wenn das Rooten eines Android-Geräts später möglich sein wird, die Hürden seien sehr viel höher als zuvor, schreibt Chainfire. Sicher sei, dass die meisten Root-Apps zumindest angepasst werden müssten, etwa wenn sie die Partitionen eines Android-Systems auslesen wollten.
Benutzer wollen nicht nur aus ideologischen Gründen die volle Kontrolle über ihr System. So mancher Kniff, etwa das komplette Backup, das Übertakten des Systems oder die Möglichkeit, die Akkulaufzeit eines Geräts zu erhöhen, funktionieren nur mit Root-Rechten. Dem stehen tatsächliche Sicherheitsbedenken entgegen. Denn Malware kann beispielsweise tiefer in das System eingreifen. Auch schlecht programmierte Apps können das gesamte Betriebssystem abschießen.
SE Android sollte nicht deaktiviert werden
Manche Benutzer argumentieren, dass Android mit entsperrtem Bootloader oder verschlüsselter Modem-Firmware ohnehin ein unsicheres System sei, bei dem ein deaktiviertes SE Linux auch keine Rolle mehr spiele, schreibt Chainfire. Dem widerspreche er aber: Er habe seine manipulierten Kernel-Pakete so angepasst, dass SE Linux nicht vollkommen abgeschaltet werde. Denn die neuen Sicherheitsfunktionen seien durchaus sinnvoll. Auch wenn nicht alle Angriffsvektoren ausgeschaltet werden könnten, es gebe keinen Grund, deshalb alle Sicherheitsvorkehrungen auszuschalten.
Mittlerweile hat Chainfire für Nexus-Geräte, für die auch Lollipop zur Verfügung steht, angepasste Kernel-Pakete bereitgestellt(öffnet im neuen Fenster) . Die Zip-Archive enthalten sämtliche benötigten Werkzeuge zum Überspielen der Dateien. Ist der Bootloader noch gesperrt, sorgen die enthaltenen Werkzeuge dafür, dass er entsperrt wird. Das könne allerdings zu einem Verlust persönlicher Daten führen, warnt der Entwickler.



