CVE-2026-50573
ŚrednieCVSS 6.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 1 - wyżej niż 1% wszystkich znanych CVE
Streszczenie
W pnpm przed wersjami 10.34.0 i 11.4.0, polecenie `pnpm install` w trybie niezamrożonym może zaakceptować nową zdalną zawartość pakietu po wykryciu niezgodności sumy kontrolnej z plikiem pnpm-lock.yaml. Mimo że pakiet jest zablokowany z wartością integralności, a rejestr zwraca inne dane, pnpm naprawia rozpoznawanie, aktualizuje plik blokady i instaluje nową zawartość, kończąc sukcesem.
Ocena ryzyka
Organizacja może nieświadomie zainstalować zmodyfikowany pakiet o tej samej nazwie i wersji, co narusza integralność zależności i może prowadzić do wstrzyknięcia złośliwego kodu do środowiska produkcyjnego.
Rekomendacja
Należy natychmiast zaktualizować pnpm do wersji 10.34.0 lub 11.4.0. Do czasu aktualizacji zaleca się używanie trybu mrożonego (`--frozen-lockfile`) podczas instalacji.
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 install` in non-frozen mode can accept new remote package content after detecting that the downloaded tarball does not match the integrity recorded in pnpm-lock.yaml. When a package is already locked with an integrity value, and the registry later serves different metadata and tarball content for the same package name and version, pnpm initially reports an integrity mismatch. However, plain pnpm install then performs a resolution repair, accepts the registry's new integrity, updates the lockfile, installs the new content, and exits successfully. This means the lockfile integrity check does not act as a hard stop by default. This vulnerability is fixed in 10.34.0 and 11.4.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

