Ce face npm audit
npm audit trimite registrului lista pachetelor din package-lock.json și primește înapoi vulnerabilitățile cunoscute (din GitHub Advisory Database), cu gravitatea lor: low, moderate, high, critical. Același rezumat apare și la finalul fiecărui npm install.
npm audit fix instalează versiunile corectate care încap în intervalele din package.json. Când corectura cere o versiune majoră nouă, npm o propune doar cu --force, care poate strica aplicația: verifică după aceea.
Codul de ieșire este nenul când găsește vulnerabilități, deci poate opri un pipeline CI. Cu --audit-level=high se oprește doar la cele grave, iar cu --omit=dev verifică doar pachetele care ajung în producție.
Parametri
| Parametru | Descriere |
|---|---|
fix |
Instalează automat versiunile corectate compatibile. |
--force |
Împreună cu fix: permite și versiuni majore noi. |
--omit=dev |
Ignoră devDependencies. |
--audit-level=<nivel> |
Cod de ieșire nenul doar de la nivelul dat în sus: low, moderate, high, critical. |
--json |
Raportul în format JSON. |
Exemple
Exemplul 1: Un pachet vechi cu probleme cunoscute
Proiectul folosește lodash@4.17.20. Raportul arată avertismentele, gravitatea și dacă există o corectură.
npm audit
Ieșire în terminal
# npm audit report
lodash <=4.17.23
Severity: high
Command Injection in lodash - https://github.com/advisories/GHSA-35jh-r3h4-6jhm
Regular Expression Denial of Service (ReDoS) in lodash - https://github.com/advisories/GHSA-29mw-wpgm-hmr9
lodash vulnerable to Code Injection via `_.template` imports key names - https://github.com/advisories/GHSA-r5fr-rjxr-66jc
lodash vulnerable to Prototype Pollution via array path bypass in `_.unset` and `_.omit` - https://github.com/advisories/GHSA-f23m-r3pf-42rh
Lodash has Prototype Pollution Vulnerability in `_.unset` and `_.omit` functions - https://github.com/advisories/GHSA-xxjr-mmjv-4gpg
fix available via `npm audit fix`
node_modules/lodash
1 high severity vulnerability
To address all issues, run:
npm audit fix
Exemplul 2: Corectura automată
Intervalul ^4.17.20 permite o versiune corectată, așa că fix nu are nevoie de --force.
npm audit fix
npm ls
Ieșire în terminal
changed 1 package, and audited 2 packages in 1s
found 0 vulnerabilities
vechi@1.0.0 /home/ana/proiecte/vechi
└── lodash@4.18.1
Exemplul 3: Verificare în CI doar pentru producție
Pipeline-ul se oprește doar la vulnerabilități high sau critical din pachetele de producție.
npm audit --omit=dev --audit-level=high
Ieșire în terminal
found 0 vulnerabilities
Greșeli frecvente
- Rulezi
npm audit fix --forcefără să citești ce schimbă: poate trece un pachet la o versiune majoră nouă și aplicația nu mai pornește. - Ignori raportul pentru că „e doar în devDependencies”: uneltele de build rulează pe calculatorul tău și în CI, unde au acces la cod și la chei.
- Crezi că
found 0 vulnerabilitiesînseamnă cod sigur:npm auditgăsește doar probleme deja raportate public.
Comenzi înrudite
npm update / npm outdated: npm outdated arată pachetele rămase în urmă; npm update le aduce la cea mai nouă versiune permisă de intervalul din package.json.npm install: Instalează pachete din registrul npm în node_modules și le trece în package.json și package-lock.json.package-lock.json: Fișierul în care npm notează versiunea exactă a fiecărui pachet instalat, ca toată lumea să primească același node_modules.npm ci: Instalare curată și exactă după package-lock.json, pentru servere de build, CI și producție.