npm ERR! 404 não encontrado: event-stream@3.3.6


86

Estou tentando implantar meu projeto e de repente estou recebendo este erro.

npm ERR! 404 não encontrado: event-stream@3.3.6


1
O npm tornou este pacote obsoleto. verifique github.com/webpack/webpack-cli/issues/698
Prayag C. Patel

1
a questão foi discutida em meta: meta.stackoverflow.com/questions/378071/…
Roman Pokrovskij

Apenas deletar o arquivo package-lock.json e então instalar o npm funciona bem.
Jitendra Pawar

Respostas:


192

tldr;

Vaca sagrada! Acontece que o pacote de fluxo de eventos tinha uma vulnerabilidade que permitia a um hacker roubar bitcoin.

Para corrigir isso, você precisa atualizar seu event-streampacote.

  1. Exclua a node_modulespasta.
  2. Exclua o package-lock.jsonarquivo.
  3. Corra npm install.

Isso deve atualizar seus pacotes para uma versão segura e você deve estar pronto para prosseguir.

E aqui está a resposta oficial do blog do NPM:

Detalhes sobre o incidente do fluxo de eventos Esta é uma análise do incidente do fluxo de eventos do qual muitos de vocês tomaram conhecimento no início desta semana. O npm age imediatamente para tratar de questões e preocupações operacionais que afetam a segurança de nossa comunidade, mas normalmente realizamos análises mais completas antes de discutir incidentes - sabemos que você estava esperando.

Na manhã de 26 de novembro, a equipe de segurança do npm foi notificada sobre um pacote malicioso que entrou no fluxo de eventos, um pacote npm popular. Depois de fazer a triagem do malware, o npm Security respondeu removendo flatmap-stream e event-stream@3.3.6 do Registro e assumindo a propriedade do pacote event-stream para evitar mais abusos.

O pacote malicioso era a versão 0.1.1 do flatmap-stream. Este pacote foi adicionado como uma dependência direta do pacote event-stream por um novo mantenedor em 9 de setembro de 2018, na versão 3.3.6. O pacote de fluxo de eventos é amplamente usado, mas o código malicioso direcionado a desenvolvedores em uma empresa que tinha uma configuração de ambiente de desenvolvimento muito específica: executar a carga em qualquer outro ambiente não tem efeito. Esse direcionamento específico significa que, em última análise, a maioria dos desenvolvedores não seria afetada, mesmo que tivesse instalado o módulo malicioso por engano.

O código injetado tem como alvo o aplicativo Copay. Quando um desenvolvedor no Copay executa um de seus scripts de compilação de lançamento, o código resultante é modificado antes de ser empacotado no aplicativo. O código foi projetado para coletar detalhes de contas e chaves privadas de contas com saldo de mais de 100 Bitcoin ou 1000 Bitcoin em dinheiro.

A resposta inicial do Copay foi que nenhum build contendo esse código malicioso foi lançado ao público, mas agora temos a confirmação do Copay de que “o código malicioso foi implantado nas versões 5.0.2 a 5.1.0”.

O ataque Este ataque começou como um ataque de engenharia social. O invasor, se passando por mantenedor, assumiu a manutenção do módulo de fluxo de eventos.

Os detalhes técnicos Aqui estão alguns detalhes técnicos que conhecemos, para aqueles de vocês interessados.

O código injetado:

Ler dados criptografados em AES de um arquivo disfarçado de dispositivo de teste. Peguei a descrição do pacote npm do módulo que o importou, usando uma variável de ambiente definida automaticamente. Usou a descrição do pacote como uma chave para descriptografar um pedaço de dados extraído do arquivo disfarçado Os dados descriptografados faziam parte de um módulo, que então era compilado na memória e executado.

Este módulo realizou as seguintes ações:

Descriptografou outro pedaço de dados do arquivo disfarçado. Concatenou um pequeno prefixo comentado do primeiro pedaço descriptografado até o final do segundo pedaço descriptografado. Executou tarefas de decodificação menores para transformar o bloco concatenado de código de JS inválido em JS válido (acreditamos que foi feito para evitar a detecção por ferramentas de análise dinâmica) Escreveu este bloco processado de JS em um arquivo armazenado em uma dependência que seria empacotada pelos scripts de construção: O pedaço de código que foi escrito era o código malicioso real, destinado a ser executado em dispositivos pertencentes aos usuários finais do Copay.

Este código faria o seguinte:

Detectar o ambiente atual: Mobile / Cordova / Electron Verifique os saldos de Bitcoin e Bitcoin em dinheiro na conta de copay da vítima Se o saldo atual for maior que 100 Bitcoin ou 1000 Bitcoin Cash: Colete os dados da conta da vítima por completo Colete as chaves privadas de copay da vítima Envie os dados / chaves privadas da conta da vítima para um serviço de coleta em execução em 111.90.151.134. Para usuários do aplicativo Copay, o bitpay recomenda: “Se você estiver usando qualquer versão de 5.0.2 a 5.1.0, não deve executar ou abrir o aplicativo Copay.”

Para usuários npm, você pode verificar se o seu projeto contém a dependência vulnerável executando a auditoria npm. Se você instalou a versão afetada deste fluxo de eventos, recomendamos que você atualize para uma versão posterior o mais rápido possível.


7
Ou apenas faça npm list event-streame atualize quaisquer pacotes de nível superior
Phil

4
Excluir o bloqueio de pacote parece uma má ideia. Compartilhe o link para a postagem do blog do NPM.
pronebird

Uau. Existe um link para o artigo que você citou? EDITAR - Encontrei: blog.npmjs.org/post/180565383195/…
friederbluemle

7

Na verdade, não precisamos atualizar todos os pacotes que dependem de event-stream@3.3.6.

Você pode abrir o package-lock.json, remover todas as referências do fluxo de eventos e chamar npm installnovamente. Vai ser mais rápido.

Depois disso, npm shrinkwrap && mv npm-shrinwrap.json package-lock.jsondeve atualizar apenas as referências do fluxo de eventos e não todo o arquivo


4

Siga os métodos abaixo:

  1. Exclua os arquivos node_modules e package_lock.json

  2. Executar npm list event-stream

  3. Executar auditoria npm
  4. Execute a verificação de cache npm
  5. Execute npm install
  6. Execute git add. (adicione os arquivos necessários)
  7. Execute git commit (confirme suas alterações)
  8. Execute git push (envie seu código)

3

Eu resolvo esse problema pelas seguintes etapas:

  1. abra seu registro mais recente para este erro em /node_cache/_logs/xxxx-xx-xxx-debug.log
  2. descubra a raiz da event-streamfolha, por exemplo:


    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. neste caso, a raiz é nodemon, então você pode consertar por: npm install nodemon@1.18.4
  2. npm instalado com sucesso agora

3

Conforme mencionado nos comentários, o problema subjacente era o package-lock.json(arquivo de bloqueio) que continha um pacote obsoleto. Excluir o arquivo de bloqueio e reinstalar as dependências resolveu o problema.

A maneira mais rápida de fazer isso são estas 2 etapas:

  • apague o package-lock.jsonarquivo
  • digite npm i(ou npm install) para reinstalar as dependências

2

Eu atualizei npm-run-all de 4.1.3 para 4.1.5 em package.json (remova no fluxo de eventos de arquivo de bloqueio) Em seguida, npm install.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.