138 votes

Comment corriger manuellement les vulnérabilités de npm ?

Quand je cours npm install il dit found 33 vulnerabilities (2 low, 31 moderate) run `npm audit fix` to fix them, or `npm audit` for details .

Cependant, npm audit fix sorties up to date in 11s fixed 0 of 33 vulnerabilities in 24653 scanned packages 33 vulnerabilities required manual review and could not be updated

Est-ce que review signifie qu'il n'est pas censé être réparé par l'utilisateur ?

Quand je cours npm audit cela me donne une liste de tableaux, semblable à celle-ci :

┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low           │ Prototype Pollution                                          │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ lodash                                                       │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=4.17.5                                                     │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ browser-sync [dev]                                           │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ browser-sync > easy-extender > lodash                        │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/577                       │
└───────────────┴──────────────────────────────────────────────────────────────┘

Dans cet exemple, la section de remédiation de la page liée indique que Update to version 4.17.5 or later. . Cependant, en /node_modules/browser-sync/package.json il y a des lignes :

"devDependencies": {
    "lodash-cli": "4.17.5",
}

et plus de dépendances de lodash. Donc il devrait déjà être v4.17.5. J'ai également vérifié /node_modules/lodash/lodash.json qui a var VERSION = '4.17.10'; ligne. Sur /node_modules/lodash/package.json il y a ces lignes :

  "_from": "lodash@^4.17.4",
  "_id": "lodash@4.17.10",

Je pense que la version est indiquée dans "_id", et non dans "_from", donc les versions sont correctes mais la vulnérabilité apparaît toujours dans la liste d'audit.

Je suis encore novice en matière de node.js et ces messages me perturbent beaucoup. Existe-t-il un moyen de le corriger manuellement ou de se débarrasser de ces messages avec lesquels je ne peux rien faire ?

50voto

estus Points 5252

lodash-cli sur devDependencies n'affecte pas la façon dont browser-sync fonctionne dans votre projet, devDependencies sont ignorés lorsqu'un paquet est installé en tant que dépendance.

Quoi audit Le rapport dit que c'est easy-extender qui a lodash dépendance :

browser-sync > easy-extender > lodash        

Il dépend de Lodash 3 Le problème a été corrigé dans Lodash 4. Le problème a pu être corrigé en bifurquant easy-extender en le mettant à jour et en l'installant à la place du paquet du registre public de NPM. Mais il n'y a pas de réel problème avec cette dépendance.

audit L'importance du rapport doit être évaluée manuellement. Même si la dépendance imbriquée présente un risque pour la sécurité, cela ne signifie pas qu'une fonctionnalité qui introduit ce risque a été utilisée. Cela ne signifie pas non plus que même si elle est utilisée, elle introduit un risque réel en raison de la façon dont elle est utilisée.

browser-sync est un outil de développement qui n'est pas utilisé en production, il n'y a pas tant de scénarios où ses vulnérabilités pourraient être exploitées. Et Prototype de pollution n'est pas du tout une vulnérabilité, juste un avis qu'un paquet ne suit pas les bonnes pratiques, il peut être ignoré.

En général, c'est la façon de corriger les vulnérabilités signalées :

  • Faites un bilan de santé
  • S'il s'agit d'un problème réel, vérifiez les problèmes existants dans le référentiel du paquet vulnérable. et PRs
  • S'il n'y en a pas, soumettez un problème.
  • Fork un dépôt ou utiliser un PR existant comme Dépendance git jusqu'à ce qu'il soit corrigé dans la version de NPM
  • En cas de dépendances imbriquées, faites-le à plusieurs niveaux d'imbrication

La plupart du temps, on s'attend à ce que vous n'alliez pas au-delà d'un contrôle de bon sens.

patch-package peut aider à corriger les dépendances imbriquées en place mais cela n'affectera pas audit rapport.

0 votes

Je n'ai pas fait attention à la section Path, et elle utilise vraiment lodash v3.10.1, merci. Mais browser-sync est juste un exemple, le dernier de la liste. Donc, je peux ignorer 2 vulnérabilités faibles, mais puis-je ignorer 31 modérées ? Je suppose que je ne devrais rien modifier dans node_modules alors la bifurcation et la réparation sont les seuls moyens de s'en débarrasser ? Et en tant que nouvel utilisateur, je n'ai pas la possibilité de le faire ? Dois-je en parler aux développeurs de paquets ?

5 votes

mais puis-je ignorer 31 modérés ? - C'est le but de la "vérification de la santé mentale", utilisez votre jugement. Plus vous prêterez attention à ce que disent réellement ces rapports, plus vous deviendrez un bon développeur en matière de sécurité. Devrais-je en parler aux développeurs de paquets ? - vous devriez probablement (au moins pour fermer audit vers le haut), la réponse répond à cette question. Les gens vivaient sans npm audit en quelque sorte. Les chances qu'ils causent de réels problèmes de sécurité à l'application sont très faibles, mais sans savoir ce qu'ils sont et comment ils sont utilisés dans votre application, je ne peux pas le garantir.

0 votes

Merci ! J'ai pris le temps d'écrire un commentaire, donc je n'ai pas vu la partie éditée avant de commenter.

17voto

Tjad Clark Points 95

Si vous êtes absolument certain de vouloir ignorer l'audit, vous pouvez le faire en ajoutant --no-audit

 npm install --no-audit

10voto

nik Points 161

Npm audit fix' va incrémenter la version de la dépendance dans le package.json, ce qui peut entraîner une rupture du code. Il est donc préférable d'ouvrir le fichier package-lock.json et de mettre à jour les versions des dépendances/sous-dépendances à la version requise. Maintenez le package-lock.json dans le référentiel.

Parfois, les vulnérabilités proviennent de paquets de développement. Dans ce cas, ignorez ces vulnérabilités car elles ne seront pas reprises dans la production.

7voto

code chan Points 11

Utiliser ce

npm audit fix --force --production

peut résoudre votre problème

-13voto

Gaurav Rana Points 19

La plupart des problèmes survenus dans mon système étaient dus au paquet npm. J'ai essayé,

npm un npm

Vous n'avez pas besoin de refaire l'installation.

Il suffit de relancer le programme. Ça a marché pour moi.

1 votes

Cela désinstalle simplement l'installation locale de npm, ce qui fait que l'installation globale de npm est utilisée à la place.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X