npm ERR! 404 Non trovato: event-stream@3.3.6


86

Sto provando a distribuire il mio progetto e improvvisamente ricevo questo errore.

npm ERR! 404 Non trovato: event-stream@3.3.6


1
npm ha deprecato questo pacchetto. controllare github.com/webpack/webpack-cli/issues/698
Prayag C.Patel

1
la domanda è stata discussa su meta: meta.stackoverflow.com/questions/378071/…
Roman Pokrovskij

Basta eliminare il file package-lock.json e quindi installare npm funziona bene.
Jitendra Pawar,

Risposte:


192

tldr;

Mucca sacra! Si scopre che il pacchetto event-stream aveva una vulnerabilità che consentiva a un hacker di rubare bitcoin.

Per risolverlo è necessario aggiornare il event-streampacchetto.

  1. Elimina la node_modulescartella.
  2. Elimina il package-lock.jsonfile.
  3. Corri npm install.

Questo dovrebbe aggiornare i tuoi pacchetti a una versione sicura e dovresti essere a posto.

Ed ecco la risposta ufficiale dal blog di NPM:

Dettagli sull'incidente del flusso di eventi Questa è un'analisi dell'incidente del flusso di eventi di cui molti di voi sono venuti a conoscenza all'inizio di questa settimana. npm agisce immediatamente per affrontare i problemi operativi e i problemi che influiscono sulla sicurezza della nostra comunità, ma in genere eseguiamo analisi più approfondite prima di discutere gli incidenti: sappiamo che stavi aspettando.

La mattina del 26 novembre, il team di sicurezza di npm è stato informato di un pacchetto dannoso che si era fatto strada in event-stream, un popolare pacchetto npm. Dopo aver analizzato il malware, npm Security ha risposto rimuovendo flatmap-stream e event-stream@3.3.6 dal registro e assumendo la proprietà del pacchetto event-stream per prevenire ulteriori abusi.

Il pacchetto dannoso era la versione 0.1.1 di flatmap-stream. Questo pacchetto è stato aggiunto come dipendenza diretta del pacchetto event-stream da un nuovo manutentore il 9 settembre 2018, nella versione 3.3.6. Il pacchetto event-stream è ampiamente utilizzato, ma il codice dannoso ha preso di mira gli sviluppatori di un'azienda che aveva una configurazione dell'ambiente di sviluppo molto specifica: eseguire il payload in qualsiasi altro ambiente non ha alcun effetto. Questo targeting specifico significa che, in definitiva, la maggior parte degli sviluppatori non sarebbe interessata anche se avessero installato per errore il modulo dannoso.

Il codice iniettato è destinato all'applicazione Copay. Quando uno sviluppatore di Copay esegue uno dei propri script di build di rilascio, il codice risultante viene modificato prima di essere raggruppato nell'applicazione. Il codice è stato progettato per raccogliere i dettagli dell'account e le chiavi private da account con un saldo di oltre 100 Bitcoin o 1000 Bitcoin Cash.

La risposta iniziale di Copay è stata che nessuna build contenente questo codice dannoso è stata rilasciata al pubblico, ma ora abbiamo la conferma da Copay che "il codice dannoso è stato distribuito nelle versioni da 5.0.2 a 5.1.0".

L'attacco Questo attacco è iniziato come un attacco di ingegneria sociale. L'aggressore, fingendosi un manutentore, ha assunto la gestione del modulo event-stream.

I dettagli tecnici Ecco alcuni dettagli tecnici di cui siamo a conoscenza, per quelli di voi interessati a questo.

Il codice iniettato:

Lettura dei dati crittografati AES da un file camuffato da dispositivo di prova Ha preso la descrizione del pacchetto npm del modulo che lo ha importato, utilizzando una variabile d'ambiente impostata automaticamente Ha utilizzato la descrizione del pacchetto come chiave per decrittografare una parte di dati estratti dal file mascherato I dati decrittografati facevano parte di un modulo, che è stato poi compilato in memoria ed eseguito.

Questo modulo ha eseguito le seguenti azioni:

Decrittografato un altro blocco di dati dal file mascherato Concatenato un piccolo prefisso commentato dal primo blocco decrittografato alla fine del secondo blocco decrittografato Eseguite attività di decodifica minori per trasformare il blocco concatenato di codice da JS non valido a JS valido (crediamo che fosse fatto per eludere il rilevamento da parte degli strumenti di analisi dinamica) Ha scritto questo blocco elaborato di JS in un file memorizzato in una dipendenza che sarebbe stato impacchettato dagli script di compilazione: Il pezzo di codice che è stato scritto era il codice dannoso effettivo, destinato a essere eseguito sui dispositivi di proprietà degli utenti finali di Copay.

Questo codice farebbe quanto segue:

Rileva l'ambiente attuale: Mobile / Cordova / Electron Controlla i saldi di Bitcoin e Bitcoin Cash sul conto copay della vittima Se il saldo corrente era maggiore di 100 Bitcoin o 1000 Bitcoin Cash: Raccogli i dati dell'account della vittima per intero Raccogli le chiavi private copay della vittima Invia i dati dell'account della vittima / le chiavi private a un servizio di raccolta in esecuzione su 111.90.151.134. Per gli utenti dell'app Copay, bitpay consiglia: "Se stai utilizzando una versione dalla 5.0.2 alla 5.1.0, non dovresti eseguire o aprire l'app Copay".

Per gli utenti npm, puoi verificare se il tuo progetto contiene la dipendenza vulnerabile eseguendo npm audit. Se hai installato la versione interessata di questo flusso di eventi, ti consigliamo di eseguire l'aggiornamento a una versione successiva il prima possibile.


7
O semplicemente esegui npm list event-streame aggiorna i pacchetti di primo livello
Phil

4
L'eliminazione del blocco del pacchetto sembra una cattiva idea. Si prega di condividere il collegamento al post del blog NPM.
Pronebird

Wow. C'è un link all'articolo che hai citato? EDIT - Trovato: blog.npmjs.org/post/180565383195/…
friederbluemle

7

In realtà non abbiamo bisogno di aggiornare tutti i pacchetti che dipendono da event-stream@3.3.6.

Puoi aprire il file package-lock.json , rimuovere tutti i riferimenti del flusso di eventi e chiamare di npm installnuovo. Sarà più veloce.

Dopodiché, npm shrinkwrap && mv npm-shrinwrap.json package-lock.jsondovrebbe aggiornare solo i riferimenti del flusso di eventi e non l'intero file


4

Segui i seguenti metodi:

  1. Elimina i file node_modules e package_lock.json

  2. Esegui npm list event-stream

  3. Esegui npm audit
  4. Esegui verifica cache npm
  5. Esegui npm install
  6. Esegui git add. (aggiungi i file richiesti)
  7. Esegui git commit (salva le tue modifiche)
  8. Esegui git push (invia il tuo codice)

3

Risolvo questo problema con i seguenti passaggi:

  1. apri il tuo ultimo registro per questo errore in /node_cache/_logs/xxxx-xx-xxx-debug.log
  2. scopri la radice della event-streamfoglia, ad esempio:


    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 questo caso, la radice è nodemon, quindi puoi risolverla con: npm install nodemon@1.18.4
  2. npm si installa con successo ora

3

Come accennato nei commenti, il problema sottostante era il package-lock.json(il file di blocco) conteneva un pacchetto deprecato. L'eliminazione del file di blocco e la reinstallazione delle dipendenze hanno risolto il problema.

Il modo più veloce per farlo è questi 2 passaggi:

  • eliminare il package-lock.jsonfile
  • digitare npm i(o npm install) per reinstallare le dipendenze

2

Ho aggiornato npm-run-all da 4.1.3 a 4.1.5 in package.json (rimuovi nel flusso di eventi del file di blocco) Quindi installa npm.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.