npm audit în Node.js

Verifică dependențele în baza de vulnerabilități cunoscute și le actualizează automat cu npm audit fix.

Sintaxă
npm audit [--omit=dev] [--audit-level=<nivel>]
npm audit fix [--force]

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 --force fă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 audit gă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.