
Co znajdziesz w tym artykule?
Wprowadzenie do problemu / definicja
GitHub zapowiedział istotne zmiany bezpieczeństwa w ekosystemie npm, których celem jest ograniczenie nadużyć związanych z atakami na łańcuch dostaw oprogramowania. Problem dotyczy przede wszystkim sytuacji, w których samo uruchomienie procesu instalacji zależności może prowadzić do automatycznego wykonania kodu lub pobrania pakietów z mniej kontrolowanych źródeł.
To właśnie ten etap był w ostatnich latach wielokrotnie wykorzystywany przez cyberprzestępców do dostarczania złośliwego oprogramowania, wykradania sekretów środowiskowych oraz przejmowania pipeline’ów CI/CD. Nowe podejście ma przesunąć model bezpieczeństwa z domyślnego zaufania na model wymagający jawnej zgody.
W skrócie
Najważniejsza zapowiedź dotyczy npm v12, w którym domyślne zachowanie instalatora zostanie wyraźnie zaostrzone. Automatyczne uruchamianie skryptów instalacyjnych zależności, rozwiązywanie zależności z repozytoriów Git oraz pobieranie pakietów z odległych adresów URL nie będą już traktowane jako bezpieczne zachowania domyślne.
W praktyce oznacza to, że organizacje korzystające z Node.js i npm będą musiały wcześniej zidentyfikować projekty zależne od dotychczasowych mechanizmów. GitHub sygnalizuje, że już w npm 11.16.0 lub nowszym pojawiają się ostrzeżenia pomagające wykryć nadchodzące niekompatybilności.
Kontekst / historia
Ekosystem npm od lat pozostaje jednym z fundamentów współczesnego rozwoju aplikacji JavaScript i Node.js. Jego ogromna skala i popularność sprawiają jednak, że jest również atrakcyjnym celem dla atakujących, którzy próbują wykorzystać zaufanie do popularnych pakietów i automatyzacji procesu budowania.
W ostatnich miesiącach i latach branża obserwowała liczne kampanie supply chain, w których złośliwe pakiety, przejęte konta maintainerów oraz nadużycia związane ze skryptami instalacyjnymi prowadziły do uruchamiania nieautoryzowanego kodu na stacjach deweloperskich i w środowiskach produkcyjnych. GitHub już wcześniej wzmacniał zabezpieczenia npm poprzez rozwój mechanizmów publikacji, kontroli dostępu i polityk bezpieczeństwa, a obecna zmiana wpisuje się w ten długofalowy kierunek.
Analiza techniczna
Najistotniejsza zmiana dotyczy skryptów wykonywanych podczas instalacji zależności. W npm v12 polecenie instalacji nie będzie już domyślnie uruchamiać skryptów takich jak preinstall, install i postinstall z pakietów zależnych, jeśli nie zostaną one wcześniej jawnie zatwierdzone. Obejmuje to także sytuacje, w których dochodzi do niejawnej kompilacji modułów natywnych.
Drugim filarem zmian jest ograniczenie zależności pobieranych z repozytoriów Git. Dotychczas takie źródła mogły być rozwiązywane zarówno bezpośrednio, jak i tranzytywnie, co zwiększało powierzchnię ataku. Nowe podejście ma wymagać wyraźnej zgody, ponieważ zależności Git mogą uruchamiać dodatkowe ścieżki wykonania kodu oraz wpływać na zachowanie instalatora.
Trzecia istotna modyfikacja obejmuje zależności instalowane z odległych adresów URL, na przykład archiwów pobieranych przez HTTPS. Takie źródła również przestaną być domyślnie akceptowane bez wcześniejszego dopuszczenia. Z perspektywy bezpieczeństwa oznacza to utrudnienie prób obchodzenia kontroli rejestru pakietów oraz zmniejszenie ryzyka dostarczenia niezweryfikowanych artefaktów spoza standardowego procesu publikacji.
- blokowanie automatycznego uruchamiania skryptów instalacyjnych zależności,
- ograniczenie zależności pochodzących z repozytoriów Git,
- blokowanie pakietów pobieranych z odległych adresów URL bez jawnej zgody,
- wcześniejsze ostrzeżenia o niekompatybilnościach w nowszych wydaniach npm 11.
Konsekwencje / ryzyko
Dla organizacji rozwijających aplikacje w Node.js zmiany oznaczają wyraźne ograniczenie ryzyka automatycznego uruchomienia złośliwego kodu podczas instalacji zależności. Jest to szczególnie ważne w środowiskach CI/CD, gdzie proces instalacji często działa automatycznie i ma dostęp do cennych sekretów, tokenów oraz poświadczeń chmurowych.
Jednocześnie nowy model może wiązać się z ryzykiem operacyjnym. Część legalnych projektów korzysta z postinstalacyjnych skryptów, lokalnej kompilacji modułów natywnych, zależności Git lub paczek dostarczanych z niestandardowych źródeł. Po wdrożeniu npm v12 takie przypadki mogą przestać działać bez dodatkowej konfiguracji, co może prowadzić do błędów buildów, problemów z wdrożeniami i zakłóceń w odtwarzalności środowisk.
Warto również podkreślić, że zmiany nie rozwiązują całego problemu supply chain. Nadal aktualne pozostają zagrożenia związane z przejęciem kont maintainerów, typosquattingiem, dependency confusion oraz złośliwym kodem wykonywanym już na etapie działania aplikacji. Nowe ustawienia domyślne ograniczają jednak jedną z najbardziej narażonych ścieżek wejścia.
Rekomendacje
Organizacje korzystające z npm powinny możliwie szybko przeprowadzić inwentaryzację projektów pod kątem użycia skryptów preinstall, install, postinstall oraz prepare. Należy ustalić, które pakiety rzeczywiście wymagają takiego zachowania, a które można zastąpić bezpieczniejszymi odpowiednikami.
Dobrym krokiem przygotowawczym jest aktualizacja narzędzi do npm 11.16.0 lub nowszego i analiza ostrzeżeń pojawiających się podczas standardowych procesów instalacji. Dzięki temu zespoły mogą jeszcze przed migracją do npm v12 wykryć workflow oraz zależności wymagające jawnego dopuszczenia.
- ograniczyć użycie zależności z Git i zdalnych URL do absolutnie uzasadnionych przypadków,
- preferować pakiety z oficjalnego rejestru objęte standardowymi kontrolami bezpieczeństwa,
- wdrożyć proces zatwierdzania nietypowych źródeł zależności,
- monitorować pipeline’y CI/CD pod kątem uruchamiania nieautoryzowanych skryptów,
- stosować skanowanie zależności, SBOM oraz kontrolę sekretów,
- wzmacniać bezpieczeństwo kont maintainerów przez MFA i bezpieczne mechanizmy publikacji.
Z perspektywy zespołów bezpieczeństwa etap instalacji i budowania zależności powinien być traktowany jako krytyczny punkt egzekwowania polityk. Oznacza to potrzebę logowania zdarzeń instalacyjnych, monitorowania odstępstw od wzorców oraz regularnego przeglądu wyjątków bezpieczeństwa.
Podsumowanie
Zapowiedziane przez GitHub zmiany w npm należą do najważniejszych korekt modelu bezpieczeństwa instalacji zależności w ekosystemie JavaScript w ostatnim czasie. Domyślne blokowanie skryptów instalacyjnych, zależności Git i odległych źródeł URL ma ograniczyć skuteczność ataków supply chain wykorzystujących proces instalacji jako mechanizm wykonania kodu.
Dla organizacji oznacza to jednocześnie poprawę bezpieczeństwa i konieczność przygotowania procesów do bardziej restrykcyjnych ustawień. Kluczowe będzie wcześniejsze wykrycie zależności od dotychczasowych zachowań oraz wdrożenie jawnych, kontrolowanych wyjątków tam, gdzie są one rzeczywiście potrzebne.
Źródła
- https://www.bleepingcomputer.com/news/security/github-announces-npm-security-changes-to-tackle-supply-chain-attacks/
- https://github.blog/changelog/2026-06-09-upcoming-breaking-changes-for-npm-v12/
- https://github.blog/changelog/2026-05-22-staged-publishing-and-new-install-time-controls-for-npm/
- https://github.blog/security/supply-chain-security/our-plan-for-a-more-secure-npm-supply-chain/
- https://docs.npmjs.com/cli/v11/using-npm/changelog/