Código malicioso encontrado no pacote npm event-stream, baixado 8 milhões de vezes nos últimos 2,5 meses
27 de novembro de 2018
0 minutos de leituraFoi encontrado um pacote malicioso chamado flatmap-stream no event-stream, um pacote npm amplamente utilizado. O problema foi divulgado em uma issue aberta no GitHub contra o repositório do código-fonte.
O pacote event-stream facilita a criação e o uso de streams e é muito popular, com cerca de 2 milhões de downloads por semana. Desde que foi incluído, em setembro de 2018, o pacote secundário malicioso foi baixado quase 8 milhões de vezes.
Adicionamos o pacote malicioso ao nosso banco de dados de vulnerabilidades. Se o Snyk monitora seu projeto e identificarmos a dependência maliciosa (seja event-stream@3.3.6 ou qualquer versão do flatmap-stream), você receberá um alerta de rotina do Snyk.
Se seus projetos não são monitorados pelo Snyk e você quer verificar se usam esse pacote, clique aqui para testar seus repositórios com o Snyk ou use nossa CLI para testar os projetos localmente.
Veja como os acontecimentos se desenrolaram:
Embora popular, o pacote npm event-stream não é mantido ativamente. Na verdade, fazia alguns anos que o pacote não era atualizado, com exceção de algumas alterações cosméticas no README e da biblioteca maliciosa em questão.
Ao que tudo indica, o atacante, que usa o nome right9ctrl no GitHub, ofereceu ajuda para manter a biblioteca. O mantenedor original, Dominic Tarr — provavelmente querendo ajudar os usuários — aceitou e concedeu a right9ctrl permissão para publicar. Vale lembrar que transferir a propriedade é uma prática relativamente comum no mundo do código aberto, usada para ajudar a manter projetos quando os autores originais não podem ou não querem mais fazer isso.
Infelizmente, o novo proprietário adicionou uma biblioteca maliciosa chamada flatmap-stream como dependência do pacote event-stream. Com isso, ela foi baixada e executada por todos os usuários do pacote event-stream que usavam a versão maliciosa 3.3.6. A biblioteca maliciosa chegou a quase 8 milhões de downloads.
Como adicionar bibliotecas é uma prática comum, é fácil entender por que essa nova biblioteca não foi revisada com muito cuidado. Além disso, ela parece cumprir a funcionalidade prometida (processar um stream flat map). Por fim, o código malicioso da biblioteca foi ofuscado para escapar da detecção (e decodificado posteriormente, revelando o código malicioso).
A dependência maliciosa passou despercebida por 2,5 meses, até que um usuário, Ayrton Sparling, percebeu uma dependência suspeita e a denunciou em 20 de novembro. A dependência, que continha código ofuscado, foi rapidamente identificada como maliciosa. A notícia ganhou maior repercussão hoje (26 de novembro). O Snyk adicionou imediatamente a vulnerabilidade ao nosso banco de dados e a comunicou ao grupo de trabalho de segurança da Node Foundation, que está analisando o caso. O npm também respondeu ao incidente e retirou da publicação a biblioteca maliciosa flatmap-stream, assim como a versão problemática 3.3.6 do event-stream.
Quanto às ações maliciosas, parece que o código se concentrava em roubar bitcoins de aplicativos, redirecionando para a carteira do atacante qualquer bitcoin minerado, em vez de enviá-lo ao destino previsto. Saiba mais na página do comunicado de segurança do Snyk.
O que você deve fazer?
Sua prioridade imediata deve ser verificar se você está usando a biblioteca maliciosa em questão. Nesse caso, futuras compilações do seu aplicativo falharão, mas os aplicativos já implantados provavelmente conterão — e talvez estejam executando — o código malicioso.
Se o Snyk monitora seu projeto, você receberá um alerta de rotina caso seu aplicativo contenha esse pacote malicioso.
Se, por outro lado, você ainda não monitora seus projetos com o Snyk, pode fazer um teste pontual: clique aqui para testar seus repositórios ou use nossa CLI para testar os projetos localmente.
Fui afetado. O que devo fazer agora?
Primeiro, remova o pacote malicioso do seu aplicativo. Para isso, volte para a versão 3.3.4 do event-stream.
Se seu aplicativo usou a biblioteca maliciosa e lida com bitcoins, verifique a atividade dos últimos 3 meses para identificar se algum bitcoin minerado ou transferido não chegou à sua carteira.
Se seu aplicativo não lida com bitcoins, mas é especialmente sensível, recomendamos verificar a atividade dos últimos 3 meses em busca de ações suspeitas, principalmente dados enviados pela rede a destinos não previstos. Acreditamos que é improvável que o código faça algo além de roubar bitcoins, mas a análise completa ainda está em andamento.
Comece a resolver desafios de capture the flag
Aprenda a resolver desafios de capture the flag assistindo sob demanda ao nosso workshop virtual introdutório.



