Patches für Vim und Neovim: "Modelines" erlaubten beliebige Codeausführung

Einige Versionen der Texteditoren Vim und Neovim könnten von Hackern als Einfallstor in Systeme missbraucht werden. Patches schieben dem einen Riegel vor.

In Pocket speichern vorlesen Druckansicht 43 Kommentare lesen
Update für Texteditor Vim: "Modelines" erlaubten beliebige Codeausführung
Lesezeit: 2 Min.

Im sogenannten "Modeline"-Feature des Texteditors Vim und des Vim-Forks Neovim steckte eine Sicherheitslücke, die die Ausführung beliebigen Codes ermöglichte. Über Angriffe in freier Wildbahn ist bislang nichts bekannt. Dennoch empfiehlt es sich, zügig auf gepatchte Versionen umzusteigen beziehungsweise Ausschau nach aktualisierten Linux-Packages zu halten.

Der Entdecker der Lücke mit dem Pseudonym Arminius hat bei GitHub eine detaillierte Beschreibung nebst zweier Proofs of Concept veröffentlicht. Sie zeigen, das die Lücke in verwundbaren Editor-Versionen mittels speziell präparierter Textdateien ausgenutzt werden kann, um beispielsweise Kommandozeilenbefehle auszuführen oder eine Reverse-Shell (also eine Shell, die vom Client aus eine Verbindung zum Angreifer aufbaut) zu starten.

Der Code, den Arminius für den Reverse-Shell-Angriff verwendet, besitzt zusätzlich die Fähigkeit, die präparierte Datei nach dem Öffnen (und der Codeausführung) komplett zu überschreiben, damit das Opfer den Angriff nicht bemerkt.

Modelines sind Zeilen, die Nutzer in Dateien beliebigen Formats einfügen können, um für das anschließende Öffnen mit Vim dokumentspezifische Optionen für die Darstellung (zum Beispiel Zeichenzahl pro Zeile, Einrück- und Tabulatorbreite) festzulegen. Eine Modeline, die 80 Zeichen pro Zeile vorgibt, sieht zum Beispiel so aus: /* vim: tw=80: */ . Normalerweise werden bestimmte Modelines im Kontext einer Editor-eigenen Sandbox ausgeführt. Die Sicherheitslücke besteht darin, dass die Verwendung einer bestimmten Syntax den Sandbox-Schutz aushebelt.

Laut Arminius' Beschreibung ist das Modeline-Feature standardmäßig aktiv. Anderen Quellen zufolge trifft dies aus Sicherheitsgründen allerdings auf macOS und auf mehrere Linux-Distributionen (z.B. Debian, Gentoo, Ubuntu), bei denen Vim vorinstalliert ist, nicht zu. Auskunft gibt demnach der Inhalt der Konfigurationsdatei _vimrc: Modelines sind aktiv, wenn die Zeile set modeline vorhanden ist und modelines ein Integerwert größer 0 zugewiesen ist.

Anfällig für die mit der Kennung CVE-2019-06-04 versehene Lücke sind laut Beschreibung Vim vor Version 8.1.1365 und Neovim vor Version 0.3.6. Die Patches sind folglich Bestandteil der Vim-Version 8.1.1365 und der Neovim-Version 0.3.6.

Arminius rät zusätzlich dazu, Modelines in _vimrc zu deaktivieren (set nomodeline) oder das Plugin securemodelines zu nutzen. (ovw)