CVE-2026-118905 in nvm
Zusammenfassung
von VulDB • 29.10.2026
Node Version Manager (nvm) ist eine POSIX-konforme Shell-Funktion zur Verwaltung mehrerer Node.js-Versionen. In den Versionen 0.31.2 bis 0.40.5 filtert `nvm_ls` installierte Versionen mit einem sed-Programm, das das angeforderte Versionsmuster in einer `\#...#`-Adresse einbettet und dabei `.` (und ab Version 0.40.4 auch `#`) maskiert, jedoch keinen Backslash. Eine Zeichenkette für die Version, die ein `#` (oder `\#`) enthält, schließt daher die Adresse vorzeitig, und der Rest wird als sed-Befehle interpretiert: Bei GNU sed führt der Befehl `e` einen Shell-Befehl unter dem Benutzer aus; bei BSD sed schreiben und lesen die Befehle `w` und `r` Dateien. Dies ist erreichbar, wenn ein Angreifer beeinflusstes Versionsmuster an `nvm use`, `nvm which`, `nvm ls`, `nvm version`, `nvm run` oder `nvm exec` übergeben wird, bzw. an `nvm-exec` via `NODE_VERSION`, und mindestens eine Version installiert ist. Der eigene `.nvmrc`-Parser von nvm entfernt Kommentare, daher ist ein einfaches `nvm use` nicht betroffen; jedoch lesen die in der README dokumentierten Auto-Switch-Hooks bash `cdnvm` und zsh `load-nvmrc` die Datei `.nvmrc` unverändert aus und übergeben sie an `nvm ls` und `nvm version`, sodass ein Benutzer mit einem dieser Hooks installiert den Befehl des Angreifers nur durch das Wechseln in ein Verzeichnis unter einer bösartigen `.nvmrc`-Datei ausführt; Skripte, die `nvm use "$(cat .nvmrc)"` ausführen, sind auf dieselbe Weise betroffen. Version 0.40.6 leitet jedes Versionsmuster, das ein `#` oder einen Zeilenumbruch enthält, zunächst durch den `.nvmrc`-Inhaltsparser, sodass kein `#` das sed-Programm erreicht.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.