CVE-2026-118905
WysokieCVSS 7.0Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 3 - wyżej niż 3% wszystkich znanych CVE
Streszczenie
W nvm w wersjach 0.31.2 do 0.40.5 funkcja nvm_ls filtruje zainstalowane wersje programem sed, który osadza wzorzec wersji w adresie \#...#, eskalując kropkę i #, ale nie backslash. Ciąg wersji zawierający # zamyka adres przedwcześnie, a reszta jest interpretowana jako polecenia sed, co w GNU sed pozwala na wykonanie polecenia powłoki, a w BSD sed na zapis i odczyt plików.
Ocena ryzyka
Atakujący może doprowadzić do wykonania dowolnych poleceń powłoki lub operacji na plikach w kontekście użytkownika, np. przez złośliwy plik .nvmrc w repozytorium.
Rekomendacja
Zaktualizuj nvm do wersji 0.40.6 lub nowszej, która przepuszcza wzorce zawierające # lub znak nowej linii przez parser zawartości .nvmrc.
Inne podatności w nvm
Zobacz wszystkie- CVE-2026-94185Średnie
nvm przed wersją 0.40.8 podatny jest na path traversal w nvm_alias(), gdzie nazwa wersji lub aliasu traktowana jest jako ścieżka pod $NVM_DIR/alias bez sprawdzenia zawartości. Nazwa zawierająca '..' pozwala odczytać pierwszy niekomentarzowy wiersz dowolnego pliku czytelnego dla użytkownika, np. przez .nvmrc w niezaufanym repozytorium. Brak wpływu na integralność i dostępność, brak wykonania kodu.
- CVE-2026-15921Niskie
Podatność w Node Version Manager (nvm) w wersjach 0.32.1 do 0.40.5 pozwala na zapis pliku aliasu poza katalogiem $NVM_DIR/alias. Złośliwe lustro może zwrócić nazwę LTS zawierającą sekwencję typu "../../../.bashrc", co prowadzi do nadpisania plików startowych powłoki i potencjalnego wykonania kodu.
- CVE-2026-10796Wysokie
nvm (Node Version Manager) do wersji 0.40.4 wykonuje dowolne polecenia z ciągów wersji dostarczonych przez skonfigurowane lustro Node.js/io.js. Atakujący kontrolujący lustro lub przeprowadzający atak man-in-the-middle na niezabezpieczone połączenie może uruchomić dowolne polecenia w systemie ofiary.
Oryginalny opis (angielski, źródło NVD)
Node Version Manager (nvm) is a POSIX-compliant shell function for managing multiple node.js versions. In versions 0.31.2 through 0.40.5, `nvm_ls` filters installed versions with a sed program that embeds the requested version pattern in a `\#...#` address, escaping `.` (and, since 0.40.4, `#`) but not backslash. A version string containing `#` (or `\#`) therefore closes the address early, and the rest of it is parsed as sed commands: with GNU sed, the `e` command runs a shell command as the user; with BSD sed, the `w` and `r` commands write and read files. This is reachable whenever an attacker-influenced version string is passed to `nvm use`, `nvm which`, `nvm ls`, `nvm version`, `nvm run`, or `nvm exec`, or to `nvm-exec` via `NODE_VERSION`, and at least one version is installed. nvm's own `.nvmrc` parser strips comments, so a bare `nvm use` is not affected; however, the bash `cdnvm` and zsh `load-nvmrc` auto-switch hooks documented in the README read `.nvmrc` as-is and pass it to `nvm ls` and `nvm version`, so a user with one of those hooks installed runs the attacker's command just by changing into a directory under a malicious `.nvmrc`; scripts that run `nvm use "$(cat .nvmrc)"` are affected the same way. Version 0.40.6 passes any version pattern containing `#` or a newline through the `.nvmrc` content parser first, so no `#` reaches the sed program.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

