Ich versuche mein Projekt bereitzustellen und erhalte plötzlich diesen Fehler.
npm ERR! 404 Nicht gefunden: event-stream@3.3.6
Ich versuche mein Projekt bereitzustellen und erhalte plötzlich diesen Fehler.
npm ERR! 404 Nicht gefunden: event-stream@3.3.6
Antworten:
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-stream
Paket aktualisieren .
node_modules
Ordner.package-lock.json
Datei.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.
npm list event-stream
alle Top-Level-Pakete und aktualisieren Sie sie
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 install
erneut 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
Befolgen Sie die folgenden Methoden:
Löschen Sie die Dateien node_modules und package_lock.json
Führen Sie den npm list event-stream aus
Ich löse dieses Problem mit den folgenden Schritten:
event-stream
Blattes 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
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.
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:
package-lock.json
Dateinpm i
(oder npm install
) ein, um Abhängigkeiten neu zu installieren