Ubuntu-Sicherheitslücke: Snap und Root!
Über einen Trick kann ein Angreifer Ubuntus Paketverwaltung Snap vorgaukeln, dass ein normaler Nutzer Administratorrechte habe - und damit wirklich einen Nutzer mit Root-Rechten erstellen.

Über eine Sicherheitslücke in Ubuntus selbstentwickeltem Paketsystem Snap können Angreifer Root-Rechte erlangen. Der Sicherheitsforscher Chris Moberly hat die Lücke entdeckt und nennt sie Dirty_Sock, in Anlehnung an eine ähnliche Schwachstelle im Linux Kernel mit dem Namen Dirty Cow. Im Unterschied zu den bisher von Ubuntu verwendeten Debian-Paketen werden die Snap-Apps (Snaps) komplett mit allen Abhängigkeiten gepackt. Moberly hatte die Sicherheitslücke im Januar entdeckt und an den Ubuntu-Sponsor Canonical gemeldet. Dieser hat ein Update von Snapd, dem Hintergrunddienst, über den die Snaps verwaltet werden, veröffentlicht. In Version 2.37.1 wurde die Sicherheitslücke geschlossen.
Anders als die bisher von Ubuntu verwendeten Debian-Pakete werden die Snap-Apps komplett mit allen Abhängigkeiten gepackt. Der Dienst Snapd läuft mit Administratorrechten und kann Befehle als Root ausführen, beispielsweise neue Nutzer erstellen. Damit diese ebenfalls nur von einem Benutzer mit Root-Rechten ausgeführt werden können, überprüft Snapd, ob es sich bei dem Nutzer um Root handelt. Allerdings konnte Moberly die Benutzer-ID seines Nutzers gegen die des Root-Nutzers austauschen und so Befehle mit Root-Rechten ausführen und beispielsweise einen neuen Nutzer anlegen. Dies bewerkstelligt er, indem er einen Socket, also eine Schnittstelle, über welche Daten mit einem Programm ausgetauscht werden können, mit dem Namen sock;uid=0; erstellt und diesen mit Snapd verbindet. Die übergebene UID 0 ist die Root-Benutzer-ID. Diese wird von Snapd übernommen; es lassen sich Befehle als Root ausführen.
Um die Lücke ausnutzen zu können, muss ein Angreifer bereits Zugriff auf ein Ubuntu-System haben. Beispielsweise kann ein Benutzer in einem Multi-User-System Root-Rechte erlangen und das Betriebssystem kontrollieren sowie die Daten der anderen Nutzer einsehen und verändern. Ein anderes Beispiel ist die Kombination mehrerer Sicherheitslücken, das sogenannte Chaining. Mit einer Sicherheitslücke gelangt ein Angreifer auf das System, mit einer weiteren erlangt er Root-Rechte.
Python-Scripts veröffentlicht
Moberly hat zwei Methoden entwickelt, um Code als Root auszuführen. Zu beiden Methoden hat er Proof-of-Concept-Python-Scripts auf Github veröffentlicht. In einer ersten Variante verwendet er die create-user-API von Snapd. Um diese auszunutzen, benötigt er jedoch eine Internetverbindung und das Programm adduser, um einen neuen Benutzer zu erstellen. Manche Linux-Distributionen verwenden jedoch das Programm useradd anstatt adduser - seine erste Methode funktioniert dann nicht mehr. Um noch mehr Fälle abzudecken, entwickelte er eine zweite Methode, bei der er ein Snap-Paket im "devmode" erstellt, bei welchem er ein Bash-Script ausführen kann. Dieses dient jedoch nur als Vehikel, um den Code zu transportieren, auch hier nutzt er die oben genannte Sicherheitslücke aus.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Dann review mit der gesparten Zeit halt den fremden Code. Nichttriviale Features (und...
Das Dockerfile und das Github-Repo werden nur bei Automated builds angezeigt, heißt ich...