Sicherheitslücke in Vim, die zur Codeausführung führt, wenn eine schädliche Datei geöffnet wird

In Texteditoren Vim и neovim gefunden Verwundbarkeit (CVE-2019-12735), die die Ausführung beliebigen Codes ermöglicht, wenn eine speziell gestaltete Datei geöffnet wird. Das Problem tritt auf, wenn der Standard-Modeline-Modus („:set modeline“) aktiv ist, der es Ihnen ermöglicht, Bearbeitungsoptionen in der verarbeiteten Datei zu definieren. In Releases behobene Sicherheitslücke
Vim 8.1.1365 и Neovim 0.3.6.

Über Modeline kann nur eine begrenzte Anzahl an Optionen eingestellt werden. Wenn ein Ausdruck als Optionswert angegeben wird, wird er im Sandbox-Modus ausgeführt, der nur die Verwendung der einfachsten sicheren Operationen ermöglicht. Gleichzeitig gehört der Befehl „:source“ zu den gültigen Befehlen, bei denen Sie den Modifikator „!“ verwenden können. um beliebige Befehle aus der angegebenen Datei auszuführen. Um den Code auszuführen, reicht es daher aus, eine Konstruktion wie „setfoldexpr=execute('\:source! some_file'):“ in der Modeline-Zeile anzugeben. Neovim lässt den Aufruf „execute“ nicht zu, Sie können jedoch stattdessen „assert_fails“ verwenden.

Um beispielsweise den Befehl „uname -a“ auszuführen, öffnen Sie einfach eine Datei in Vim oder Neovim, deren erste oder letzte Zeile lautet:

:!uname -a||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="

Die Quelle! %“ liest die Befehle aus der aktuellen Datei und führt entsprechend „:!uname -a“ aus. Das Dienstprogramm cat kann Escape-Sequenzen verwenden, um eine bestimmte Zeichenfolge aus der Ausgabe auszublenden. Zum Beispiel hier Prototyp ausnutzen Beim Öffnen einer Datei in vim wird eine Netzwerkverbindung mit Shell-Zugriff auf das System des Opfers hergestellt, diese Datei erregt jedoch keinen Verdacht, wenn sie mit dem Dienstprogramm cat auf dem Terminal ausgegeben wird.

Sie können mit dem Befehl „:set modeline?“ überprüfen, ob der Modeline-Modus aktiv ist. Um es zu deaktivieren, können Sie die Zeile „set nomodeline“ zu vimrc hinzufügen. In Distributionen ist das Problem behoben RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Die Schwachstelle bleibt ungepatcht Debian (In Debian ist Modeline standardmäßig deaktiviert, sodass sich die Sicherheitslücke im Standardzustand nicht manifestiert.)

Source: opennet.ru

Kommentar hinzufügen