Méthode appropriée pour corriger une vulnérabilité de sécurité potentielle dans une dépendance définie dans package-lock.json


88

Github m'a donné cette erreur sur l'un de mes référentiels.

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.jsonfichier. À ma connaissance, il n'est pas recommandé de supprimer le package-lock.jsonfichier et de le régénérer. Cependant, je ne vois aucun autre moyen de résoudre ce problème. Si je rejette cette faille de sécurité, elle réapparaîtra quelques jours plus tard. Des idées? Merci!



Réponses:


67

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

npm audit fix

Ancienne réponse:

Vous devriez essayer d'identifier le nom du package problématique, puis exécuter

npm install package-name

en remplaçant le nom du paquet, évidemment.

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

npm install package-name@^1.2

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


1
... et pour 'identifier le nom du package problématique', vous pouvez exécuter npm ls vulnerability-name. Cela répertorie les dépendants de la vulnérabilité, que vous pouvez ensuite mettre à jour / installer. (comme mentionné assez peu clairement dans la réponse de @ RileyManda)
Sjeiti

1
npm audit fix corrige proprement ce problème pour moi maintenant.
Kaito

9
Il ajoutera package-namedans dependenciesdes package.json. Je ne veux pas de ça.
diaporamap2

7

Pour résoudre ce problème:

Solution 1: recherchez 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

Puis poussez 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. Changez 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

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

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


4

J'avais le même problème avec une vulnérabilité de sécurité lodash, dans un projet que je construisais avec du fil. Github les a signalés comme des 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écutez npm ls lodash.

Cela a révélé que dans mon cas, l'erreur était dans les scripts de réaction . Google rapide pour les problèmes avec les scripts de réaction et lodash a révélé qu'il s'agissait d'un problème connu.

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

Après avoir 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 lodashmontrait maintenant les dernières versions de dépendances utilisées - hourra! Engagé dans github, et il était maintenant heureux que la vulnérabilité ait disparu.

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

Si vous rencontrez ce problème lors de la construction avec du fil, essayez de passer [back] à npm!


3

À ma connaissance, il n'est pas recommandé de supprimer le fichier package-lock.json et de le régénérer.

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


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

@xianshenglu OK, je vais laisser la réponse ici au cas où cela aiderait les autres.
VonC le

Je reçois l'avertissement pour un verrou de package dans un ancien commit. Comment diable pourrais-je réparer quelque chose dans l'histoire sans la réécrire?
pishpish

@destoryer Que je ne sais pas: essayez de poser une nouvelle question plus en détail (OS, version de npm, ...)
VonC

1
Cela a résolu mon problème. Merci pour le conseil.
Riche le


1

vulnérabilités de sécurité connues et doivent être mises à jour.

Depuis le 23 mai 2019, vous disposez désormais de " Dependabot: correctifs de sécurité automatisés "

Grâce à l'intégration de Dependabot, nous avons publié des correctifs de sécurité automatisés en tant que version bêta publique.

Les correctifs de sécurité automatisés sont des pull requests générées par GitHub pour corriger les vulnérabilités de sécurité.
Ils automatisent une partie fastidieuse du flux de travail et permettent aux développeurs de maintenir facilement leurs dépendances à jour.

En savoir plus sur « Configuration des correctifs de sécurité automatisés »

Remarque: les correctifs de sécurité automatiques sont disponibles en version bêta et sont susceptibles d'être modifiés.

Vous pouvez activer les correctifs de sécurité automatiques pour tout référentiel utilisant des alertes de sécurité et le graphique de dépendance.
Nous activerons automatiquement les correctifs de sécurité automatiques dans chaque référentiel utilisant des alertes de sécurité et le graphique de dépendance au cours des prochains mois, à partir de mai 2019.


J'ai eu des résultats mitigés avec ce bot. Je préfère faire manuellement npm auditet / ou npm audit fix.
Fuhrmanator

@Fuhrmanator OK. Vous avez mentionné medium.com/coinmonks/... dans un précédent commentaire?
VonC

0

Cela fonctionne pour moi. désinstallez toutes vos dépendances et réinstallez-le

Par exemple

à partir de package.json voir la liste de vos dépendances

{
"name": "ebook-saler",
  "version": "1.0.0",
  "description": "App for selling ebooks",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "author": "Md Shayon",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "express-handlebars": "^3.1.0",
    "hoek": "^6.1.3",
    "stripe": "^7.5.0"
  }
}

Suivez la commande pour cela

npm uninstall body-parser express express-handlebars hoek stripe
npm install body-parser express express-handlebars hoek stripe
git commit -m "updated"
git push

0
  1. Sur GitHub, accédez à la page principale du référentiel.
  2. Sous le nom de votre référentiel, cliquez sur Sécurité.
  3. Cliquez sur l'alerte que vous souhaitez afficher.
  4. Passez en revue les détails de la vulnérabilité et, si disponible, la demande d'extraction contenant le correctif de sécurité automatisé.
  5. Si vous n'avez pas encore de correctif de sécurité automatisé pour l'alerte, vous pouvez éventuellement créer une demande d'extraction pour résoudre la vulnérabilité, cliquez sur Créer un correctif de sécurité automatisé.
  6. Lorsque vous êtes prêt à mettre à jour votre dépendance et à résoudre la vulnérabilité, fusionnez la demande d'extraction.

Voir les détails


0

essayez npm audit fix, cela résoudra de nombreux avertissements

puis npm i [package.name]@xxx

par exemple:

"dependencies": {
  "lodash": ">=4.17.13"
}

npm i lodash@4.17.13

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.