J'essaye de déployer mon projet et j'obtiens soudainement cette erreur.
npm ERR! 404 introuvable: event-stream@3.3.6
J'essaye de déployer mon projet et j'obtiens soudainement cette erreur.
npm ERR! 404 introuvable: event-stream@3.3.6
Réponses:
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-stream
package.
node_modules
dossier.package-lock.json
fichier.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 event-stream@3.3.6 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.
npm list event-stream
et mettre à jour tous les packages de niveau supérieur
En fait, nous n'avons pas besoin de mettre à jour tous les packages qui dépendent de event-stream@3.3.6.
Vous pouvez ouvrir le package-lock.json
, supprimer toutes les références de flux d'événements et appeler à npm install
nouveau. 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
Suivez les méthodes ci-dessous:
Supprimer les fichiers node_modules et package_lock.json
Exécutez le flux d'événements de la liste npm
Je résous ce problème par les étapes suivantes:
event-stream
feuille, 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 | | `-- ps-tree@1.2.0
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 | | `-- split@0.3.3
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.
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:
package-lock.json
fichiernpm i
(ou npm install
) pour réinstaller les dépendances