web-dev-qa-db-fra.com

Comment corriger les vulnérabilités npm manuellement?

Quand je lance 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 génère 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 supposé être réparé par l'utilisateur?

Quand je lance npm audit, il me donne une liste de tables, semblable à ceci:

┌───────────────┬──────────────────────────────────────────────────────────────┐
│ 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 correction de la page liée indique Update to version 4.17.5 or later.. Cependant, dans /node_modules/browser-sync/package.json, il y a des lignes:

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

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

  "_from": "lodash@^4.17.4",
  "_id": "[email protected]",

Je crois que la version affichée dans "_id", pas dans "_from", est donc correcte, mais les vulnérabilités apparaissent toujours dans la liste d'audit.

Je suis toujours nouveau dans node.js et ces messages me déroutent beaucoup. Est-il possible de résoudre le problème manuellement ou de supprimer ces messages, je ne peux rien faire avec?

32
Jakupov

_lodash-cli_ dans devDependencies n'affecte pas le fonctionnement de _browser-sync_ dans votre projet, devDependencies sont ignorés lorsqu'un package est installé en tant que dépendance.

Le rapport audit indique que c'est _easy-extender_ qui a la dépendance lodash:

_browser-sync > easy-extender > lodash        
_

Il dépend de Lodash , alors que le problème était corrigé dans Lodash 4. Le problème pourrait être résolu en forçant _easy-extender_, en le mettant à jour et en l'installant à la place du package du registre public 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é introduisant ce risque a été utilisée. Cela ne signifie pas non plus que même s'il est utilisé, cela présente un risque réel en raison de son utilisation.

_browser-sync_ est un outil de développement qui n'est pas utilisé en production. Il existe peu de scénarios dans lesquels ses vulnérabilités pourraient être exploitées. Et Prototype Pollution n'est pas du tout une vulnérabilité, mais simplement un avis indiquant qu'un paquet ne respecte pas les bonnes pratiques, il peut être ignoré.

En règle générale, voici le moyen de corriger les vulnérabilités signalées:

  • Faire un contrôle de santé
  • En cas de problème réel, recherchez dans le référentiel du paquet vulnérable les problèmes existants et les PR .
  • Dans le cas contraire, soumettez un problème.
  • Mettez en place un référentiel ou utilisez les relations publiques existantes en tant que dépendance à git jusqu'à ce qu'elles soient corrigées dans la version NPM
  • En cas de dépendances imbriquées, faites-le à plusieurs niveaux d'imbrication

La plupart du temps, il est prévu de ne pas dépasser le contrôle de cohérence.

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

11
Estus Flask