Riippuvuudet
npm audit
npm audit vertaa projektisi paketteja tunnettuihin tietoturvatiedotteisiin ja raportoi löydökset. Se tulee npm:n mukana, on ilmainen ja vie sekunteja, joten se on helpoin SCA-skannaus, jonka voit ajaa. Kun tiedät, mitä se lukee, tiedät myös, mitä se voi ohittaa.
Päivitetty
Miten npm audit toimii
npm audit lähettää kuvauksen projektisi riippuvuuksista oletusrekisteriisi ja kysyy tunnettuja
haavoittuvuuksia. Se tarvitsee package-lock.json- tai shrinkwrap-tiedoston, koska siitä se tietää, mitkä
versiot sinulla on. Lisätietoja on npm:n dokumentaatiossa.
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
Miten raporttia luetaan
- Vakavuus tulee tietoturvatiedotteesta. Se kertoo, kuinka paha puute on yleisesti, ei sitä, kuinka paha se on sinulle.
- Riippuvuuspolku näyttää, mikä toi paketin mukaan. Useimmat löydökset ovat transitiivisia riippuvuuksia, ja korjaus on yleensä yllä olevassa paketissa.
- Kehitys vai tuotanto. Testityökalun puute ei päädy käyttäjille, mutta se ajetaan silti buildissasi, joten älä jätä sitä kokonaan huomiotta.
Jos lista on pitkä, aloita siitä, mitä hyödynnetään ja mitä päätyy tuotantoon. Katso miten haavoittuvuudet priorisoidaan.
npm audit fix, ja milloin sitä ei kannata pakottaa
| Komento | Mitä se tekee | Riski |
|---|---|---|
npm audit fix |
Tekee yhteensopivat päivitykset versioalueidesi sisällä | Pieni. Aja testit silti, koska se tekee täyden asennuksen |
npm audit fix --force |
Sallii myös muutokset versioalueiden ulkopuolelle, pääversiot mukaan lukien | Suuri. Se voi rikkoa sovelluksesi, ja npm neuvoo olemaan käyttämättä sitä ilman selvää käsitystä siitä, mitä haluat |
Jos korjausta ei ole saatavilla, voit päivittää yläpaketin tai pakottaa paikatun transitiivisen version
overrides-kentällä package.json-tiedostossa. Testaa muutos, koska yläpakettia ei ole tehty
sitä versiota vasten.
npm auditin ajaminen CI:ssä
Oletuksena npm audit päättyy nollasta poikkeavaan paluukoodiin, kun se löytää mitä tahansa, joten jobi
kaatuu jokaiseen matalan vakavuuden tiedotteeseen. Tiimit asettavat yleensä kynnyksen. Huomaa, että
--audit-level muuttaa vain kaatumisen kynnystä eikä suodata raporttia.
- run: npm ci
- run: npm audit --omit=dev --audit-level=high
Tällainen tarkistus voi myös kaataa buildin ilman koodimuutosta, koska uusi tiedote julkaistiin yön aikana. Päätä, kuka omistaa tällaisen kaatumisen, ennen kuin otat tarkistuksen käyttöön. Lisää aiheesta: missä SCA-skannaukset kannattaa ajaa.
Mitä npm audit ohittaa
-
Kaiken npm:n ulkopuolisen. Peruskonttikuvasi, käyttöjärjestelmän paketit, Python-työkalut ja GitHub Actions
eivät ole
package-lock.json-tiedostossa. - Asennuksen aikana haetun koodin. Asennusskriptit voivat ladata tiedostoja, joita mikään lukitustiedosto ei kirjaa. Katso mitä lukitustiedosto ei kirjaa.
- Uudet haitalliset paketit. Se vertaa julkaistuihin tiedotteisiin, joten paketti, jolla ei vielä ole tiedotetta, menee läpi puhtaana.
- Jo toimitetun. Se raportoi edessään olevasta projektista. Uusi tiedote viime vuoden julkaisulle näkyy vain, jos joku ajaa sen uudelleen sille versiolle.
- Koskeeko asia sinua. Se ei tiedä, käyttääkö koodisi haavoittuvaa funktiota. Reachability-analyysi (reachability analysis) ratkaisee sen.
npm audit signatures on erillinen komento, joka varmistaa asentamiesi pakettien rekisteriallekirjoitukset ja
alkuperäattestaatiot. Se tarkistaa, mistä paketti tuli, ei sitä, onko se turvallinen.
npm audit ja CRACI
Aja npm audit edelleen pull requesteissa. Se on ilmainen ja löytää tunnetut ongelmat aikaisin. CRACI kattaa sen,
mitä se ei näe: GitHub Actions -runnerinasi se kirjaa jokaisen paketin, jonka kukin jobi todella haki npm:stä ja
kaikista muista lähteistä, mukaan lukien CI-välimuisteista palautetut paketit ja asennushookkien hakemat tiedostot. Sen
jälkeen se tarkistaa toimitetun SBOM:n jatkuvasti uusia haavoittuvuuksia vasten niiden julkaisun myötä. Katso
parhaat SCA-työkalut tai
SBOM-generointi buildin aikana.
npm audit: usein kysytyt kysymykset
Mitä npm audit tekee?
Se lähettää kuvauksen riippuvuuksistasi npm-rekisteriin, vertaa niitä tunnettuihin tietoturvatiedotteisiin ja raportoi haavoittuvat paketit vakavuuksineen sekä sen, miten ne päätyivät projektiisi.
Onko npm audit fix turvallinen?
Pelkkä npm audit fix on yleensä turvallinen, koska se pysyy versioalueidesi sisällä, mutta aja testit sen jälkeen. npm audit fix --force voi asentaa uusia pääversioita ja rikkoa sovelluksesi.
Miksi npm audit näyttää niin monta haavoittuvuutta?
Useimmat tulevat transitiivisista riippuvuuksista ja kehitystyökaluista. Käytä --omit=dev-valitsinta keskittyäksesi siihen, mitä toimitetaan, ja priorisoi hyödyntämisen ja altistuksen mukaan lukumäärän sijaan.
Miten haavoittuvuuden voi ohittaa npm auditissa?
npm auditissa ei ole sisäänrakennettua ohituslistaa. Tiimit muuttavat version overrides-kentällä, asettavat kynnyksen --audit-level-valitsimella tai käyttävät kääretyökalua, joka kirjaa hyväksytyt löydökset.
Tarvitseeko npm audit lukitustiedoston?
Kyllä, oletuksena se tarvitsee package-lock.json- tai shrinkwrap-tiedoston. Sen voi ohittaa --no-package-lock-valitsimella, mutta tulokset voivat silloin vaihdella ajojen välillä.
Tunnistaako npm audit haittaohjelmia?
Vasta kun paketista on julkaistu tietoturvatiedote. Uudella haitallisella paketilla ei ole tiedotetta, joten sitä ei raportoida sinä päivänä, kun se ilmestyy.
Näe se, mitä npm audit ei näe
Aja yksi GitHub Actions -työnkulku CRACI:lla ja vertaa sen kirjaamaa SBOM:ia package-lock.json-tiedostoosi.
Varaa demo