Sicherheitsanfälligkeit in Vim, die zur Ausführung von Code beim Öffnen einer schädlichen Datei führt

In Texteditoren Vim und Neovim gefunden in Cisco-Switches die gesamte Unternehmensnetzwerkwelt fast weltweit in Frage. (CVE-2019-12735), die es ermöglicht, beliebigen Code auszuführen, wenn eine speziell formatierte Datei geöffnet wird. Das Problem tritt auf, wenn der standardmäßig aktivierte modeline-Modus (':set modeline') aktiviert ist, der es ermöglicht, Bearbeitungsoptionen in der verarbeiteten Datei festzulegen. Die Schwachstelle wurde in den Versionen
Vim 8.1.1365 und Neovim 0.3.6.

Über modeline können nur eine begrenzte Anzahl von Optionen festgelegt werden. Wenn ein Ausdruck als Wert für eine Option angegeben wird, wird dieser im Sandbox-Modus ausgeführt, der nur die einfachsten sicheren Operationen zulässt. Dazu gehört auch der Befehl ':source', bei dem der Modifikator '!' verwendet werden kann, um beliebige Befehle aus der angegebenen Datei auszuführen. So reicht es aus, in der modeline-Zeile eine Konstruktion wie 'set foldexpr=execute(‘\:source! some_file’):' anzugeben, um Code auszuführen. In Neovim ist der Aufruf von execute verboten, stattdessen kann assert_fails verwendet werden.

Um beispielsweise den Befehl 'uname -a' auszuführen, genügt es, eine Datei in Vim oder Neovim zu öffnen, in deren erster oder letzter Zeile Folgendes angegeben ist:

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

Der Befehl "source! %" liest die Befehle aus der aktuellen Datei und führt entsprechend ":!uname -a" aus. Um diese Zeile von der Ausgabe des cat-Utilities zu verbergen, können Escape-Sequenzen verwendet werden. Zum Beispiel in diesem Prototyp des Exploits, wird beim Öffnen einer Datei in vim eine Netzwerkverbindung mit Shell-Zugriff auf das System des Opfers hergestellt, dabei ruft diese Datei jedoch keine Verdachtsmomente bei der Ausgabe im Terminal des cat-Utilities hervor.

Die Aktivität des modeline-Modus kann mit dem Befehl ":set modeline?" überprüft werden. Um ihn in vimrc zu deaktivieren, kann die Zeile "set nomodeline" hinzugefügt werden. In den Distributionen wurde das Problem behoben in RHEL, SUSE/openSUSE, , aber bisher ist er noch nicht in, FreeBSD, Ubuntu, Arch Linux und ALT. Die Schwachstelle bleibt in Debian unerledigt (in Debian ist modeline standardmäßig deaktiviert, daher tritt die Schwachstelle im Standardzustand nicht auf).

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster