APM bezpečnostní audit: checklist, který potřebuje každý vývojář před publikováním

APM bezpečnostní audit: checklist, který potřebuje každý vývojář před publikováním

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

Bezpečnostní checklist pro vývojáře před publikováním balíčků na npm

Když vydáváte open-source balíčky přes npm, vstupujete do prostředí, které se v posledním roce stalo cílem sofistikovaných útoků. Útoky na balíčky už dávno nejsou jen teoretickou hrozbou a prosté testování „funguje to u mě“ už před publikováním nestačí.

Podívejme se na klíčové bezpečnostní otázky, které by měl řešit každý zodpovědný maintainer.

Proč je nutné kontrolovat balíčky před jejich vydáním

Ekosystém npm je obrovský a jeden balíček se může dostat do tisíců aplikací. Právě proto se stal atraktivním cílem pro útoky – od krádeže přístupových údajů až po infiltraci CI/CD prostředí.

Dobrá zpráva je, že většině těchto rizik se dá předejít, pokud použijete správné nástroje a postup.

Dvanáct hlavních hrozeb pro npm balíčky

1. Kompromitace účtu a škodlivé publikování

Když útočník získá přístup k vašemu npm účtu, může vydat upravenou verzi balíčku s vloženým škodlivým kódem. Uživatelé si ho pak automaticky nainstalují.

Jak se bránit:

  • Zapněte 2FA na npm účtu
  • Používejte samostatné access tokeny místo hlavního hesla
  • Nastavte schvalovací proces pro publikace
  • Sledujte záznamy o publikování

2. Lifecycle hooks – kód se spustí už při instalaci

npm dovoluje používání hooks jako preinstall nebo postinstall. Příngrarizace balíčku v tomto případě umožňuje útočníkovi spustit kód ještě před načtením samotného balíčku.

Jak se bránit:

  • Každý hook v package.json si pořádně prohlédněte
  • Zvažte, zda hook opravdu potřebujete
  • Pokud ano, buďte maximálně transparentní
  • Raději používejte build-time řešení

3. Samoreplikující se worms

Někteútočník může vytvořit balíčku, který se šíří do dalších balíčků v node_modules. Tento typ útoků se vůně snáze ukrytě a zanechává méně stop.

Jak se bránit:

  • Během instalace neměňte souborový systém
  • Nepište do jinerech balíčků
  • Izolujte závislosti
  • Pravidelně používejte npm audit

4. Útoky na CI/CD prostředí

Balíčky, kterů se dostanou do vaší build pipeline, získávají přístup k credentials pro deployment a registry. Tato hrotní Ebene přesnější kontrolu pot

5. Git-based dependency smuggling

Pokud instalujete závislosti přes Git, obcházíte bezpečnostní kontrolu npm registry. Útočník tak může zneužít malicious fork na GitHubu.

Jak se bránit:

  • Závislosti raději pinujte na registry verzích
  • Pokud musíte Git použit, ověřte commit hash
  • Nikdy nepoužívejte latest nebo větve z neznámých repo

6. Dynamické závislosti za běhu

Některé balíčky si stahují a spouští kód až za běhu programu. Tato technikapermits útočníkům vkládat plně malicious payloads bez statické deklarace v package.json.

Jak se bránit:

  • Všechny závislosti deklarujte staticky
  • Nepišíte dynamische require
  • Používejte static analysis tools

7. Phishing infrastruktura skrytá v balíčku

Balíček může obsahovat infrastrukturu pro phishing nebo credential harvesting. Přližný zbránit se tím dá tím, vyhledávání a ověřování.

Jak se bránit:

  • Buďte transparentní o funkci balíčku
  • Označte vaše domény a dokumentaci
  • Implementujte CSP headers
  • Monitorujte typosquatting

8. Krádež secrets a credentials

Malicious package při instalaci může číst .env files nebo CI/CD environment variables.

Jak se bránit:

  • Nikdy necommitujte secrets do version control
  • Používejte secret management
  • Implementujte principle of least privilege

9. Exfiltrace dat

Stolen data se obvykle exfiltruje přes DNS nebo image requests.

Jak se bránit:

  • Monitorujte outbound connections
  • Používejte egress controls
  • Question any external calls

10. Persistence

Malicious code se můžedotýkat cron jobs nebo environment configurations.

Jak se bránit:

  • Review filesystem changes
  • Implementujte file integrity monitoring
  • Use containerization

11. Obfuscation

Malicious code často obfuscated.

Jak se bránit:

  • Keep code readable
  • Publish source maps if minified
  • Use deobfuscation tools

12. Package naming abuse

Typosquatting je stále problém.

Jak se bránit:

  • Register common misspellings
  • Use namespaced packages
  • Monitor copycat packages

Pre-Publication Checklist

Bezpečnostní checklist:

  • [ ] 2FA na npm account
  • [ ] No hardcoded secrets
  • [ ] Minimal hooks
  • [ ] No dynamic loading
  • [ ] No modifications to node_modules
  • [ ] Dependencies pinned to registry
  • [ ] No unexplained external calls
  • [ ] Code readable
  • [ ] Scanner run (socket.dev, snyk)
  • [ ] Peer review
  • [ ] Audit log ready

Proces checklist:

  • [ ] Changelog
  • [ ] Security policy
  • [ ] Maintainer info
  • [ ] License
  • [ ] Repository link
  • [ ] README clear

Shifting left on security

Bezpečnost musí být součásti procesu od začátku,而不是 před přenčím publikování.

  • Think like attacker
  • Automate scanning
  • Stay informed
  • Be transparent
  • Assume breach

Když se rozhodnete vydat balíček

npm je mocný nástroj. Každý balíček, který vydáváte, má přístup k filesystem a influence build process. Nejlepší maintainers se k té

Read in other languages:

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