CVE-2026-121746
ŚrednieCVSS 5.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 6 - wyżej niż 6% wszystkich znanych CVE
Streszczenie
W nvm w wersjach 0.40.0 do 0.40.8 polecenia nvm use --save i nvm install --save (lub -w) zapisywały wersję do $PWD/.nvmrc za pomocą tee, który podąża za dowiązaniem symbolicznym. Repozytorium z .nvmrc jako dowiązaniem do ścieżki poza sobą powodowało obcięcie dowolnego pliku zapisywalnego przez użytkownika (np. pliku startowego powłoki lub ~/.ssh/authorized_keys) i zastąpienie jego zawartości ciągiem wersji.
Ocena ryzyka
Może powodować utratę danych i uszkodzenie plików konfiguracyjnych, w tym potencjalne zablokowanie dostępu SSH.
Rekomendacja
Zaktualizuj nvm do wersji 0.41.0 lub nowszej, która odmawia zapisu, gdy .nvmrc jest dowiązaniem symbolicznym.
Inne podatności w nvm
Zobacz wszystkie- CVE-2026-121747Średnie
W nvm w wersjach 0.2.0 do 0.40.8 nie sprawdzano, czy plik .nvmrc jest dowiązaniem symbolicznym. Repozytorium lub archiwum zawierające .nvmrc jako dowiązanie do innego pliku (np. ../../.npmrc lub /proc/self/environ) powodowało, że polecenia nvm use, install, which, exec, run lub nvm-exec odczytywały ten plik i wypisywały jego zawartość w komunikacie o błędzie, co atakujący mógł odczytać np. w logu CI.
- CVE-2026-118905Wysokie
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.
- 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.40.0 through 0.40.8, `nvm use --save` and `nvm install --save` (or `-w`) write the resolved version to `$PWD/.nvmrc` with `tee`, which follows a symbolic link. A repository that commits `.nvmrc` as a symlink to a path outside itself (git recreates the link on clone) therefore makes `--save` truncate any file the user can write, such as a shell startup file or `~/.ssh/authorized_keys`, and replace its contents with the version string, or create the target of a dangling link; the link itself is left unchanged, so `git status` stays clean. The attacker does not control the content written, so this is data loss, not code execution. Version 0.41.0 refuses, with a warning, to write when `.nvmrc` in the current directory is a symlink, dangling or not, rather than writing through it or replacing it.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

