104 votes

Façon correcte de corriger une vulnérabilité potentielle de sécurité dans une dépendance définie dans package-lock.json

Github m'a donné cette erreur sur l'un de mes dépôts.

We found a potential security vulnerability in one of your dependencies.
A dependency defined in ./package-lock.json has known security vulnerabilities 
and should be updated.

La dépendance n'est pas définie dans notre package.json fichier. D'après ce que j'ai compris, ce n'est pas une bonne pratique de supprimer le fichier package-lock.json et le régénérer. Cependant, je ne vois pas d'autre moyen de résoudre ce problème. Si j'écarte cette faille de sécurité, elle réapparaîtra quelques jours plus tard. Avez-vous des idées ? Merci !

0 votes

87voto

Jo Takion Points 680

Nouveau : maintenant, avec npm@6 vous pouvez directement exécuter

npm audit fix

Vieille réponse :

Vous devriez essayer d'identifier le nom du paquet qui pose problème, et ensuite exécuter

npm install package-name

remplaçant le nom du paquet, évidemment.

Cela installera la dernière version du paquet, et très souvent, la dernière version a corrigé le problème de sécurité. Si vous avez une contrainte sur la version (ex : 1.2), vous pouvez toujours essayer :

npm install package-name@^1.2

et la dernière version corrigée sera installée

2 votes

...et pour "identifier le nom du paquet problématique" vous pouvez exécuter npm ls vulnerability-name . Cela liste les dépendants de la vulnérabilité, que vous pouvez ensuite mettre à jour/installer. (comme mentionné de manière assez peu claire dans la réponse de @RileyManda)

1 votes

Npm audit fix résout proprement ce problème pour moi maintenant.

10 votes

Il ajoutera package-name sur dependencies de package.json . Je ne veux pas de ça.

9voto

RileyManda Points 841

Pour résoudre ce problème :

Solution1 : Trouvez d'abord la vulnérabilité : En utilisant votre terminal : cd dans votre projet puis exécutez "npm ls hoek"

Et enfin : npm install bcrypt@latest

Poussez ensuite le projet mis à jour vers git (c'est-à-dire effectuez un nouveau commit).

Solution 2 :

si la première option/solution ne résout pas le problème, changez la version manuellement dans votre package-lock.json. Modifiez manuellement votre version de 2.16.3 à 4.2.1.

"hoek": {
      "version":  "4.2.1",
      "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
      "dev": true

Puis mettez à jour votre projet sur GitHub(commit/push) Assurez-vous simplement que chaque occurrence de la version de hoek dans votre package-lock.json est changée en 4.2.1

Alternativement, si vous pouvez trouver un moyen de changer la version de hoek/mettre à jour hoek en utilisant npm, cela rendra les choses beaucoup plus simples (quelque chose comme : npm update @hoek..version )..ou désinstaller la dépendance spécifique puis la réinstaller en utilisant bower ou npm.

5voto

JohnSk Points 33

J'avais le même problème avec une vulnérabilité de sécurité de lodash, dans un projet que je construisais avec yarn. Github a signalé ces problèmes de sécurité.

J'ai essayé la réponse de @rileymanda ci-dessus, en utilisant un terminal : cd dans le projet, puis exécuter npm ls lodash .

Cela a permis de découvrir que dans mon cas, l'erreur se trouvait dans react-scripts . Une recherche rapide sur Google pour des problèmes avec react-scripts et lodash a révélé que c'était un problème connu.

J'ai essayé diverses choses pour réparer via le fil - sans succès. npm ls lodash montrait toujours la version vulnérable de lodash utilisée.

Ayant lu Le blog de Matt Turnbull sur les améliorations apportées à npm Je suis passé de yarn à npm. (Supprimer yarn.lock , supprimer ./node_modules . Exécuter npm install ). npm ls lodash montre maintenant les dernières versions des dépendances utilisées - hourra ! J'ai fait un commit sur github, et j'étais maintenant heureux que la vulnérabilité ait disparu.

Le fil semble avoir du mal à résoudre ces problèmes (ou n'est pas destiné à le faire).

Si vous rencontrez ce problème lorsque vous construisez avec yarn, essayez de passer à npm !

3voto

VonC Points 414372

D'après ce que j'ai compris, ce n'est pas une bonne pratique de supprimer le fichier package-lock.json et de le régénérer.

Pourtant, c'est ce qui est généralement fait dans ce cas.
Voir par exemple ang angular/angular-cli problème 8534 qui est résolu par PR 8535 .
Cela conduit un projet dépendant comme frees-io/freestyle-opscenter-webclient à actualiser son package-lock.json : PR 31 .

0 votes

La régénération du fichier package-lock.json ne semble pas résoudre le problème.

0 votes

@xianshenglu OK, je vais laisser la réponse ici au cas où cela aiderait d'autres personnes.

0 votes

Je reçois l'avertissement pour un blocage de paquet dans un ancien commit. Comment diable puis-je corriger quelque chose dans l'historique sans le réécrire ?

3voto

adrianmc Points 889

La façon la plus simple et la plus facile de résoudre ce problème est la suivante :

  1. npm install <dep>
  2. npm uninstall <dep>
  3. npm update
  4. npm install

De : https://github.com/Microsoft/vscode/issues/48783#issuecomment-384873041

1 votes

Le mien se trouve uniquement dans les dépendances (package-lock.json). Il suffit donc de suivre les étapes 1 et 2 pour résoudre mon problème. A la vôtre !

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