Afhankelijkheden
npm audit
npm audit toetst de pakketten in uw project aan bekende beveiligingsadvisories en rapporteert wat het vindt. Het zit bij npm, kost niets en duurt enkele seconden, en dat maakt het de eenvoudigste SCA-scan die u kunt draaien. Wie weet wat het leest, weet ook wat het kan missen.
Bijgewerkt op
Hoe npm audit werkt
npm audit stuurt een beschrijving van de afhankelijkheden van uw project naar uw standaardregistry en vraagt
om bekende kwetsbaarheden. Het heeft een package-lock.json of shrinkwrap-bestand nodig, want daaruit weet
het welke versies u hebt. Zie de npm-documentatie
voor de details.
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
Hoe u het rapport leest
- De ernst komt uit de advisory. Die zegt hoe ernstig de fout in het algemeen is, niet hoe ernstig hij voor u is.
- Het afhankelijkheidspad toont wat het pakket heeft binnengehaald. De meeste bevindingen zijn transitieve afhankelijkheden, en de oplossing zit meestal in het pakket daarboven.
- Ontwikkeling of productie. Een fout in een testtool wordt niet aan gebruikers geleverd, maar draait wel in uw build, dus negeer hem niet helemaal.
Krijgt u een lange lijst, begin dan met wat wordt misbruikt en wat wordt geleverd. Zie hoe u kwetsbaarheden prioriteert.
npm audit fix, en wanneer u het niet moet forceren
| Commando | Wat het doet | Risico |
|---|---|---|
npm audit fix |
Past compatibele updates toe binnen uw versiebereiken | Laag. Draai toch uw tests, want het voert een volledige installatie uit |
npm audit fix --force |
Staat ook wijzigingen buiten uw bereiken toe, inclusief major-versies | Hoog. Het kan uw applicatie breken, en volgens npm moet u het niet gebruiken zonder een helder idee van wat u wilt |
Is er geen oplossing beschikbaar, dan kunt u het bovenliggende pakket upgraden, of met het veld overrides in
package.json een gepatchte transitieve versie afdwingen. Test dat, want het bovenliggende pakket is niet
tegen die versie gebouwd.
npm audit draaien in CI
Standaard eindigt npm audit met een andere exitcode dan nul zodra het iets vindt, waardoor de job mislukt op
elke advisory met lage ernst. Teams stellen meestal een drempel in. Let op: --audit-level wijzigt alleen de
faaldrempel en filtert het rapport niet.
- run: npm ci
- run: npm audit --omit=dev --audit-level=high
Zo'n controle kan een build ook laten mislukken zonder codewijziging, omdat er 's nachts een nieuwe advisory is gepubliceerd. Bepaal wie eigenaar is van die mislukking voordat u de controle aanzet. Zie voor meer waar u SCA-scans laat draaien.
Wat npm audit mist
-
Alles buiten npm. Uw base image, pakketten van het besturingssysteem, Python-tools en GitHub Actions
staan niet in
package-lock.json. - Code die tijdens de installatie wordt opgehaald. Installatiescripts kunnen bestanden downloaden die geen lockfile vastlegt. Zie wat een lockfile niet vastlegt.
- Nieuwe kwaadaardige pakketten. Het matcht op gepubliceerde advisories, dus een pakket zonder advisory komt er schoon doorheen.
- Wat al is geleverd. Het rapporteert over het project dat het voor zich heeft. Een nieuwe advisory voor de release van vorig jaar komt alleen naar boven als iemand het opnieuw op die versie draait.
- Of u wordt getroffen. Het weet niet of uw code de kwetsbare functie gebruikt. Reachability-analyse pakt dat aan.
npm audit signatures is een apart commando dat registryhandtekeningen en herkomstattestaties van de
geïnstalleerde pakketten verifieert. Het controleert waar een pakket vandaan komt, niet of het veilig is.
npm audit en CRACI
Blijf npm audit draaien op pull requests. Het is gratis en vangt bekende problemen vroeg op. CRACI dekt wat
het niet kan zien: als uw GitHub Actions-runner legt het elk pakket vast dat elke job daadwerkelijk heeft opgehaald van
npm en elke andere bron, inclusief pakketten die uit CI-caches zijn teruggezet en bestanden die door install-hooks zijn
opgehaald. Daarna blijft het de SBOM van wat is geleverd controleren zodra nieuwe kwetsbaarheden worden gepubliceerd. Zie
de beste SCA-tools of
SBOM-generatie tijdens de build.
npm audit: veelgestelde vragen
Wat doet npm audit?
Het stuurt een beschrijving van uw afhankelijkheden naar de npm-registry, toetst ze aan bekende beveiligingsadvisories en rapporteert kwetsbare pakketten, met hun ernst en hoe ze in uw project zijn gekomen.
Is npm audit fix veilig?
Gewoon npm audit fix is meestal veilig, omdat het binnen uw versiebereiken blijft, maar draai daarna wel uw tests. npm audit fix --force kan nieuwe major-versies installeren en uw applicatie breken.
Waarom toont npm audit zoveel kwetsbaarheden?
De meeste komen uit transitieve afhankelijkheden en ontwikkeltools. Gebruik --omit=dev om u te richten op wat wordt geleverd, en prioriteer op misbruik en blootstelling in plaats van op het aantal.
Hoe negeert u een kwetsbaarheid in npm audit?
npm audit heeft geen ingebouwde negeerlijst. Teams gebruiken het veld overrides om de versie te wijzigen, een drempel met --audit-level, of een wrapper-tool die geaccepteerde bevindingen vastlegt.
Heeft npm audit een lockfile nodig?
Ja, standaard heeft het package-lock.json of een shrinkwrap-bestand nodig. U kunt dat omzeilen met --no-package-lock, maar de resultaten kunnen dan per run verschillen.
Detecteert npm audit malware?
Alleen zodra er een advisory voor het pakket is gepubliceerd. Een nieuw kwaadaardig pakket heeft geen advisory, dus het wordt niet gemeld op de dag dat het verschijnt.
Zie wat npm audit niet kan zien
Laat één GitHub Actions-workflow op CRACI draaien en vergelijk de vastgelegde SBOM met uw package-lock.json.
Demo boeken