Sprawdzian bezpieczeństwa APM – co musisz zrobić przed publikacją

Sprawdzian bezpieczeństwa APM – co musisz zrobić przed publikacją

Maj 20, 2026 npm security package management supply chain security developer best practices ci/cd security code review malware prevention open source security

12 punktów, które musisz sprawdzić przed publikacją paczki na npm

Pisanie i udostępnianie paczek to nie tylko kod i dokumentacja. W dzisiejszych czasach trzeba też myśleć o bezpieczeństwie, bo jedna złośliwa wersja może trafić do tysięcy projektów i narobić poważnych szkód.

Dlaczego warto poświęcić czas na audyt bezpieczeństwa

npm to ogromny ekosystem, w którym jedna paczka potrafi rozprzestrzenić się błyskawicznie. Wystarczy jeden błąd, a atakujący może uzyskać dostęp do danych użytkowników lub przejąć kontrolę nad procesami budowania. Większość takich incydentów da się jednak uniknąć, jeśli zadba się o podstawowe zabezpieczenia przed publikacją.

Główne zagrożenia, na które warto zwrócić uwagę

1. Przejęcie konta i złośliwa publikacja

Najgorszy scenariusz to sytuacja, w której ktoś włamie się na Twoje konto npm i opublikuje zmodyfikowaną wersję paczki. Użytkownicy automatycznie pobierają nową wersję, a złośliwy kod trafia do ich systemów.

Jak się bronić:

  • Włącz dwuskładnikowe uwierzytelnianie na koncie npm
  • Korzystaj z tokenów dostępu z ograniczonym zakresem zamiast głównego hasła
  • Włącz zatwierdzanie publikacji dla ważniejszych paczek
  • Regularnie sprawdzaj historię publikacji

2. Skrypty instalacyjne – kod uruchamiany podczas instalacji

npm pozwala na uruchamianie skryptów takich jak preinstall lub postinstall. Jeśli attacker przejmie paczkę, może w ten Weise wykonać dowolny kod w momencie instalacji.

Jak zmniejszyć ryzyko:

  • Sprawdzaj dokładnie każdy skrypt instalacyjny w package.json
  • Zastanów się, czy naprawdę potrzebujesz uruchamiać kod podczas instalacji
  • Jeśli skrypt jest niezbędny, niech będzie prosty i transparentny
  • Rozważ przeniesienie logiki na etap budowania zamiast instalacji

3. Robaki rozprzestrzeniające się po node_modules

Niektóre ataki polegają na modyfikowaniu innych paczek w folderze node_modules. Złośliwy kod potrafi się w ten Weise rozprzestrzeniać i zmieniać behavior innych zależności.

Jak się chronić:

  • Nie modyfikuj plików innych paczek podczas instalacji
  • Unikaj bezpośredniej ingerencji w strukturę node_modules
  • Zawsze używaj npm audit i narzędzi do skanowania zależności

4. Ataki na tożsamość w pipeline'ach CI/CD

W procesach budowania przechowywane są często tokeny i poświadczenia. Jeśli złośliwa paczka trafi do takiego procesie, attacker może uzyskać dostęp do całego systemu.

Jak się chronić:

  • Używaj tokenów z minimalnym zakresem uprawnień
  • Rotuj poświadczenia regularnie
  • Nie przechowuj poświadczeń w skryptach paczki
  • Oferuj audyt dostępu do sekretów

5. Zależności pobierane bezpośrednio z Git

Gdy instalujesz zależności z Git zamiast npm registry, pomijasz wiele zabezpieczeń. Atakujący może w tym Weise dystrybutować złośliwy widelec.

Jak się chronić:

  • Unikaj zależności z Git – zawsze preferuj wersje z registry
  • Jeśli musisz użyać Git, weryfikuj konkretny hash commita
  • Nie używaj latest lub gałęzi z nieznajomych repozytoriów

6. Dynamiczne pobieranie zależności podczas działania

Niektóre paczki fetchują i wykonują kod w czasie rzeczywistym. Ta practice tworzy dodatkowe powierzchnie do ataku,并且 jest trudne do kontroli.

Jak się chronić:

  • Wszystkie zależności powinny być deklarowane statycznie w package.json
  • Nie pobieraj i nie execute kodu dynamicznie
  • Używaj narzędzi do analizy statycznej,已 wykrywać dynamiczne require

7. Strony phishingowe w paczkach

Nie niektóre paczki służą do ukrywania phishingowych stron lub do harvesting credentiali. Paczka może wyglądać na normalną, but jednocześnie przekierowywać użytkowników na fałszywe strony.

How to protect users:

  • Bądź transparentny o tym, co paczka robi
  • Podaj oficjalne domeny i dokumentację
  • Implementuj CSP headers na associated web properties
  • Monitoruj typosquatting dla nazwy paczki
  • Report suspicious packages immediately

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT NB NL HU IT FR ES DE DA ZH-HANS EN