Wenn irgendwo im Linux-Kernel eine Schwachstelle gefunden wird, dann richtet sich die Aufmerksamkeit der Medien meistens sogleich auch auf Android. So auch bei der jetzt gefundenen Lücke, die seit Kernel 3.8 in vielen Linux-Distributionen vorhanden ist. Doch diesmal ist alles halb so wild, nur wenige Geräte sind betroffen.
Bei der von Perception Point entdeckten Lücke handelt es sich um eine lokale Schwachstelle, die es dem Angreifer über die Berechnung sehr großer Zahlen erlaubt, an Root-Rechte zu gelangen. Sie benutzt dazu eine Schwachstelle, die mit der Kernel-Option CONFIG_KEYS
zusamenhängt und im Februar 2013 in Kernel 3.8 eingeführt wurde.
Der Angreifer muss also ein lokaler Angreifer sein, was unter Umständen über eine App erfolgen kann, doch die Rechenzeit, die auf einem Android-Gerät benötigt würde, um die Lücke ausnutzen zu können, liegt bei mehreren Stunden. Zudem blockieren unter aktuellen Android-Systemen (ab Android 5.0) die SELinux-Einstellungen den Zugriff auf den betroffenen Speicherbereich und somit ein Ausnutzen der Root-Rechte.
Der Bug lässt sich also höchstens auf Android-Geräten ausnutzen, die so alt sind, dass SE Linux noch nicht aktiv ist. Dort kommt aber üblicherweise nicht der neueste Android-Kernel 3.10 zum Einsatz, sondern die Long-Term-Version 3.4, die vom Bug nicht betroffen ist. Wirklich ausnutzen lässt sich die Lücke also nur auf Android-Systemen, die bereits Kernel 3.8 oder neuer benutzen, CONFIG_KEYS
in der Kernel-Konfiguration aktiviert haben und SE Linux deaktiviert haben. Diese Schnittmenge dürfte sehr, sehr klein sein und höchstens ein paar Custom-ROM-Geräte betreffen. Der Google-Security-Experte Adrian Ludwig hat auf Google+ zum Beispiel bereits erklärt, dass keine Nexus-Geräte betroffen sind.
Wie kann ich das testen?
Wenn du Android 4.4 oder älter benutzt, dann ist dein Gerät zu 99% nicht betroffen, auch bei Android 5.0 dürfte die Wahrscheinlichkeit sehr gering sein. Zunächst solltest du testen, welchen Kernel dein Android-Gerät benutzt. Dazu öffnest du die Einstellungen und wählst am Ende der Liste den Eintrag „Über das Telefon“ aus. Hier findest du einen Eintrag zur Kernel-Version. Beginnt die Versionsnummer mit 3.4 oder einer noch kleineren Zahl, dann ist dein Gerät garantiert nicht betroffen.

Benutzt dein Androide bereits Kernel 3.10 (üblicherweise auf 64-Bit-Systemen), dann prüfe auch noch den SELinux-Status etwas weiter unten. Steht dort Strikt oder Enforced, dann ist dein Androide ebenfalls sauber.

Falls kein Eintrag zu SELinux vorhanden ist, du aber bereits Android 5.0 oder neuer benutzt, dann ist SELinux ziemlich sicher mit den Standardeinstellugen von Android vorhanden. Das kannst du überprüfen, indem du die Entwickleroptionen freischaltest, das USB-Debugging aktivierst und dich anschließend via adb shell
auf dem Android-Gerät einloggst. Nach dem Login gibst du den Befehl ls
ein. Zeigt er die Dateien seapp_contexts
, selinux_version
und sepolicy
an, dann benutzt dein System SELinux und du bist ebenfalls sicher.
Falls du eine Custom-ROM mit Kernel 3.8 oder neuer benutzt (wahrscheinlich 3.10), dann gibt es gewisse Chancen, dass unter /proc/congfig.gz
eine komprimierte Version der Kernel-Konfigurationsdatei liegt. Diese Datei kannst du auslesen und auf den Eintrag CONFIG_KEYS
prüfen. Die Option ist aktiv, wenn du einen Eintrag
CONFIG_KEYS=y
in der Datei findest. Hier musst du dann beim Entwickler nachfragen, ob SELinux aktiv ist. Nur wenn alle drei Faktoren zutreffen:
- Kernel 3.8 oder neuer
- CONFIG_KEYS=“y“
- SELinux deaktiviert
Nur dann ist dein Gerät über die Sicherheitslücke lokal angreifbar. Die Wahrscheinlichkeit dafür ist wie eingangs erwähnt sehr gering.