Sicherheitsanfälligkeiten in 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 networkd-dispatcher 2.2 behoben. Informationen über die Veröffentlichung von Updates durch die Distributionen liegen derzeit nicht vor (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux).

Networkd-dispatcher wird in vielen Linux-Distributionen verwendet, einschließlich Ubuntu, das für die Netzwerkkonfiguration den Hintergrundprozess systemd-networkd nutzt, und erfüllt Funktionen, die dem NetworkManager-dispatcher ähnlich sind, d.h. er führt Skripte beim Ändern des Netzwerkverbindungsstatus aus, zum Beispiel wird er zur Ausführung verwendet VPN nach der Einrichtung der primären Netzwerkverbindung.

Der mit networkd-dispatcher verbundene Hintergrundprozess läuft mit Root-Rechten und empfängt Signale über Ereignisse über den D-Bus. Informationen über Ereignisse, die mit dem Statuswechsel von Netzwerkverbindungen zusammenhängen, werden von dem Dienst systemd-networkd gesendet. Das Problem besteht darin, dass nicht privilegierte Benutzer ein Ereignis über einen nicht vorhandenen Status erzeugen und die Ausführung ihres Skripts initiieren können, das dann mit Root-Rechten ausgeführt wird.

Systemd-networkd ist so konzipiert, dass es nur systemweite Handler-Skripte ausführt, die im Verzeichnis /etc/networkd-dispatcher gespeichert sind und vom Benutzer nicht ersetzt werden können. Aufgrund einer Schwachstelle (CVE-2022-29799) in der Verarbeitung des Dateipfades bestand jedoch die Möglichkeit, über das Basisverzeichnis hinauszugehen und beliebige Skripte auszuführen. Insbesondere wurden bei der Bildung des Dateipfades zum Skript die über D-Bus übermittelten Werte OperationalState und AdministrativeState verwendet, bei denen keine Bereinigung von Sonderzeichen durchgeführt wurde. Ein Angreifer konnte einen eigenen Zustand generieren, dessen Name die Zeichen „..“ enthielt, und die Anfrage an networkd-dispatcher in ein anderes Verzeichnis umleiten.

Die zweite Schwachstelle (CVE-2022-29800) ist mit einem Zeitproblem verbunden — zwischen der Überprüfung der Skripteigenschaften (Zugehörigkeit zu root) und ihrer Ausführung gab es ein kleines Zeitfenster, das ausreichte, um die Datei zu ersetzen und die Überprüfung der Skripteigenschaften zu umgehen. Darüber hinaus fehlte im networkd-dispatcher eine Überprüfung auf symbolische Links, auch beim Ausführen von Skripten über den Aufruf subprocess.Popen, was die Durchführung eines Angriffs erheblich vereinfachte.

Betriebstechnik:

  • Es werden ein Katalog „/tmp/nimbuspwn“ und ein symbolischer Link „/tmp/nimbuspwn/poc.d“ erstellt, der auf den Katalog „/sbin“ verweist, der zur Überprüfung auf ausführbare Dateien, die dem root-Benutzer gehören, verwendet wird.
  • Für ausführbare Dateien aus „/sbin“ werden Dateien mit ähnlichem Namen im Katalog „/tmp/nimbuspwn“ erstellt. Zum Beispiel wird für die Datei „/sbin/vgs“ die 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 networkd-dispatcher ein Signal mit dem OperationalState-Wert „../../../../tmp/nimbuspwn/poc“ gesendet. Um das Signal im Namensraum „org.freedesktop.network1“ zu senden, wurde die Möglichkeit genutzt, eigene Handler an systemd-networkd anzuschließen, beispielsweise durch Manipulationen mit gpgv oder epmd, oder man kann ausnutzen, dass systemd-networkd standardmäßig nicht läuft (z.B. in Linux Mint).
  • Nach dem Erhalt des Signals erstellt networkd-dispatcher eine Liste von ausführbaren Dateien, die dem Benutzer root gehören und im Katalog „/etc/networkd-dispatcher/../../../../tmp/nimbuspwn/poc.d“ verfügbar sind, der tatsächlich auf „/sbin“ verweist.
  • Im Moment, in dem die Liste der Dateien erhalten wird, aber das Skript noch nicht ausgeführt wurde, wird der symbolische Link von „/tmp/nimbuspwn/poc.d“ auf „/tmp/nimbuspwn“ umgeleitet, und networkd-dispatcher wird das vom Angreifer platzierte Skript mit root-Rechten ausführen.

Sicherheitsanfälligkeiten in networkd-dispatcher, die root-Rechte ermöglichen


Quelle: opennet.ru
60GB SSD 8Gb DDR4