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?
_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:
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
.