Durch eine Sicherheitslücke im Linux-Kernel lassen sich Root-Rechte erlangen. Der fehlerhafte Code betrifft neben Millionen Linux-Nutzern wohl auch den größten Teil aller Android-Geräte - und hätte mit einem seit langem diskutierten Ansatz verhindert werden können.
Die Sicherheitsforscher von Perception Point haben eine Lücke im Linux-Kernel entdeckt (CVE-2016-0728), durch die Angreifer Root-Rechte auf dem System erlangen können. Der Analyse zufolge gibt es den fehlerhaften Code bereits seit 2012 in Linux und er betrifft alle Versionen seit 3.8.
Neben den meisten der aktuellen Linux-Distributionen enthalten damit wohl auch sehr viele Android-Geräte die Sicherheitslücke. Außer den von Google für das Android Open Source Project (AOSP) vorgegebenen Kerneln für Android 4.4 (Kitkat), 5 (Lollipop) und 6 (Marshmallow) gilt dies auch für einige noch ältere Kernel. So berichten Nutzer auf Reddit von Backports des fehlerhaften Codes zum Beispiel auf Version 3.4. Perception Point schätzt, dass zwei Drittel aller Android-Geräte betroffen seien. Fehler wäre vermeidbar gewesen
Der Fehler ist auf einen Ganzzahl-Überlauf im Kernel-eigenen Schlüsselbund zurückzuführen. Diese Komponente dient Userspace-Programmen und Treibern zum sicheren Speichern von Daten und Schlüsseln. Den Überlauf nutzten die Forscher, um einen Use-After-Free-Fehler zu provozieren. Damit konnte ein Schlüssel-Objekt des Kernels durch Code ausgetauscht werden, der schließlich vom Kernel selbst ausgeführt wird.
Diese Erklärung klingt zwar einfach, dem Bericht zufolge dauert das Ausnutzen der Lücke mit ihrem Beispielcode dennoch etwa 30 Minuten auf einem aktuellen Desktop-System. Erschwert werden könnte ein erfolgreicher Angriff über diese Lücke zudem durch die Verwendung einiger Sicherheitsfunktionen von Intel-CPUs (SMEP, SMAP) sowie durch SELinux. Letzteres wird in Android seit Version 4.2 alias Jelly Bean genutzt. In seiner Erklärung weist Perception Point zwar darauf hin, dass Vorkehrungen wie SELinux auch leicht umgangen werden könnten.
Mit einer Funktion des Pax-Teams (PAX_REFCOUNT) hätte der hier genutzte Überlauf einer Variablen zur Referenzzählung jedoch wahrscheinlich vollständig verhindert werden können. Ein Mechanismus, der vor dem Überlaufen dieser Variablen schützt, ist bereits im Jahr 2012 vorgeschlagen worden. Als Teil der neugegründeten Sicherheitsinitiative Kernel Self Protection Project (KSPP) ist im vergangenen Dezember auch die Aufnahme dieses Patches in den Hauptzweig des Linux-Kernels diskutiert worden. Noch ist dies aber nicht umgesetzt. Patches für Distros verfügbar
Sowohl Red Hat als auch Ubuntu haben die Lücke mit der zweithöchsten Gefahrenstufe versehen, da für den Angriff Code von einem angemeldeten Nutzer ausgeführt werden muss. Die höchste Warnstufe ist Fehlern vorbehalten, bei denen Angreifer von außen Zugriff auf das System erlangen können.
Patches sind für die meistverbreiteten Linux-Distributionen bereits verfügbar oder in Arbeit, so dass in Kürze Updates bereitstehen sollten. Wie sich bei schweren Lücken im vergangenen Jahr zeigte, haben viele Android-Hersteller allerdings oft Probleme damit, zeitnah Sicherheitspatches für ihre Geräte zu veröffentlichen. Einige Entwickler sehen die Ursache dafür in der großen Diversität von Android.