Afhængigheder
npm audit
npm audit tjekker pakkerne i dit projekt mod kendte sikkerhedsadvisories og rapporterer, hvad det finder. Det følger med npm, koster intet og tager sekunder, hvilket gør det til den letteste SCA-scanning, du kan køre. Når du ved, hvad det læser, ved du også, hvad det kan overse.
Opdateret
Sådan virker npm audit
npm audit sender en beskrivelse af dit projekts afhængigheder til dit standard-registry og spørger efter
kendte sårbarheder. Det kræver en package-lock.json eller shrinkwrap-fil, fordi det er sådan, det ved, hvilke
versioner du har. Se npm-dokumentationen
for detaljerne.
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ådan læser du rapporten
- Alvorlighed kommer fra advisoryen. Den siger, hvor slem fejlen er generelt, ikke hvor slem den er for dig.
- Afhængighedsstien viser, hvad der trak pakken ind. De fleste fund er transitive afhængigheder, og rettelsen ligger som regel i pakken ovenover.
- Dev eller produktion. En fejl i et testværktøj bliver ikke leveret til brugerne, men den kører stadig i dit build, så ignorér den ikke helt.
Får du en lang liste, så start med det, der bliver udnyttet, og det, der bliver leveret. Se sådan prioriterer du sårbarheder.
npm audit fix, og hvornår du ikke skal tvinge det
| Kommando | Hvad den gør | Risiko |
|---|---|---|
npm audit fix |
Anvender kompatible opdateringer inden for dine versionsintervaller | Lav. Kør alligevel dine tests, fordi den kører en fuld installation |
npm audit fix --force |
Tillader også ændringer uden for dine intervaller, inklusive major-versioner | Høj. Den kan ødelægge din applikation, og npm siger, at den ikke skal bruges uden en klar idé om, hvad du vil |
Hvis der ikke findes en rettelse, kan du opgradere den overordnede pakke eller bruge feltet overrides i
package.json til at gennemtvinge en rettet transitiv version. Test det, fordi den overordnede pakke ikke er
bygget op imod den version.
Kør npm audit i CI
Som standard afslutter npm audit med en exitkode, der ikke er nul, når det finder noget, og det får jobbet
til at fejle på hver advisory med lav alvorlighed. Teams sætter som regel en tærskel. Bemærk, at --audit-level
kun ændrer fejltærsklen og ikke filtrerer rapporten.
- run: npm ci
- run: npm audit --omit=dev --audit-level=high
Et tjek som dette kan også få et build til at fejle uden nogen kodeændring, fordi en ny advisory blev offentliggjort i løbet af natten. Beslut, hvem der ejer den fejl, før du slår tjekket til. Læs mere om, hvor du skal køre SCA-scanninger.
Hvad npm audit overser
-
Alt uden for npm. Dit base-image, operativsystempakker, Python-værktøjer og GitHub Actions
er ikke i
package-lock.json. - Kode hentet under installation. Install-scripts kan downloade filer, som ingen lockfile registrerer. Se hvad en lockfile ikke registrerer.
- Nye ondsindede pakker. Det matcher offentliggjorte advisories, så en pakke, der endnu ikke har en advisory, slipper igennem uden anmærkninger.
- Det, der allerede er leveret. Det rapporterer på det projekt, det har foran sig. En ny advisory for sidste års release dukker kun op, hvis nogen kører det igen på den version.
- Om du er ramt. Det ved ikke, om din kode bruger den sårbare funktion. Reachability-analyse tager sig af det.
npm audit signatures er en separat kommando, der verificerer registry-signaturer og provenance-attestationer
for de pakker, du har installeret. Den tjekker, hvor en pakke kom fra, ikke om den er sikker.
npm audit og CRACI
Bliv ved med at køre npm audit på pull requests. Det er gratis og fanger kendte problemer tidligt. CRACI
dækker det, det ikke kan se: Som din GitHub Actions-runner registrerer CRACI hver pakke, hvert job faktisk hentede fra npm
og alle andre kilder, inklusive pakker gendannet fra CI-caches og filer hentet af install-hooks. Derefter bliver CRACI ved
med at tjekke SBOM'en for det leverede, efterhånden som nye sårbarheder offentliggøres. Se
de bedste SCA-værktøjer eller
SBOM-generering under buildet.
npm audit: ofte stillede spørgsmål
Hvad gør npm audit?
Det sender en beskrivelse af dine afhængigheder til npm-registryet, tjekker dem mod kendte sikkerhedsadvisories og rapporterer sårbare pakker med deres alvorlighed, og hvordan de kom ind i dit projekt.
Er npm audit fix sikkert?
Almindeligt npm audit fix er som regel sikkert, fordi det holder sig inden for dine versionsintervaller, men kør dine tests bagefter. npm audit fix --force kan installere nye major-versioner og ødelægge din applikation.
Hvorfor viser npm audit så mange sårbarheder?
De fleste kommer fra transitive afhængigheder og dev-værktøjer. Brug --omit=dev til at fokusere på det, der leveres, og prioritér efter udnyttelse og eksponering i stedet for antal.
Hvordan ignorerer du en sårbarhed i npm audit?
npm audit har ingen indbygget ignoreringsliste. Teams bruger feltet overrides til at ændre versionen, en tærskel med --audit-level eller et wrapper-værktøj, der registrerer accepterede fund.
Kræver npm audit en lockfile?
Ja, som standard kræver det package-lock.json eller en shrinkwrap-fil. Du kan omgå det med --no-package-lock, men så kan resultaterne variere mellem kørsler.
Finder npm audit malware?
Først når der er offentliggjort en advisory for pakken. En ny ondsindet pakke har ingen advisory, så den bliver ikke rapporteret den dag, den dukker op.
Se, hvad npm audit ikke kan se
Kør et GitHub Actions-workflow på CRACI, og sammenlign den registrerede SBOM med din package-lock.json.
Book en demo