Sicherheitslücke, die es Ihnen ermöglicht, Escape-Sequenzen in den Terminals anderer Leute zu ersetzen

Im Wall-Utility, das im Paket util-linux enthalten ist und zum Versenden von Nachrichten an Terminals gedacht ist, wurde eine Schwachstelle (CVE-2024-28085) identifiziert, die einen Angriff auf die Terminals anderer Benutzer durch Manipulation von Escape-Sequenzen ermöglicht. Das Problem wird dadurch verursacht, dass das Wall-Dienstprogramm Escape-Sequenzen im Eingabestream blockiert, dies jedoch nicht bei Befehlszeilenargumenten tut, sodass ein Angreifer Escape-Sequenzen auf den Terminals anderer Benutzer umgehen kann.

Wenn Sie beispielsweise „wall $(printf „\033[33mHI“)“ ausführen, können Sie „HI“ in Gelb drucken. Durch die Verwendung von Escape-Sequenzen, mit denen Sie den Zeiger bewegen, Inhalte auf dem Bildschirm löschen und ersetzen können, können Sie simulieren, dass die Eingabeaufforderung für das Sudo-Passwort im Terminal eines anderen Benutzers angezeigt wird. Wenn der Benutzer den Trick nicht bemerkt und sein Passwort eingibt, wird das Passwort im Eingabeverlauf als nicht vorhandener Befehl angezeigt (tatsächlich gibt der Benutzer sein Passwort in der Befehlszeile anstelle eines Befehls ein). „\033[3A“ // den Cursor um 3 Zeilen nach oben bewegen „\033[K“ // die vorherige Ausgabe löschen „[sudo] Passwort für a_user:“ // eine Dummy-Sudo-Anfrage anzeigen „\033[?25l“ / / Hintergrundfarbe festlegen, um die Eingabe „\033[38;2;48;10;36m“ auszublenden“

Wenn eine Warnung ausgegeben wird, dass der eingegebene Befehl nicht gefunden wurde, führen viele Distributionen den /usr/lib/command-not-found-Handler aus, der versucht, das Paket zu identifizieren, das den fehlenden Befehl enthält, und einen Hinweis darauf zu geben, ob es installiert werden kann . Das Problem besteht darin, dass beim Starten des Handlers für nicht gefundene Befehle ein nicht vorhandener Befehl als Befehlszeilenparameter an ihn übergeben wird, der beim Anzeigen von Prozessen auf dem System sichtbar ist (z. B. wenn versucht wird, das deinstallierte Dienstprogramm auszuführen). „xsnow“, „/usr“ wird in der Liste der Prozesse /lib/command-not-found - xsnow“ sichtbar sein). Dementsprechend kann der Angreifer laufende Prozesse überwachen (z. B. indem er das Auftreten von „/proc/$pid/cmdline“ für die vorhergesagte PID-Nummer analysiert) und das vom Opfer in der Befehlszeile eingegebene Passwort ermitteln.

Damit der Benutzer als Reaktion auf eine fiktive Sudo-Eingabeaufforderung ein Passwort eingeben kann, wurde ein Trick vorgeschlagen, dessen Kern darin besteht, den tatsächlichen Start des Sudo-Dienstprogramms in der Liste der Prozesse zu verfolgen, auf seinen Abschluss zu warten und unmittelbar danach einen Angriff durch die „Mauer“ durchführen. Durch die Manipulation von Escape-Sequenzen kann ein Angreifer die Nachricht nach der tatsächlichen Ausführung von sudo durch eine gefälschte Aufforderung zur erneuten Passworteingabe ersetzen. Das Opfer könnte denken, dass ihm bei der Eingabe des Passworts ein Fehler unterlaufen ist, und gibt das Passwort ein zweites Mal ein, wodurch das Passwort in den Argumenten des „command-not-found“-Handlers preisgegeben wird.

Für einen erfolgreichen Angriff muss der „mesg“-Modus auf „y“ gesetzt werden, was in Ubuntu, Debian und CentOS/RHEL standardmäßig eingestellt ist. Der Angriff wurde in Ubuntu 22.04 in seiner Standardkonfiguration mit Gnome-Terminal demonstriert. Unter Debian ist der Angriff schwierig, da der „command-not-found“-Handler in der Distribution nicht standardmäßig aktiviert ist, und unter CentOS/RHEL funktioniert der Angriff nicht, da das Wall-Dienstprogramm ohne das Setgid-Flag und installiert wird hat keinen Zugriff auf die Terminals anderer Personen. Bei Verwendung von Windows-Terminal kann der Angriff so geändert werden, dass der Inhalt der Zwischenablage geändert wird.

Die Schwachstelle besteht seit 2013 im Paket util-linux, nachdem mit der Version 2.24 die Möglichkeit hinzugefügt wurde, eine Wall-Nachricht in der Befehlszeile anzugeben, aber vergessen wurde, die Escape-Sequenzen zu bereinigen. Ein Fix für die Schwachstelle ist in der gestrigen Version von util-linux 2.40 enthalten. Es ist bemerkenswert, dass beim Versuch, die Schwachstelle in der Version util-linux 2.39 zu beheben, eine weitere ähnliche Schwachstelle entdeckt wurde, die die Ersetzung von Steuerzeichen durch Manipulation von Gebietsschemas ermöglicht.

Source: opennet.ru

Kommentar hinzufügen