npm ERR! 404 não encontrado: [email protected]

86

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

npm ERR! 404 não encontrado: [email protected]

Matt
fonte
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 [email protected] 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.

Matt
fonte
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 [email protected].

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

Matheus Teixeira
fonte
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)
Basavaraj Hadimani
fonte
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 | | `-- [email protected]
    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 | |     `-- [email protected]

  1. neste caso, a raiz é nodemon, então você pode consertar por: npm install [email protected]
  2. npm instalado com sucesso agora
Susie Chang
fonte
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
Huseyin
fonte
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.

Evilripper
fonte