V roce 2026 o 131% více nahlášených CVE denně než loni.

Závislosti

npm audit

npm audit porovná balíčky ve vašem projektu se známými bezpečnostními upozorněními a nahlásí, co najde. Je součástí npm, nic nestojí a trvá pár sekund, takže je to nejsnazší SCA sken, jaký můžete spustit. Když víte, co čte, víte i to, co může přehlédnout.

Aktualizováno

Jak npm audit funguje

npm audit odešle popis závislostí vašeho projektu do výchozího registru a zeptá se na známé zranitelnosti. Potřebuje package-lock.json nebo soubor shrinkwrap, protože podle něj ví, jaké verze máte. Podrobnosti najdete v dokumentaci npm.

npm audit                       # report everything
npm audit --omit=dev            # skip dev dependencies
npm audit --audit-level=high    # fail only on high or critical
npm audit --json                # machine-readable output

Jak číst výstup

  • Závažnost pochází z bezpečnostního upozornění. Říká, jak vážná je chyba obecně, ne jak vážná je pro vás.
  • Cesta závislostí ukazuje, co balíček přitáhlo. Většina nálezů jsou tranzitivní závislosti a oprava obvykle leží v balíčku o úroveň výš.
  • Vývojová, nebo produkční. Chyba v testovacím nástroji se k uživatelům nedostane, ale stále běží ve vašem buildu, takže ji úplně neignorujte.

Pokud dostanete dlouhý seznam, začněte tím, co je zneužívané a co se dodává. Viz jak prioritizovat zranitelnosti.

npm audit fix a kdy ho nevynucovat

Příkaz Co dělá Riziko
npm audit fix Použije kompatibilní aktualizace v rámci vašich rozsahů verzí Nízké. Přesto spusťte testy, protože provádí úplnou instalaci
npm audit fix --force Povolí i změny mimo vaše rozsahy, včetně hlavních verzí Vysoké. Může rozbít vaši aplikaci a npm říká, že ho bez jasné představy o tom, co chcete, nemáte používat

Pokud oprava není k dispozici, můžete aktualizovat nadřazený balíček nebo pomocí pole overrides v package.json vynutit opravenou tranzitivní verzi. Otestujte to, protože nadřazený balíček nebyl proti této verzi sestaven.

Spouštění npm audit v CI

Ve výchozím nastavení npm audit skončí nenulovým kódem, jakmile cokoli najde, takže job selže při každém upozornění s nízkou závažností. Týmy obvykle nastavují práh. Pozor: --audit-level mění jen práh selhání a výstup nefiltruje.

- run: npm ci
- run: npm audit --omit=dev --audit-level=high

Taková kontrola může shodit build i bez jakékoli změny kódu, protože přes noc vyšlo nové upozornění. Než ji zapnete, rozhodněte, kdo takové selhání řeší. Více v článku kde spouštět SCA skeny.

Co npm audit přehlíží

  • Vše mimo npm. Vaše základní image, balíčky operačního systému, nástroje v Pythonu a GitHub Actions v package-lock.json nejsou.
  • Kód stažený během instalace. Instalační skripty mohou stahovat soubory, které žádný lockfile nezaznamená. Viz co lockfile nezaznamenává.
  • Nové škodlivé balíčky. Porovnává se zveřejněnými upozorněními, takže balíček, ke kterému zatím žádné upozornění není, projde bez nálezu.
  • Co už bylo vydáno. Hlásí stav projektu, který má právě před sebou. Nové upozornění pro loňské vydání se objeví, jen pokud ho někdo na té verzi spustí znovu.
  • Zda jste dotčeni. Neví, jestli váš kód zranitelnou funkci používá. To řeší analýza dosažitelnosti.

npm audit signatures je samostatný příkaz, který ověřuje podpisy registru a atestace původu (provenance) nainstalovaných balíčků. Kontroluje, odkud balíček pochází, ne zda je bezpečný.

npm audit a CRACI

Dál spouštějte npm audit na pull requestech. Je zdarma a známé problémy zachytí brzy. CRACI pokrývá to, co on nevidí: jako váš runner pro GitHub Actions zaznamená každý balíček, který každý job skutečně stáhl z npm i ze všech ostatních zdrojů, včetně balíčků obnovených z cache CI a souborů stažených instalačními hooky. Poté dál kontroluje SBOM toho, co bylo vydáno, jak vycházejí nové zranitelnosti. Viz nejlepší nástroje SCA nebo generování SBOM během buildu.

npm audit: časté dotazy

Co dělá npm audit?

Odešle popis vašich závislostí do registru npm, porovná je se známými bezpečnostními upozorněními a nahlásí všechny zranitelné balíčky, včetně jejich závažnosti a toho, jak se do projektu dostaly.

Je npm audit fix bezpečný?

Samotný npm audit fix je obvykle bezpečný, protože zůstává v rámci vašich rozsahů verzí, ale poté spusťte testy. npm audit fix --force může nainstalovat nové hlavní verze a rozbít vaši aplikaci.

Proč npm audit ukazuje tolik zranitelností?

Většina pochází z tranzitivních závislostí a vývojových nástrojů. Použijte --omit=dev, abyste se soustředili na to, co se dodává, a prioritizujte podle zneužívání a expozice, ne podle počtu.

Jak v npm audit ignorovat zranitelnost?

npm audit nemá vestavěný seznam výjimek. Týmy používají pole overrides ke změně verze, práh pomocí --audit-level nebo obalový nástroj, který zaznamenává přijaté nálezy.

Potřebuje npm audit lockfile?

Ano, ve výchozím nastavení potřebuje package-lock.json nebo soubor shrinkwrap. Obejít to lze pomocí --no-package-lock, výsledky se ale pak mohou mezi spuštěními lišit.

Odhalí npm audit malware?

Jen jakmile k balíčku vyjde bezpečnostní upozornění. Nový škodlivý balíček žádné upozornění nemá, takže v den, kdy se objeví, nahlášen nebude.

Podívejte se, co npm audit nevidí

Spusťte jeden workflow GitHub Actions na CRACI a porovnejte jeho zaznamenanou SBOM se svým package-lock.json.

Rezervujte si demo