Eine PolKit-Schwachstelle ermöglichte Root-Zugriff auf die meisten Linux-Distributionen

Vor kurzem Qualys veröffentlichte die Nachricht, dass hat eine Schwachstelle identifiziert (CVE-2021-4034) en Systemkomponente Polkit (früher PolicyKit), das in Distributionen verwendet wird, um nicht privilegierten Benutzern das Ausführen von Aktionen zu ermöglichen, die erhöhte Zugriffsrechte erfordern.

Verletzlichkeit ermöglicht einem nicht privilegierten lokalen Benutzer, seine Rechte auf den Root-Benutzer zu erhöhen und volle Kontrolle über das System erlangen. Das Problem trägt den Codenamen PwnKit und zeichnet sich durch einen funktionierenden Exploit aus, der auf den meisten Linux-Distributionen mit den Standardeinstellungen ausgeführt wird.

Es wird das erwähnt Das Problem besteht im Dienstprogramm pkexec, das in PolKit enthalten ist, das mit dem SUID-Root-Flag geliefert wird und dazu dient, Befehle mit den Rechten anderer Benutzer gemäß den PolKit-Regeln auszuführen.

Wegen falscher Argumentationsführung von der an pkexec übergebenen Befehlszeile a Ein nicht privilegierter Benutzer könnte die Authentifizierung umgehen und Ihren Code als root ausführen lassen, unabhängig von den festgelegten Zugriffsregeln. Für einen Angriff reicht es, egal welche Einstellungen und Einschränkungen in PolKit gesetzt sind, dass das SUID-Root-Attribut für die ausführbare Datei mit dem Dienstprogramm pkexec gesetzt wird.

Pkexec überprüft nicht die Korrektheit der Anzahl der beim Starten eines Prozesses übergebenen Befehlszeilenargumente (argc). Die pkexec-Entwickler gingen davon aus, dass der erste Eintrag im argv-Array immer den Namen des Prozesses (pkexec) enthält und der zweite Eintrag entweder NULL oder der Name des durch pkexec ausgeführten Befehls ist.

Da die Anzahl der Argumente nicht mit dem tatsächlichen Inhalt des Arrays verglichen wurde und angenommen wurde, dass sie immer größer als 1 ist, behandelte pkexec NULL als erstes Argument ( process name) und das nächste aus dem Pufferspeicher als nächster Array-Inhalt.

Das Problem ist, dass nach dem argv-Array im Speicher das envp-Array ist, das die Umgebungsvariablen enthält. Bei einem leeren argv-Array extrahiert pkexec also die Daten über den Befehl, der mit erhöhten Rechten ausgeführt wird, aus dem ersten Element des Arrays mit Umgebungsvariablen (argv[1] wurde identisch mit envp[0]), deren Inhalt gesteuert werden kann der Angreifer.

Nach Erhalt des Wertes argv[1] versucht pkexec anhand der Dateipfade in PATH den vollständigen Pfad zur ausführbaren Datei zu ermitteln und schreibt den Zeiger auf den String mit dem vollständigen Pfad zurück auf argv[1], was zum Überschreiben des Wertes führt auch der ersten Umgebungsvariable, da argv[1] identisch mit envp[0] ist. Durch Manipulation des Namens der ersten Umgebungsvariablen kann ein Angreifer eine andere Umgebungsvariable in pkexec ersetzen, beispielsweise die Umgebungsvariable "LD_PRELOAD", die in Suid-Programmen nicht zulässig ist, und den Prozess veranlassen, seine gemeinsam genutzte Bibliothek in den Prozess zu laden .

Der funktionierende Exploit verwendet die GCONV_PATH-Variablensubstitution, die verwendet wird, um den Pfad zur Symbol-Transcoding-Bibliothek zu bestimmen, die dynamisch geladen wird, wenn die Funktion g_printerr() aufgerufen wird, die iconv_open() in ihrem Code verwendet.

Durch die Neudefinition des Pfades in GCONV_PATH kann der Angreifer es schaffen, nicht die normale iconv-Bibliothek zu laden, sondern seine eigene Bibliothek, deren Treiber während der Fehlermeldung in dem Stadium ausgeführt werden, in dem pkexec noch als root und vor der Überprüfung des Starts ausgeführt wird Berechtigungen.

Es wird beobachtet, dass Obwohl das Problem auf eine Speicherbeschädigung zurückzuführen ist, kann es zuverlässig und wiederholbar ausgenutzt werden, unabhängig von der verwendeten Hardwarearchitektur.

Der Exploit vorbereitet erfolgreich getestet auf Ubuntu, Debian, Fedora und CentOS, kann aber auch auf anderen Distributionen verwendet werden. Der ursprüngliche Exploit ist noch nicht öffentlich verfügbar, was darauf hindeutet, dass er trivial ist und von anderen Forschern leicht nachgebaut werden kann. Daher ist es wichtig, das Hotfix-Update so schnell wie möglich auf Mehrbenutzersystemen zu installieren.

Polkit ist auch für BSD- und Solaris-Systeme verfügbar, wurde jedoch nicht auf Exploit untersucht. Bekannt ist, dass der Angriff nicht auf OpenBSD durchgeführt werden kann, da der OpenBSD-Kernel es nicht erlaubt, beim Aufruf von execve() einen Null-Argc-Wert zu übergeben.

Das Problem besteht seit Mai 2009, als der Befehl pkexec hinzugefügt wurde. Der Fix für die Schwachstelle in PolKit ist noch als Patch verfügbar (die Fix-Version wurde nicht gebildet), aber da die Entwickler der Distribution vorab auf das Problem hingewiesen wurden, haben die meisten Distributionen zeitgleich ein Update veröffentlicht von Schwachstelleninformationen.

Schließlich wenn Sie mehr darüber wissen möchtenkönnen Sie die Details einchecken den folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.