npm ERR! 404 introuvable: [email protected]

85

J'essaye de déployer mon projet et j'obtiens soudainement cette erreur.

npm ERR! 404 introuvable: [email protected]

Mat
la source
1
npm a désapprouvé ce package. vérifiez github.com/webpack/webpack-cli/issues/698
Prayag C. Patel
1
la question a été discutée sur meta: meta.stackoverflow.com/questions/378071/…
Roman Pokrovskij
La suppression du fichier package-lock.json, puis l'installation de npm fonctionne bien.
Jitendra Pawar

Réponses:

189

tldr;

Sainte vache! Il s'avère que le package de flux d'événements avait une vulnérabilité qui permettait à un pirate de voler du bitcoin.

Pour résoudre ce problème, vous devez mettre à jour votre event-streampackage.

  1. Supprimez le node_modulesdossier.
  2. Supprimez le package-lock.jsonfichier.
  3. Courez npm install.

Cela devrait mettre à jour vos packages vers une version sûre et vous devriez être prêt à partir.

Et voici la réponse officielle du blog NPM:

Détails sur l'incident de flux d'événements Il s'agit d'une analyse de l'incident de flux d'événements dont beaucoup d'entre vous ont pris connaissance plus tôt cette semaine. npm agit immédiatement pour résoudre les problèmes opérationnels et les problèmes qui affectent la sécurité de notre communauté, mais nous effectuons généralement une analyse plus approfondie avant de discuter des incidents - nous savons que vous avez attendu.

Le matin du 26 novembre, l'équipe de sécurité de npm a été informée d'un package malveillant qui avait fait son chemin dans event-stream, un package npm populaire. Après avoir trié le malware, npm Security a répondu en supprimant flatmap-stream et [email protected] du registre et en prenant possession du package event-stream pour éviter d'autres abus.

Le package malveillant était la version 0.1.1 de flatmap-stream. Ce package a été ajouté en tant que dépendance directe du package event-stream par un nouveau responsable le 9 septembre 2018, dans la version 3.3.6. Le package de flux d'événements est largement utilisé, mais le code malveillant ciblait les développeurs d'une entreprise qui avait une configuration d'environnement de développement très spécifique: l'exécution de la charge utile dans un autre environnement n'a aucun effet. Ce ciblage spécifique signifie qu'en fin de compte, la plupart des développeurs ne seraient pas affectés même s'ils avaient installé par erreur le module malveillant.

Le code injecté cible l'application Copay. Lorsqu'un développeur chez Copay exécute l'un de ses scripts de version de version, le code résultant est modifié avant d'être intégré à l'application. Le code a été conçu pour collecter les détails du compte et les clés privées des comptes ayant un solde supérieur à 100 Bitcoin ou 1000 Bitcoin Cash.

La réponse initiale de Copay a été qu'aucune compilation contenant ce code malveillant n'a été rendue publique, mais nous avons maintenant la confirmation de Copay que «le code malveillant a été déployé sur les versions 5.0.2 à 5.1.0».

L'attaque Cette attaque a commencé comme une attaque d'ingénierie sociale. L'attaquant, se faisant passer pour un mainteneur, a pris la responsabilité de la maintenance du module de flux d'événements.

Les détails techniques Voici quelques détails techniques que nous connaissons, pour ceux d'entre vous intéressés par cela.

Le code injecté:

Lire des données cryptées AES à partir d'un fichier déguisé en appareil de test Récupération de la description du package npm du module qui l'a importé, en utilisant une variable d'environnement définie automatiquement.Utilisation de la description du package comme clé pour décrypter un morceau de données extraites du fichier déguisé Les données déchiffrées faisaient partie d'un module, qui était ensuite compilé en mémoire et exécuté.

Ce module a effectué les actions suivantes:

Déchiffré un autre morceau de données du fichier déguisé Concaténé un petit préfixe commenté du premier morceau déchiffré à la fin du deuxième morceau déchiffré Exécution de tâches de décodage mineures pour transformer le bloc concaténé de code de JS invalide en JS valide (nous pensons que c'était fait pour échapper à la détection par les outils d'analyse dynamique) Écrit ce bloc traité de JS dans un fichier stocké dans une dépendance qui serait empaquetée par les scripts de construction: Le morceau de code qui a été écrit était le code malveillant réel, destiné à être exécuté sur les appareils appartenant aux utilisateurs finaux de Copay.

Ce code ferait ce qui suit:

Détecter l'environnement actuel: Mobile / Cordova / Electron Vérifier les soldes Bitcoin et Bitcoin Cash sur le compte quote-part de la victime Si le solde actuel était supérieur à 100 Bitcoin, ou 1000 Bitcoin Cash: Récoltez les données du compte de la victime en entier Récupérez les clés privées de la quote-part de la victime Envoyez les données de compte / clés privées de la victime à un service de collecte fonctionnant sur 111.90.151.134. Pour les utilisateurs de l'application Copay, bitpay recommande: «Si vous utilisez une version de 5.0.2 à 5.1.0, vous ne devez pas exécuter ou ouvrir l'application Copay.»

Pour les utilisateurs de npm, vous pouvez vérifier si votre projet contient la dépendance vulnérable en exécutant l'audit npm. Si vous avez installé la version concernée de ce flux d'événements, nous vous recommandons de mettre à jour vers une version ultérieure dès que possible.

Mat
la source
7
Ou tout simplement faire npm list event-streamet mettre à jour tous les packages de niveau supérieur
Phil
4
La suppression de package-lock semble être une mauvaise idée. Veuillez partager le lien vers l'article de blog NPM.
pronebird
Sensationnel. Y a-t-il un lien vers l'article que vous avez cité? EDIT - Trouvé: blog.npmjs.org/post/180565383195/…
friederbluemle
7

En fait, nous n'avons pas besoin de mettre à jour tous les packages qui dépendent de [email protected].

Vous pouvez ouvrir le package-lock.json, supprimer toutes les références de flux d'événements et appeler à npm installnouveau. Ce sera plus rapide.

Après cela, npm shrinkwrap && mv npm-shrinwrap.json package-lock.jsondevrait mettre à jour uniquement les références du flux d'événements et non le fichier entier

Matheus Teixeira
la source
4

Suivez les méthodes ci-dessous:

  1. Supprimer les fichiers node_modules et package_lock.json

  2. Exécutez le flux d'événements de la liste npm

  3. Exécuter l'audit npm
  4. Exécuter la vérification du cache npm
  5. Exécutez l'installation de npm
  6. Exécutez git add. (ajouter les fichiers requis)
  7. Exécutez git commit (validez vos modifications)
  8. Exécutez git push (transmettez votre code)
Basavaraj Hadimani
la source
3

Je résous ce problème par les étapes suivantes:

  1. ouvrez votre dernier journal pour cette erreur dans /node_cache/_logs/xxxx-xx-xxx-debug.log
  2. découvrez la racine de la event-streamfeuille, par exemple:


    45 silly saveTree +-- nodemon@1.18.4
    45 silly saveTree | +-- chokidar@2.0.4
    45 silly saveTree | +-- pstree.remy@1.1.0
    45 silly saveTree | | `-- [email protected]
    45 silly saveTree | |   `-- event-stream@3.3.6
    45 silly saveTree | |     +-- duplexer@0.1.1
    45 silly saveTree | |     +-- from@0.1.7
    45 silly saveTree | |     +-- pause-stream@0.0.11
    45 silly saveTree | |     `-- [email protected]

  1. dans ce cas, la racine est nodemon, vous pouvez donc corriger par: npm install [email protected]
  2. npm installer avec succès maintenant
Susie Chang
la source
2

J'ai mis à jour npm-run-all de 4.1.3 à 4.1.5 dans package.json (supprimer dans le flux d'événements du fichier de verrouillage) Puis npm install.

Evilripper
la source
2

Comme mentionné dans les commentaires, le problème sous-jacent était que package-lock.json(le fichier de verrouillage) contenait un package obsolète. La suppression du fichier de verrouillage et la réinstallation des dépendances ont résolu le problème.

Le moyen le plus rapide de le faire est ces 2 étapes:

  • supprimer le package-lock.jsonfichier
  • tapez npm i(ou npm install) pour réinstaller les dépendances
Huseyin
la source