Estou tentando implantar meu projeto e de repente estou recebendo este erro.
npm ERR! 404 não encontrado: event-stream@3.3.6
Estou tentando implantar meu projeto e de repente estou recebendo este erro.
npm ERR! 404 não encontrado: event-stream@3.3.6
Respostas:
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-stream
pacote.
node_modules
pasta.package-lock.json
arquivo.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.
npm list event-stream
e atualize quaisquer pacotes de nível superior
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 install
novamente. Vai ser mais rápido.
Depois disso, npm shrinkwrap && mv npm-shrinwrap.json package-lock.json
deve atualizar apenas as referências do fluxo de eventos e não todo o arquivo
Siga os métodos abaixo:
Exclua os arquivos node_modules e package_lock.json
Executar npm list event-stream
Eu resolvo esse problema pelas seguintes etapas:
event-stream
folha, 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
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:
package-lock.json
arquivonpm i
(ou npm install
) para reinstalar as dependênciasEu 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.