web-dev-qa-db-fra.com

npm ERR! 404 Not Found: [email protected]

J'essaie de déployer mon projet et je reçois soudainement cette erreur.

npm ERR! 404 Not Found: [email protected]

74
Matt

tldr;

Vache sacrée! Il s'est avéré que le paquet event-stream avait une vulnérabilité qui permettait à un pirate de voler des bitcoins.

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

  1. Supprimez le dossier node_modules.
  2. Supprimez le fichier package-lock.json.
  3. Exécutez npm install.

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

Et voici la réponse officielle du blog du NPM:

Détails de l'incident du flux d'événements Il s'agit d'une analyse de l'incident du flux d'événements dont beaucoup d'entre vous ont pris connaissance plus tôt cette semaine. npm agit immédiatement pour répondre aux préoccupations opérationnelles et aux 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é avertie d’un paquet malveillant qui avait fait son chemin dans event-stream, un paquetage populaire de npm. Après avoir testé le logiciel malveillant, npm Security a répondu en supprimant flatmap-stream et [email protected] du registre et en s'appropriant le package de flux d'événements pour éviter de nouveaux abus.

Le paquet malveillant était la version 0.1.1 de flatmap-stream. Ce package a été ajouté en tant que dépendance directe du package de flux d'événements par un nouveau responsable le 9 septembre 2018, dans la version 3.3.6. Le package event-stream est largement utilisé, mais le code malveillant ciblait les développeurs d'une entreprise disposant d'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 de Copay exécute l'un de ses scripts de génération, le code résultant est modifié avant d'être intégré à l'application. Le code a été conçu pour collecter les informations de compte et les clés privées de comptes ayant un solde supérieur à 100 Bitcoin ou 1000 Bitcoin Cash.

La réponse initiale de Copay était qu’aucune version contenant ce code malveillant n’était publiée, 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 responsable, a pris en charge la maintenance du module de flux d’événements.

Les détails techniques Voici quelques détails techniques que nous connaissons, pour ceux qui sont intéressés par ceci.

Le code injecté:

Lecture de données chiffré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é, à l'aide d'une variable d'environnement définie automatiquement Utilisation de la description du package comme clé pour déchiffrer une partie des données extraites du fichier déguisé Les données déchiffrées faisaient partie d’un module, qui a ensuite été compilé en mémoire et exécuté.

Ce module a effectué les actions suivantes:

Déchiffré un autre bloc de données du fichier déguisé Concaténé un petit préfixe commenté du premier bloc déchiffré à la fin du deuxième bloc déchiffré Exécuté des tâches de décodage mineures pour transformer le bloc de code concaténé de JS invalide en JS valide (nous fait pour échapper à la détection à l'aide d'outils d'analyse dynamique) a écrit ce bloc traité de JS dans un fichier stocké dans une dépendance qui serait empaqueté par les scripts de génération: le bloc de code qui a été écrit était le code malveillant réel, destiné à être exécuté sur des 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 de trésorerie Bitcoin et Bitcoin sur le compte Copay de la victime Si le solde actuel était supérieur à 100 Bitcoin ou à 1000 Bitcoin Cash: Récolte intégrale des données du compte de la victime Récolte intégrale des clés privées de la victime Envoyez les données/clés privées du compte de la victime à un service de collecte exécuté sous 111.90.151.134. Bitpay recommande aux utilisateurs de l'application Copay: "Si vous utilisez une version de la version 5.0.2 à la version 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 npm audit. Si vous avez installé la version impactée de ce flux d'événements, nous vous recommandons de mettre à jour vers une version ultérieure le plus rapidement possible.

159
Matt

En réalité, 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 à nouveau npm install. Ce sera plus rapide.

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

3
Matheus Teixeira

Suivez les méthodes ci-dessous:

  1. Supprimer les fichiers node_modules et package_lock.json

  2. Exécuter npm list event-stream

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

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

2
Evilripper

Je résous ce problème en procédant comme suit:

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


    45 silly saveTree +-- [email protected]
    45 silly saveTree | +-- [email protected]
    45 silly saveTree | +-- [email protected]
    45 silly saveTree | | `-- [email protected]
    45 silly saveTree | |   `-- [email protected]
    45 silly saveTree | |     +-- [email protected]
    45 silly saveTree | |     +-- [email protected]
    45 silly saveTree | |     +-- [email protected]
    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
1
Susie Chang