Ubuntu hat eine Reihe von Sicherheitslücken behoben, die das Erlangen begehrter Root-Privilegien nur allzu einfach machten. Kevin Backhouse ist Security-Forscher bei GitHub und hat die Schwachstellen in der Desktop-Version des OS durch Zufall entdeckt. Mit einigen einfachen Terminal-Commands und ein paar Mausklicks können Standardbenutzer ganz einfach ein Administratorkonto für sich selbst anlegen, schreibt er in einem Blogpost, in dem er seine Entdeckung detailliert schildert.
Wenige Terminal-Commands reichten aus
Mit einer Reihe von Kommandos war der Security-Experte in der Lage, einen Bug in einem Daemon namens Accountservice zu triggern. Sogenannte Daemons sind Prozesse ohne eigenes Interface, die im Hintergrund ablaufen. Sie stellen Funktionalität für andere Vorgänge bereit oder dienen der Systemüberwachung. Wie der Name vermuten lässt, dient der Accountservice-Daemon der Verwaltung von Nutzerkonten auf dem Computer. Backhouse erstellte einen Symlink, der eine Datei namens .pam_environment mit /dev/zero verknüpfte, die Spracheinstellungen änderte und ein Sigstop-Signal an den Accountservice-Daemon schickte. Einige weitere Commands und Backhouse hatte einen Timer aufgesetzt, der ihm ein Zeitfenster ermöglichte, das gerade groß genug war, damit er sich noch ausloggen konnte, bevor der Daemon crashte. Das führte dazu, dass Ubuntu neu starten und ein Fenster zum Erstellen eines neuen Accounts anzeigen würde – eines neuen Accounts mit Root-Privilegien.
Im Detail ging es um 2 Sicherheitslücken
Ubuntu nutze eine modifizierte Version des Accountservice-Daemons, der Code enthalte, der nicht in der Upstream-Version vorhanden sei, schreibt Backhouse. Dieser zusätzliche Code suche nach der .pam_environment-Datei im Home-Directory. Dass Backhouse diese Datei zu einem Symlink auf /dev/zero gemacht hat, führt dazu, dass sie in einem Endlosloop hängen bleibt.
Der zweite Bug betrag den Gnome-Display-Manager. Dort werden User-Sessions und der Anmelde-Screen verwaltet. Stellt Gdm3, wie der der Display-Manager auch genannt wird, fest, dass keine Benutzer definiert sind, triggert er die Ersteinrichtung des Betriebssystems.
Informationen über die Anzahl der Benutzeraccounts ruft Gdm3 von Accountservice ab, der entsprechend nicht reagiert. Was genau an dieser Stelle vorgeht, zeigt Backhouse in diesem Code-Auszug.
Um die Sicherheitslücken auszunutzen, brauchte man physischen Zugang zu und ein Nutzerkonto auf einem betroffenen Gerät. Besonders erstaunlich an seiner Entdeckung fand Backhouse, dass er hierfür keine einzige Zeile Code schreiben musste. Maintainer des Open-Source-Betriebssystems haben beide Sicherheitslücken mittlerweile gepatcht.
Das ist ja wirklich einfach. Dazu muss man ja nur Erweiterte Kenntnisse haben. Dafür muss man nichtmal Entwickler sein. Ich teste mittlerweile jedes Ubuntu auf einem alten Rechner, bevor ich es auf meinen Arbeitsrechner packe. Ich weiß nicht mehr genau welche Version es war, aber eine der letzten hat mir im Bios herumgefuscht, sodass z.B. die Systemuhr nicht mehr richtig lief und UEFI auch nicht mehr ging. Und das auf einem relativ neuen Laptop. War sehr ärgerlich.