npm ERR! 404 Nicht gefunden: event-stream@3.3.6


85

Ich versuche mein Projekt bereitzustellen und erhalte plötzlich diesen Fehler.

npm ERR! 404 Nicht gefunden: event-stream@3.3.6


1
npm hat dieses Paket abgelehnt. Überprüfen Sie github.com/webpack/webpack-cli/issues/698
Prayag C. Patel

1
Die Frage wurde auf Meta diskutiert: meta.stackoverflow.com/questions/378071/…
Roman Pokrovskij

Nur das Löschen der Datei package-lock.json und die anschließende Installation von npm funktionieren einwandfrei.
Jitendra Pawar

Antworten:


187

tldr;

Heiliger Bimbam! Es stellt sich heraus, dass das Event-Stream-Paket eine Sicherheitslücke aufwies, die es einem Hacker ermöglichte, Bitcoin zu stehlen.

Um dies zu beheben, müssen Sie Ihr event-streamPaket aktualisieren .

  1. Löschen Sie den node_modulesOrdner.
  2. Löschen Sie die package-lock.jsonDatei.
  3. Ausführen npm install.

Dies sollte Ihre Pakete auf eine sichere Version aktualisieren und Sie sollten bereit sein, loszulegen.

Und hier ist die offizielle Antwort aus dem NPM-Blog:

Details zum Ereignis-Stream-Vorfall Dies ist eine Analyse des Ereignis-Stream-Vorfalls, von dem viele von Ihnen Anfang dieser Woche Kenntnis erlangt haben. npm reagiert sofort auf betriebliche Bedenken und Probleme, die die Sicherheit unserer Community beeinträchtigen. In der Regel führen wir jedoch gründlichere Analysen durch, bevor wir Vorfälle besprechen. Wir wissen, dass Sie gewartet haben.

Am Morgen des 26. November wurde das Sicherheitsteam von npm über ein bösartiges Paket informiert, das den Weg in den Event-Stream gefunden hatte, ein beliebtes npm-Paket. Nach dem Testen der Malware reagierte npm Security mit dem Entfernen von flatmap-stream und event-stream@3.3.6 aus der Registrierung und dem Besitz des event-stream-Pakets, um weiteren Missbrauch zu verhindern.

Das bösartige Paket war Version 0.1.1 von Flatmap-Stream. Dieses Paket wurde am 9. September 2018 in Version 3.3.6 von einem neuen Betreuer als direkte Abhängigkeit des Event-Stream-Pakets hinzugefügt. Das Event-Stream-Paket ist weit verbreitet, aber der Schadcode zielte auf Entwickler eines Unternehmens ab, das eine sehr spezielle Entwicklungsumgebung eingerichtet hatte: Das Ausführen der Nutzdaten in einer anderen Umgebung hat keine Auswirkungen. Dieses spezielle Targeting bedeutet, dass letztendlich die meisten Entwickler nicht betroffen wären, selbst wenn sie das schädliche Modul versehentlich installiert hätten.

Der injizierte Code zielt auf die Copay-Anwendung ab. Wenn ein Entwickler bei Copay eines seiner Release-Build-Skripte ausführt, wird der resultierende Code geändert, bevor er in die Anwendung gebündelt wird. Der Code wurde entwickelt, um Kontodaten und private Schlüssel von Konten mit einem Kontostand von mehr als 100 Bitcoin oder 1000 Bitcoin Cash zu sammeln.

Die erste Antwort von Copay war, dass keine Builds, die diesen Schadcode enthalten, für die Öffentlichkeit freigegeben wurden. Wir haben jedoch jetzt die Bestätigung von Copay, dass "der Schadcode in den Versionen 5.0.2 bis 5.1.0 bereitgestellt wurde".

Der Angriff Dieser Angriff begann als Social-Engineering-Angriff. Der Angreifer, der sich als Betreuer ausgibt, übernahm die Verwaltung des Event-Stream-Moduls.

Die technischen Details Hier sind einige technische Details, die wir kennen, für diejenigen unter Ihnen, die daran interessiert sind.

Der injizierte Code:

Einlesen von AES-verschlüsselten Daten aus einer als Testvorrichtung getarnten Datei Abrufen der npm-Paketbeschreibung des Moduls, das sie importiert hat, mithilfe einer automatisch festgelegten Umgebungsvariablen Verwendet die Paketbeschreibung als Schlüssel zum Entschlüsseln eines Datenblocks, der aus der getarnten Datei abgerufen wurde Die entschlüsselten Daten waren Teil eines Moduls, das dann im Speicher kompiliert und ausgeführt wurde.

Dieses Modul hat die folgenden Aktionen ausgeführt:

Entschlüsselt einen weiteren Datenblock aus der getarnten Datei Verkettet ein kleines, kommentiertes Präfix vom ersten entschlüsselten Block bis zum Ende des zweiten entschlüsselten Blocks Kleinere Dekodierungsaufgaben ausgeführt, um den verketteten Codeblock von ungültigem JS in gültiges JS umzuwandeln (wir glauben, dass dies der Fall war) getan, um der Erkennung durch dynamische Analysetools zu entgehen) Schrieb diesen verarbeiteten JS-Block in eine Datei, die in einer Abhängigkeit gespeichert war, die von den Build-Skripten gepackt werden würde: Der Codeblock, der ausgeschrieben wurde, war der eigentliche Schadcode, der ausgeführt werden sollte auf Geräten, die den Endbenutzern von Copay gehören.

Dieser Code würde Folgendes tun:

Ermitteln Sie die aktuelle Umgebung: Mobile / Cordova / Electron Überprüfen Sie das Guthaben von Bitcoin und Bitcoin auf dem Copay-Konto des Opfers. Wenn das aktuelle Guthaben mehr als 100 Bitcoin oder 1000 Bitcoin Cash betrug: Ernten Sie die Kontodaten des Opfers vollständig. Ernten Sie die privaten Schlüssel des Opfers Senden Sie die Kontodaten / privaten Schlüssel des Opfers an einen Erfassungsdienst, der unter 111.90.151.134 ausgeführt wird. Für Benutzer der Copay-App empfiehlt bitpay: "Wenn Sie eine Version von 5.0.2 bis 5.1.0 verwenden, sollten Sie die Copay-App nicht ausführen oder öffnen."

Für npm-Benutzer können Sie überprüfen, ob Ihr Projekt die anfällige Abhängigkeit enthält, indem Sie npm audit ausführen. Wenn Sie die betroffene Version dieses Ereignisstroms installiert haben, empfehlen wir, dass Sie so bald wie möglich auf eine spätere Version aktualisieren.


7
Oder machen Sie einfach npm list event-streamalle Top-Level-Pakete und aktualisieren Sie sie
Phil

4
Das Löschen der Paketsperre klingt nach einer schlechten Idee. Bitte teilen Sie den Link zum NPM-Blogbeitrag.
Ben Sinclair

Beeindruckend. Gibt es einen Link zu dem Artikel, den Sie zitiert haben? BEARBEITEN - Gefunden: blog.npmjs.org/post/180565383195/…
friederbluemle

7

Eigentlich müssen wir nicht alle Pakete aktualisieren, die von event-stream@3.3.6 abhängen.

Sie können das öffnen package-lock.json, alle Ereignisstromreferenzen entfernen und npm installerneut aufrufen . Es wird schneller sein.

Nachdem, npm shrinkwrap && mv npm-shrinwrap.json package-lock.json sollten nur die Ereignisstromreferenzen und nicht die gesamte Datei aktualisiert werden


4

Befolgen Sie die folgenden Methoden:

  1. Löschen Sie die Dateien node_modules und package_lock.json

  2. Führen Sie den npm list event-stream aus

  3. Führen Sie das npm-Audit aus
  4. Führen Sie die Überprüfung des npm-Cache aus
  5. Führen Sie npm install aus
  6. Führen Sie git add aus. (erforderliche Dateien hinzufügen)
  7. Führen Sie git commit aus (übernehmen Sie Ihre Änderungen)
  8. Führen Sie git push aus (Push your code)

3

Ich löse dieses Problem mit den folgenden Schritten:

  1. Öffnen Sie Ihr aktuelles Protokoll für diesen Fehler in /node_cache/_logs/xxxx-xx-xxx-debug.log
  2. Finden Sie die Wurzel des event-streamBlattes heraus, zum Beispiel:


    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
  1. In diesem Fall ist das Stammverzeichnis nodemon, sodass Sie Folgendes beheben können: npm install nodemon@1.18.4
  2. npm jetzt erfolgreich installieren

2

Ich habe npm-run-all in package.json von 4.1.3 auf 4.1.5 aktualisiert (im Ereignisstrom der Sperrdatei entfernen). Dann npm installieren.


1

Wie in den Kommentaren erwähnt, war das zugrunde liegende Problem, dass package-lock.json(die Sperrdatei) ein veraltetes Paket enthielt. Durch Löschen der Sperrdatei und erneutes Installieren der Abhängigkeiten wurde das Problem behoben.

Der schnellste Weg, dies zu tun, sind diese 2 Schritte:

  • Löschen Sie die package-lock.json Datei
  • Geben Sie npm i(oder npm install) ein, um Abhängigkeiten neu zu installieren
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.