Nguyen wies Claude an, in Vim eine Zero-Day-Schwachstelle für Remote Code Execution zu finden, die sich durch das Öffnen einer Datei auslösen lässt. Der Assistent untersuchte den Vim-Quellcode und stieß auf fehlende Sicherheitsprüfungen sowie Probleme bei der Verarbeitung sogenannter Modelines. Eine Modeline ist ein Textabschnitt am Anfang einer Datei, der Vim Anweisungen zur Behandlung dieser Datei gibt. Über sie ließ sich in einer Datei eingebetteter Code beim Öffnen ausführen.
Selbst wenn der Code eigentlich in einer Sandbox laufen sollte, erlaubte ein weiteres Problem das Umgehen dieser Einschränkung, sodass Befehle im Kontext des aktuellen Benutzers ausgeführt werden konnten. Die Schwachstelle hat keine CVE-Kennung erhalten und betrifft alle Versionen bis einschließlich Vim 9.2.0271.
Nguyen meldete das Problem den Vim-Maintainern, die umgehend einen Patch in Version 9.2.0272 veröffentlichten. Laut dem Sicherheitshinweis des Vim-Teams genügt es, dass ein Opfer eine speziell präparierte Datei öffnet. “Ein Angreifer, der einer Zielperson eine präparierte Datei zustellen kann, erreicht die Ausführung beliebiger Befehle mit den Rechten des Benutzers, der Vim ausführt”, heißt es darin.
Bei GNU Emacs besteht die Schwachstelle weiterhin, da die Entwickler die Zuständigkeit bei Git sehen. Das Problem entsteht durch die Versionskontroll-Integration vc-git: Beim Öffnen einer Datei werden über vc-refresh-state Git-Operationen ausgelöst. Git liest dabei die Datei .git/config und führt ein benutzerdefiniertes core.fsmonitor-Programm aus, das zur Ausführung beliebiger Befehle missbraucht werden kann.
Das vom Forscher entworfene Angriffsszenario sieht ein Archiv vor – etwa als E-Mail-Anhang oder über ein geteiltes Laufwerk –, das ein verstecktes .git/-Verzeichnis mit einer Konfigurationsdatei enthält, die auf ein ausführbares Skript verweist. Entpackt das Opfer das Archiv und öffnet die Textdatei, wird der Schadcode in der Standardkonfiguration von GNU Emacs ohne sichtbare Hinweise ausgeführt.
Die Emacs-Maintainer betrachten dies als Problem von Git und nicht des Editors, da nichts direkt in Emacs ausgeführt werde: Der Editor sei lediglich der Auslöser für die gefährliche Aktion, die Git ausführt – das Lesen der vom Angreifer kontrollierten Konfiguration und das Starten eines daraus benannten Programms. Auch wenn dieses Argument technisch zutrifft, weil in Emacs selbst nichts ausgeführt wird, bleibt das Risiko bestehen: Der Editor startet Git automatisch auf nicht vertrauenswürdigen Verzeichnissen, ohne gefährliche Optionen zu neutralisieren, ohne Zustimmung des Nutzers und ohne Sandbox-Schutz.
Nguyen schlug vor, dass GNU Emacs seine Git-Aufrufe so anpassen könnte, dass core.fsmonitor explizit blockiert wird, damit gefährliche Skripte beim Öffnen einer Datei nicht automatisch ausgeführt werden. Da die Lücke in der aktuellen Version von GNU Emacs ungepatcht bleibt, wird Nutzern geraten, beim Öffnen von Dateien aus unbekannten Quellen oder aus dem Internet vorsichtig zu sein.
