Schwachstellen im networkd-dispatcher, die Root-Rechte ermöglichen

Sicherheitsforscher von Microsoft haben zwei Schwachstellen (CVE-2022-29799, CVE-2022-29800) im Dienst networkd-dispatcher entdeckt, die den Codenamen Nimbuspwn tragen und es einem nicht privilegierten Benutzer ermöglichen, beliebige Befehle mit Root-Rechten auszuführen. Das Problem wurde in der Version 2.2 von networkd-dispatcher behoben. Informationen über die Veröffentlichung von Updates durch die Distributionen sind noch nicht verfügbar (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux).

Networkd-dispatcher wird in vielen Linux-Distributionen eingesetzt, einschließlich Ubuntu, und verwendet den Hintergrundprozess systemd-networkd zur Konfiguration von Netzwerkparametern. Es erfüllt Funktionen, die ähnlichen wie NetworkManager-dispatcher sind, d.h. es startet Skripte bei Änderungen des Netzwerkverbindungsstatus, beispielsweise wird es verwendet, um VPN nach der Einrichtung der primären Netzwerkverbindung zu starten.

Der mit dem networkd-dispatcher verbundene Hintergrundprozess läuft mit Root-Rechten und empfängt Ereignissignale über die D-Bus-Schnittstelle. Informationen über Ereignisse, die mit dem Statuswechsel von Netzwerkverbindungen zusammenhängen, werden von dem Dienst systemd-networkd gesendet. Das Problem besteht darin, dass unprivilegierte Benutzer ein Ereignis zu einem nicht existierenden Zustand generieren und das Ausführen ihres Skripts initiieren können, welches mit Root-Rechten ausgeführt wird.

Systemd-networkd ist darauf ausgelegt, nur systemeigene Handler-Skripte auszuführen, die im Verzeichnis /etc/networkd-dispatcher abgelegt sind und nicht durch den Benutzer ersetzt werden können. Aufgrund einer Sicherheitsanfälligkeit (CVE-2022-29799) im Code zur Verarbeitung von Dateipfaden gab es jedoch die Möglichkeit, über das Basisverzeichnis hinauszugehen und willkürliche Skripte auszuführen. Insbesondere bei der Generierung des Dateipfades zum Skript wurden die über D-Bus übermittelten Werte OperationalState und AdministrativeState verwendet, in denen keine Bereinigung von Sonderzeichen erfolgte. Ein Angreifer konnte eigenen Zustand generieren, dessen Name die Zeichen „../“ enthielt, und die Anforderung an networkd-dispatcher in ein anderes Verzeichnis umleiten.

Die zweite Schwachstelle (CVE-2022-29800) betrifft ein Race Condition zwischen der Überprüfung der Skriptparameter (Root-Zugehörigkeit) und der Ausführung, bei der ein kleines Zeitfenster bestand, das ausreichte, um eine Datei auszutauschen und die Überprüfung auf die Zugehörigkeit zum Benutzer root zu umgehen. Zudem fehlte im networkd-dispatcher die Überprüfung auf symbolische Links, einschließlich beim Aufruf von Skripten über subprocess.Popen, was die Durchführung des Angriffs erheblich vereinfachte.

Exploitationstechnik:

  • Es wird ein Verzeichnis „/tmp/nimbuspwn“ erstellt sowie ein symbolischer Link „/tmp/nimbuspwn/poc.d“, der auf das Verzeichnis „/sbin“ verweist. Dieses wird verwendet, um die Überprüfung auf ausführbare Dateien, die dem Root-Benutzer gehören, zu umgehen.
  • Für die ausführbaren Dateien aus „/sbin“ werden Dateien mit demselben Namen im Verzeichnis „/tmp/nimbuspwn“ erstellt. So wird beispielsweise für die Datei „/sbin/vgs“ eine ausführbare Datei „/tmp/nimbuspwn/vgs“ erstellt, die einem nicht privilegierten Benutzer gehört und in die der Code eingefügt wird, den der Angreifer ausführen möchte.
  • Über den D-Bus-Prozess wird ein Signal an den networkd-dispatcher gesendet, das den OperationalState auf "../../../tmp/nimbuspwn/poc" setzt. Für das Senden des Signals im Namensraum "org.freedesktop.network1" wurde die Möglichkeit genutzt, eigene Handler an systemd-networkd anzuschließen, zum Beispiel durch Manipulationen mit gpgv oder epmd, oder man kann sich darauf verlassen, dass systemd-networkd nicht standardmäßig gestartet ist (zum Beispiel in Linux Mint).
  • Nachdem das Signal empfangen wurde, erstellt der Networkd-dispatcher eine Liste von ausführbaren Dateien, die dem Benutzer root gehören und im Verzeichnis "/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d" verfügbar sind, welches tatsächlich auf "/sbin" verweist.
  • In dem Moment, in dem die Liste der Dateien erstellt ist, der Skript aber noch nicht ausgeführt wurde, wird der symbolische Link von "/tmp/nimbuspwn/poc.d" auf "/tmp/nimbuspwn" umgeleitet, und der networkd-dispatcher startet das Skript, das vom Angreifer platziert wurde, mit Root-Rechten.

Schwachstellen im networkd-dispatcher, die Root-Rechte ermöglichen


Quelle: opennet.ru
Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster