Sicherheitslücke in der Enlightenment-Benutzerumgebung, die Root-Zugriff ermöglicht

In der Enlightenment-Benutzerumgebung wurde eine Schwachstelle (CVE-2022-37706) identifiziert, die es einem unprivilegierten lokalen Benutzer ermöglicht, Code mit Root-Rechten auszuführen. Die Sicherheitslücke wurde noch nicht behoben (0-Tage), aber es gibt bereits einen öffentlich zugänglichen Exploit, der in Ubuntu 22.04 getestet wurde.

Das Problem liegt in der ausführbaren Datei enlightenment_sys, die mit dem suid-Root-Flag ausgeliefert wird und bestimmte zulässige Befehle ausführt, z. B. das Mounten des Laufwerks mit dem Mount-Dienstprogramm über einen Aufruf von system(). Aufgrund der fehlerhaften Funktionsweise der Funktion, die die an den system()-Aufruf übergebene Zeichenfolge generiert, werden Anführungszeichen aus den Argumenten des gestarteten Befehls entfernt, die zum Ausführen Ihres eigenen Codes verwendet werden können. Wenn Sie beispielsweise mkdir -p /tmp/net mkdir -p "/tmp/;/tmp/exploit" echo "/bin/sh" > /tmp/exploit chmod a+x /tmp/exploit enlightenment_sys /bin/mount ausführen - o noexec,nosuid,utf8,nodev,iocharset=utf8,utf8=0,utf8=1,uid=$(id -u), „/dev/../tmp/;/tmp/exploit“ /tmp// / netto

Aufgrund der Entfernung doppelter Anführungszeichen wird anstelle des angegebenen Befehls '/bin/mount ... "/dev/../tmp/;/tmp/exploit" /tmp///net' eine Zeichenfolge ohne doppelte Anführungszeichen angezeigt an die system()-Funktion ' /bin/mount … /dev/../tmp/;/tmp/exploit /tmp///net' übergeben, die den Befehl '/tmp/exploit /tmp///net' auslöst ' soll separat ausgeführt werden, anstatt als Teil des Pfads zum Gerät verarbeitet zu werden. Die Zeilen „/dev/../tmp/“ und „/tmp///net“ werden ausgewählt, um die Argumentprüfung für den Mount-Befehl in enlightenment_sys zu umgehen (das Mount-Gerät muss mit /dev/ beginnen und auf eine vorhandene Datei verweisen, und die drei „/“-Zeichen am Einhängepunkt werden angegeben, um die erforderliche Pfadgröße zu erreichen).

Source: opennet.ru

Kommentar hinzufügen