CVE-2026-50014
ŚrednieCVSS 6.4Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 7 - wyżej niż 7% wszystkich znanych CVE
Streszczenie
Podatność w menedżerze pakietów pnpm przed wersjami 10.34.0 i 11.4.0 umożliwia atakującemu wstrzyknięcie opcji Gita do polecenia git fetch poprzez złośliwy plik lockfile. Brak walidacji wartości commit w lockfile pozwala na podstawienie opcji --upload-pack, co dla transportów SSH i lokalnych może prowadzić do wykonania dowolnego polecenia.
Ocena ryzyka
Organizacja ryzykuje zdalne wykonanie kodu (RCE) podczas instalacji zależności git, jeśli atakujący dostarczy złośliwy plik lockfile. Atak jest szczególnie niebezpieczny w środowiskach korzystających z SSH lub lokalnych repozytoriów git.
Rekomendacja
Należy natychmiast zaktualizować pnpm do wersji 10.34.0 lub 11.4.0. W międzyczasie zaleca się weryfikację zaufania do plików lockfile oraz ograniczenie używania zależności git z nieznanych źródeł.
Inne podatności w pnpm
Zobacz wszystkie- CVE-2024-53866Krytyczne
Menadżer pakietów pnpm przed wersją 9.15.0 niewłaściwie obsługuje nadpisania i globalną pamięć podręczną. Nadpisania z jednego workspace'u przenikają do metadanych npm zapisanych w globalnej pamięci podręcznej, co może prowadzić do nieautoryzowanego wykonania kodu w innych workspace'ach.
- CVE-2026-101044Wysokie
pacquet, komponent menedżera pakietów Rust dostarczany w pakiecie npm pnpm w wersjach >=12.0.0-alpha.0 i <12.0.0-alpha.5, nie waliduje ścieżek aliasów/nazw zależności pochodzących z pliku lockfile przed użyciem ich w operacjach łączenia na poziomie systemu plików podczas instalacji. Gdy użytkownik instaluje projekt z lockfile dostarczonym przez atakującego przy użyciu --trust-lockfile lub zamrożonego lockfile, wpisy aliasów zawierające segmenty traversal ścieżki (np. '../../escaped-link') są używane podczas tworzenia linków zależności i pakietów, miejsc docelowych bin, wpisów hoisted i slotów virtual-store, co pozwala na tworzenie dowiązań symbolicznych i katalogów poza zamierzonym projektem i granicami node_modules. Wersja 12.0.0-alpha.5 waliduje nazwy zależności i każdą ścieżkę slotu virtual-store za pomocą wspólnego pomocnika safe-join containment przed materializacją systemu plików, odrzucając traversal, ścieżki bezwzględne, specyficzne dla platformy i zarezerwowane nazwy z błędem ERR_PNPM_INVALID_DEPENDENCY_NAME.
- CVE-2026-101043Wysokie
pnpm w wersjach 11.0.0 przed 11.11.0 oraz 10.7.0 przed 10.34.5 rozwija placeholdery zmiennych środowiskowych ${VAR} w ustawieniach httpProxy, httpsProxy i noProxy odczytanych z pliku pnpm-workspace.yaml projektu. Ponieważ manifest jest kontrolowany przez repozytorium, a klucze proxy zostały pominięte w zestawie kluczy docelowych żądań, które w przeciwnym razie tłumią rozwijanie placeholderów dla niezaufanych manifestów (jak już zrobiono dla registry, pnprServer, registries i namedRegistries), atakujący kontrolujący plik pnpm-workspace.yaml w repozytorium może spowodować, że ofiara, która sklonuje repozytorium i uruchomi polecenie pnpm (np. pnpm install), rozwinie sekrety środowiskowe, takie jak NPM_TOKEN lub GITHUB_TOKEN, do nazwy hosta proxy lub userinfo i skieruje ruch instalacyjny — oraz odpowiadające zapytania DNS — przez host kontrolowany przez atakującego. Eksfiltracja następuje podczas ładowania konfiguracji, przed wykonaniem jakiegokolwiek skryptu cyklu życia. Poprawione w pnpm 11.11.0 i 10.34.5.
- CVE-2026-82393Wysokie
pnpm przed wersjami 10.34.5 i 11.11.0 akceptuje ścieżkę traversal w nazwie pakietu w manifeście package.json tarballa. Podczas instalacji może to prowadzić do rozpakowania pakietu poza katalogiem node_modules i nadpisania dowolnych plików w systemie, nawet przy użyciu --ignore-scripts.
- CVE-2026-82392Wysokie
pnpm przed wersjami 10.34.5 i 11.11.0 parsuje nazwy pakietów z kluczy pnpm-lock.yaml bez walidacji, co może prowadzić do zapisu zawartości pakietów poza katalogiem node_modules podczas instalacji. Jeśli dozwolone są skrypty życia, może to umożliwić wykonanie kodu.
- CVE-2026-59196Wysokie
W menedżerze pakietów pnpm przed wersjami 10.34.4 i 11.7.0, spreparowany alias w pliku lockfile może zostać umieszczony bezpośrednio w katalogu node_modules. Aliasy typu traversal mogą opuścić ten katalog, a zastrzeżone aliasy, takie jak .bin lub .pnpm, mogą nadpisać strukturę należącą do pnpm.
- CVE-2026-59195Wysokie
pnpm przed wersjami 10.34.4 i 11.8.0 akceptuje nazwy pakietów z sekcji configDependencies pliku pnpm-lock.yaml i używa ich bezpośrednio do tworzenia dowiązań symbolicznych w katalogu node_modules/.pnpm-config. Złośliwe repozytorium może dostarczyć spreparowany plik blokady zawierający nazwę konfiguracji z sekwencją nawigacji (traversal), co prowadzi do stworzenia dowiązania poza zamierzonym katalogiem.
- CVE-2026-59194Wysokie
W pnpm przed wersjami 10.34.4 i 11.7.0, spreparowany wpis łatki mógł rozwiązywać ścieżki poza skonfigurowanym katalogiem poprawek, co pozwalało na usunięcie dowolnego dostępnego pliku za pomocą polecenia pnpm patch-remove.
- CVE-2026-55700Wysokie
Menedżer pakietów pnpm w wersjach od 11.3.0 do 11.5.3 zawiera podatność, w której polecenie `pnpm stage download` tworzyło lokalną nazwę pliku na podstawie nazwy pakietu i wersji pochodzących z rejestru. Złośliwy manifest mógł spowodować zapis pliku poza wybranym katalogiem docelowym, nadpisując inny dostępny plik.
- CVE-2026-55699Średnie
W pnpm przed wersjami 10.34.2 i 11.5.3 odkryto podatność polegającą na tym, że klucze obiektu bin w manifeście, takie jak "", "." i "..", przechodziły przez walidację nazw binarnych. Gdy złośliwy pakiet został zainstalowany globalnie, późniejsze operacje globalnego usuwania, aktualizacji lub dodawania zamienników mogły ponownie wyprowadzić te nazwy z zainstalowanego manifestu i przekazać je do funkcji removeBin z użyciem path.join(globalBinDir, binName). Dla "." celuje to w globalny katalog binarny, a dla ".." w jego katalog nadrzędny.
Oryginalny opis (angielski, źródło NVD)
pnpm is a package manager. Prior to 10.34.0 and 11.4.0, pnpm passes the lockfile-controlled git resolution.commit value to git fetch without a -- separator or commit-format validation. For git dependencies fetched through the shallow-fetch path, a malicious lockfile can replace the expected 40-character commit hash with a Git option such as --upload-pack=<command>. For SSH and local transports, --upload-pack can execute the supplied command. HTTPS transports ignore --upload-pack, so the practical attack surface is primarily SSH or local git dependencies. This vulnerability is fixed in 10.34.0 and 11.4.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

