Sicherheitslücken im Networkd-Dispatcher, die Root-Zugriff ermöglichen

Sicherheitsforscher von Microsoft haben zwei Schwachstellen (CVE-2022-29799, CVE-2022-29800) im networkd-dispatcher-Dienst mit dem Codenamen Nimbuspwn identifiziert, die es einem unprivilegierten Benutzer ermöglichen, beliebige Befehle mit Root-Rechten auszuführen. Das Problem wurde in der Version von networkd-dispatcher 2.2 behoben. Über die Veröffentlichung von Updates durch Distributionen (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux) liegen noch keine Informationen vor.

Networkd-dispatcher wird in vielen Linux-Distributionen verwendet, einschließlich Ubuntu, die den Hintergrundprozess systemd-networkd zum Konfigurieren von Netzwerkparametern verwenden, und führt ähnliche Funktionen wie NetworkManager-dispatcher aus, d. h. ist damit beschäftigt, Skripte zu starten, wenn sich der Status einer Netzwerkverbindung ändert. Beispielsweise wird es zum Starten eines VPN verwendet, nachdem die Hauptnetzwerkverbindung hergestellt wurde.

Der mit networkd-dispatcher verbundene Hintergrundprozess läuft als Root und empfängt Ereignissignale über den D-Bus. Informationen über Ereignisse im Zusammenhang mit Änderungen im Status von Netzwerkverbindungen werden vom Systemd-Networkd-Dienst gesendet. Das Problem besteht darin, dass unprivilegierte Benutzer ein nicht vorhandenes Statusereignis generieren und die Ausführung ihres Skripts als Root auslösen können.

Systemd-networkd ist darauf ausgelegt, nur System-Handler-Skripte auszuführen, die sich im Verzeichnis /etc/networkd-dispatcher befinden und nicht für den Benutzeraustausch zugänglich sind. Aufgrund einer Sicherheitslücke (CVE-2022-29799) im Dateipfad-Verarbeitungscode gab es jedoch eine Möglichkeit eines außerhalb der Grenzen liegenden Basisverzeichnisses und des Startens beliebiger Skripte. Insbesondere bei der Bildung des Dateipfads zum Skript wurden die über D-Bus übertragenen OperationalState- und AdministrativeState-Werte verwendet, bei denen Sonderzeichen nicht gelöscht wurden. Der Angreifer könnte seinen eigenen Status generieren, dessen Name die Zeichen „../“ enthielt, und den Aufruf von networkd-dispatcher in ein anderes Verzeichnis umleiten.

Die zweite Schwachstelle (CVE-2022-29800) hängt mit einer Race-Bedingung zusammen – zwischen der Überprüfung der Skriptparameter (die zu Root gehören) und deren Ausführung verging ein kurzer Zeitraum, der ausreichte, um die Datei zu ersetzen und die Prüfung zu umgehen, ob die Das Skript gehört dem Root-Benutzer. Darüber hinaus prüfte networkd-dispatcher nicht auf symbolische Links, auch nicht beim Ausführen von Skripten über den Aufruf subprocess.Popen, was die Organisation des Angriffs erheblich vereinfachte.

Operationstechnik:

  • Es werden ein Verzeichnis „/tmp/nimbuspwn“ und ein symbolischer Link „/tmp/nimbuspwn/poc.d“ erstellt, der auf das Verzeichnis „/sbin“ verweist, das verwendet wird, um nach ausführbaren Dateien zu suchen, die Root gehören.
  • Für ausführbare Dateien aus „/sbin“ werden Dateien mit demselben Namen im Verzeichnis „/tmp/nimbuspwn“ erstellt, beispielsweise für die Datei „/sbin/vgs“ eine ausführbare Datei „/tmp/nimbuspwn/vgs“. erstellt, im Besitz eines unprivilegierten Benutzers, in dem der Code abgelegt wird, den der Angreifer ausführen möchte.
  • Über D-Bus wird ein Signal an den networkd-dispatcher-Prozess gesendet, das den Wert „../../../tmp/nimbuspwn/poc“ im OperationalState angibt. Um ein Signal im Namespace „org.freedesktop.network1“ zu senden, wurde die Möglichkeit genutzt, seine Handler mit systemd-networkd zu verbinden, beispielsweise durch Manipulationen mit gpgv oder epmd, oder Sie können die Tatsache nutzen, dass systemd-networkd wird nicht standardmäßig ausgeführt (z. B. unter Linux Mint).
  • Nach dem Empfang des Signals erstellt Networkd-dispatcher eine Liste ausführbarer Dateien, die dem Root-Benutzer gehören und im Verzeichnis „/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d“ verfügbar sind. was tatsächlich auf „/sbin“ verweist.
  • In dem Moment, in dem die Liste der Dateien empfangen wird, das Skript jedoch noch nicht gestartet wurde, wird der symbolische Link von „/tmp/nimbuspwn/poc.d“ nach „/tmp/nimbuspwn“ umgeleitet und networkd-dispatcher startet das Skript, das vom Angreifer mit Root-Rechten gehostet wird.

Sicherheitslücken im Networkd-Dispatcher, die Root-Zugriff ermöglichen


Source: opennet.ru

Kommentar hinzufügen