web-dev-qa-db-fra.com

L'exécution de la commande suggérée ne corrige pas la vulnérabilité de NPM

Après chaque installation d'un nouveau module NPM dans mon projet, j'obtiens l'erreur suivante:

[!] 40 vulnerabilities found - Packages audited: 5840 (0 dev, 299 optional)
    Severity: 8 Low | 24 Moderate | 8 High

Alors je lance npm audit et j'obtiens les détails de chacune des 40 vulnérabilités telles que:

# Run  npm install [email protected]  to resolve 22 vulnerabilities
SEMVER WARNING: Recommended action is a potentially breaking change
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate      │ Prototype pollution                                          │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ hoek                                                         │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ npm                                                          │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ npm > libcipm > npm-lifecycle > node-gyp > request > hawk >  │
│               │ boom > hoek                                                  │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/566                       │
└───────────────┴──────────────────────────────────────────────────────────────┘

ou ca :

# Run  npm update fsevents --depth 2  to resolve 3 vulnerabilities
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low           │ Regular Expression Denial of Service                         │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ debug                                                        │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ chokidar                                                     │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ chokidar > fsevents > node-pre-gyp > tar-pack > debug        │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/534                       │
└───────────────┴──────────────────────────────────────────────────────────────┘

Je lance donc npm install [email protected] (même si j'avais déjà 6.0.1) puis npm update fsevents --depth 2 Mais après cela, je relance npm audit et rien n'a changé, j'ai toujours les 40 mêmes vulnérabilités et certaines d'entre elles sont vraiment effrayantes. Que devrais-je faire ?

18
Ki Jéy

Cela a fonctionné pour moi sur MacOS:

  • Mettez à jour NPM vers la nouvelle version 6.1.0. Il introduit une commande 'npm audit fix', plus d'informations ici .
  • Exécutez le correctif d'audit npm.

Lorsque vous exécutez à nouveau 'npm audit', les seules vulnérabilités restantes devraient être des problèmes de "révision manuelle".

6
Flo

Cela semble être un bogue dans npm 6.0.1 lié à la gestion des dépendances facultatives: https://github.com/npm/npm/issues/20577

2
Josh Rickert

Source: https://github.com/npm/npm/issues/20675 . Un problème fsevents peut être lié au fait que

fsevents ne peut pas être installé sur Windows, vous devrez donc le mettre à jour sur une machine macOS.

C'est un peu étrange, car regarder la solution d'exhnozoaa, à partir de cette date, semble impliquer le contraire:

J'ai pu contourner cela sur Windows avec les étapes suivantes.

  1. Ouvrir package-lock.json dans un éditeur.
  2. Rechercher "fsevents". Trouvez celui qui est un objet directement sous "dependencies".
  3. Supprimer "fsevents" (la clé et l'objet entier).
  4. Depuis le terminal, exécutez npm install.

Cela devrait régénérer cette section avec la dernière version compatible avec les autres packages. Je ne pense pas vraiment que ce soit un bon moyen de le réparer, mais c'est celui qui a fonctionné pour moi.

0
knod