123% de CVE signalées en plus par jour en 2026 par rapport à l'an dernier.

Dépendances

npm audit

npm audit confronte les paquets de votre projet aux avis de sécurité connus et signale ce qu'il trouve. Il est fourni avec npm, ne coûte rien et prend quelques secondes : c'est le scan SCA le plus simple que vous puissiez lancer. Savoir ce qu'il lit vous indique ce qui peut lui échapper.

Mis à jour le

Comment fonctionne npm audit

npm audit envoie une description des dépendances de votre projet à votre registre par défaut et demande les vulnérabilités connues. Il a besoin d'un fichier package-lock.json ou shrinkwrap, car c'est ainsi qu'il sait quelles versions vous avez. Consultez la documentation npm pour les détails.

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

Comment lire le rapport

  • La sévérité vient de l'avis de sécurité. Elle indique la gravité de la faille en général, pas sa gravité pour vous.
  • Le chemin de dépendance montre ce qui a fait entrer le paquet. La plupart des résultats sont des dépendances transitives, et la correction se situe généralement dans le paquet au-dessus.
  • Développement ou production. Une faille dans un outil de test n'est pas livrée aux utilisateurs, mais elle s'exécute tout de même dans votre build : ne l'ignorez donc pas complètement.

Si vous obtenez une longue liste, commencez par ce qui est exploité et ce qui est livré. Voir comment prioriser les vulnérabilités.

npm audit fix, et quand ne pas le forcer

Commande Ce qu'elle fait Risque
npm audit fix Applique les mises à jour compatibles dans vos plages de versions Faible. Lancez tout de même vos tests, car elle exécute une installation complète
npm audit fix --force Autorise aussi les changements hors de vos plages, y compris de versions majeures Élevé. Elle peut casser votre application, et npm déconseille de l'utiliser sans avoir une idée claire de ce que vous voulez

Si aucune correction n'est disponible, vous pouvez mettre à niveau le paquet parent, ou utiliser le champ overrides de package.json pour forcer une version transitive corrigée. Testez le résultat, car le paquet parent n'a pas été construit avec cette version.

Exécuter npm audit en CI

Par défaut, npm audit se termine avec un code non nul dès qu'il trouve quelque chose, ce qui fait échouer le job au moindre avis de faible sévérité. Les équipes définissent généralement un seuil. Notez que --audit-level ne modifie que le seuil d'échec et ne filtre pas le rapport.

- run: npm ci
- run: npm audit --omit=dev --audit-level=high

Un tel contrôle peut aussi faire échouer un build sans aucun changement de code, parce qu'un nouvel avis de sécurité a été publié pendant la nuit. Décidez qui prend en charge cet échec avant de l'activer. Pour en savoir plus, voir où exécuter les scans SCA.

Ce qui échappe à npm audit

  • Tout ce qui est hors de npm. Votre image de base, les paquets du système d'exploitation, les outils Python et les GitHub Actions ne figurent pas dans package-lock.json.
  • Le code récupéré pendant l'installation. Les scripts d'installation peuvent télécharger des fichiers qu'aucun lockfile n'enregistre. Voir ce qu'un lockfile n'enregistre pas.
  • Les nouveaux paquets malveillants. Il se fonde sur les avis publiés : un paquet qui n'a pas encore d'avis passe donc sans alerte.
  • Ce qui a déjà été livré. Il rend compte du projet qu'il a devant lui. Un nouvel avis concernant la release de l'an dernier n'apparaît que si quelqu'un le relance sur cette version.
  • Si vous êtes réellement touché. Il ne sait pas si votre code utilise la fonction vulnérable. L'analyse d'atteignabilité répond à cette question.

npm audit signatures est une commande distincte qui vérifie les signatures du registre et les attestations de provenance des paquets que vous avez installés. Elle contrôle d'où vient un paquet, pas s'il est sûr.

npm audit et CRACI

Continuez à exécuter npm audit sur les pull requests. Il est gratuit et détecte tôt les problèmes connus. CRACI couvre ce qu'il ne peut pas voir : en tant que runner GitHub Actions, il enregistre chaque paquet que chaque job a réellement récupéré depuis npm et toute autre source, y compris les paquets restaurés depuis les caches CI et les fichiers récupérés par les hooks d'installation. Il continue ensuite de vérifier la SBOM de ce qui a été livré à mesure que de nouvelles vulnérabilités sont publiées. Voir les meilleurs outils SCA ou la génération de SBOM au build.

npm audit : questions fréquentes

Que fait npm audit ?

Il envoie une description de vos dépendances au registre npm, les confronte aux avis de sécurité connus et signale les paquets vulnérables, avec leur sévérité et la façon dont ils sont entrés dans votre projet.

npm audit fix est-il sûr ?

npm audit fix seul est généralement sûr, car il reste dans vos plages de versions, mais lancez vos tests ensuite. npm audit fix --force peut installer de nouvelles versions majeures et casser votre application.

Pourquoi npm audit affiche-t-il autant de vulnérabilités ?

La plupart proviennent de dépendances transitives et d'outils de développement. Utilisez --omit=dev pour vous concentrer sur ce qui est livré, et priorisez selon l'exploitation et l'exposition plutôt que selon le nombre.

Comment ignorer une vulnérabilité dans npm audit ?

npm audit n'a pas de liste d'exclusion intégrée. Les équipes utilisent le champ overrides pour changer la version, un seuil avec --audit-level, ou un outil d'encapsulation qui consigne les résultats acceptés.

npm audit a-t-il besoin d'un lockfile ?

Oui, par défaut il a besoin de package-lock.json ou d'un fichier shrinkwrap. Vous pouvez vous en passer avec --no-package-lock, mais les résultats peuvent alors varier d'une exécution à l'autre.

npm audit détecte-t-il les malwares ?

Seulement une fois qu'un avis a été publié pour le paquet. Un nouveau paquet malveillant n'a aucun avis : il ne sera donc pas signalé le jour de son apparition.

Voyez ce que npm audit ne voit pas

Exécutez un workflow GitHub Actions sur CRACI et comparez sa SBOM enregistrée avec votre package-lock.json.

Réserver une démo