Beroenden
npm audit
npm audit kontrollerar paketen i ditt projekt mot kända säkerhetsmeddelanden och rapporterar vad det hittar. Det ingår i npm, kostar ingenting och tar några sekunder, vilket gör det till den enklaste SCA-skanningen du kan köra. Vet du vad det läser vet du också vad det kan missa.
Uppdaterad
Så fungerar npm audit
npm audit skickar en beskrivning av projektets beroenden till ditt standardregister och frågar efter kända
sårbarheter. Det behöver en package-lock.json eller shrinkwrap-fil, eftersom det är så det vet vilka
versioner du har. Se npm-dokumentationen
för detaljerna.
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
Så läser du rapporten
- Allvarlighetsgraden kommer från säkerhetsmeddelandet. Den säger hur allvarlig bristen är generellt, inte hur allvarlig den är för dig.
- Beroendesökvägen visar vad som drog in paketet. De flesta fynd är transitiva beroenden, och åtgärden ligger oftast i paketet ovanför.
- Utveckling eller produktion. En brist i ett testverktyg levereras inte till användarna, men det körs ändå i ditt bygge, så ignorera den inte helt.
Om du får en lång lista, börja med det som utnyttjas och det som levereras. Se så prioriterar du sårbarheter.
npm audit fix, och när du inte ska tvinga det
| Kommando | Vad det gör | Risk |
|---|---|---|
npm audit fix |
Tillämpar kompatibla uppdateringar inom dina versionsintervall | Låg. Kör dina tester ändå, eftersom det gör en fullständig installation |
npm audit fix --force |
Tillåter också ändringar utanför dina intervall, inklusive huvudversioner | Hög. Det kan förstöra din applikation, och npm säger att du inte ska använda det utan en tydlig bild av vad du vill |
Om det inte finns någon åtgärd kan du uppgradera det överordnade paketet, eller använda fältet overrides i
package.json för att tvinga fram en patchad transitiv version. Testa det, eftersom det överordnade paketet inte byggdes
mot den versionen.
Köra npm audit i CI
Som standard avslutas npm audit med en nollskild kod när det hittar något, vilket får jobbet att misslyckas på varje
säkerhetsmeddelande med låg allvarlighetsgrad. Team brukar sätta en tröskel. Observera att --audit-level bara ändrar
tröskeln för misslyckande och inte filtrerar rapporten.
- run: npm ci
- run: npm audit --omit=dev --audit-level=high
En sådan kontroll kan också få ett bygge att misslyckas utan någon kodändring, eftersom ett nytt säkerhetsmeddelande publicerades under natten. Bestäm vem som äger det misslyckandet innan du slår på den. Läs mer i var du bör köra SCA-skanningar.
Vad npm audit missar
-
Allt utanför npm. Din basavbild, operativsystemets paket, Python-verktyg och GitHub Actions
finns inte i
package-lock.json. - Kod som hämtas under installationen. Installationsskript kan ladda ned filer som ingen lockfile registrerar. Se vad en lockfile inte registrerar.
- Nya skadliga paket. Det matchar mot publicerade säkerhetsmeddelanden, så ett paket som ännu inte har något säkerhetsmeddelande passerar utan anmärkning.
- Det som redan levererats. Det rapporterar om projektet framför sig. Ett nytt säkerhetsmeddelande för förra årets release syns bara om någon kör om det på den versionen.
- Om du påverkas. Det vet inte om din kod använder den sårbara funktionen. Reachability-analys tar sig an det.
npm audit signatures är ett separat kommando som verifierar registersignaturer och proveniensattesteringar
för paketen du installerade. Det kontrollerar var ett paket kom ifrån, inte om det är säkert.
npm audit och CRACI
Fortsätt köra npm audit på pull requests. Det är gratis och fångar kända problem tidigt. CRACI täcker det
som det inte kan se: som din GitHub Actions-runner registrerar CRACI varje paket som varje jobb faktiskt hämtade från npm och varje
annan källa, inklusive paket som återställs från CI-cachar och filer som hämtas av installationshookar. Sedan fortsätter CRACI att kontrollera
SBOM:en för det som levererats när nya sårbarheter publiceras. Se
de bästa SCA-verktygen eller
SBOM-generering under bygget.
npm audit: vanliga frågor
Vad gör npm audit?
Det skickar en beskrivning av dina beroenden till npm-registret, kontrollerar dem mot kända säkerhetsmeddelanden och rapporterar sårbara paket, med deras allvarlighetsgrad och hur de hamnade i ditt projekt.
Är npm audit fix säkert?
Vanligt npm audit fix är oftast säkert, eftersom det håller sig inom dina versionsintervall, men kör dina tester efteråt. npm audit fix --force kan installera nya huvudversioner och förstöra din applikation.
Varför visar npm audit så många sårbarheter?
De flesta kommer från transitiva beroenden och utvecklingsverktyg. Använd --omit=dev för att fokusera på det som levereras, och prioritera utifrån exploatering och exponering i stället för antalet.
Hur ignorerar du en sårbarhet i npm audit?
npm audit har ingen inbyggd ignoreringslista. Team använder fältet overrides för att ändra versionen, en tröskel med --audit-level eller ett omslutande verktyg som registrerar accepterade fynd.
Behöver npm audit en lockfile?
Ja, som standard behöver det package-lock.json eller en shrinkwrap-fil. Du kan kringgå det med --no-package-lock, men resultaten kan då skilja sig mellan körningar.
Upptäcker npm audit skadlig kod?
Först när ett säkerhetsmeddelande har publicerats för paketet. Ett nytt skadligt paket har inget säkerhetsmeddelande, så det rapporteras inte den dag det dyker upp.
Se det som npm audit inte kan se
Kör ett GitHub Actions-arbetsflöde på CRACI och jämför dess registrerade SBOM med din package-lock.json.
Boka en demo