Alerta de Segurança

Campanha Infostealer compromete pacotes npm e ataca desenvolvedores

Dez pacotes npm foram infectados com malware, visando roubar dados confidenciais de desenvolvedores. A campanha explora falhas de segurança para comprometer contas e disseminar código malicioso.

Imagem malware BeaverTail em pacotes npm

Uma operação maliciosa atingiu dez pacotes npm, injetando código malicioso com o objetivo de extrair variáveis de ambiente e informações sensíveis dos sistemas de desenvolvedores. A campanha teve como alvo diversos pacotes relacionados a criptomoedas, destacando-se o pacote “mapa-moeda-país”, que possui uma significativa base de downloads semanais.

O código malicioso, identificado pelo pesquisador da Sonatype, Ali ElShakankiry, foi encontrado em dois scripts ofuscados, “/scripts/launch.js” e “/scripts/diagnostic-report.js”, que são executados durante o processo de instalação dos pacotes afetados.

Impacto e método do ataque Infostealer em pacotes npm

Pacotes npm

Segundo a Sonatype, o script JavaScript malicioso coleta variáveis de ambiente dos dispositivos infectados e as envia para o host remoto “eoi2ectd5a5tn1h.m.pipedream(.)net”. Variáveis de ambiente são alvos valiosos para cibercriminosos, pois frequentemente contêm chaves de API, credenciais de banco de dados, credenciais de nuvem e chaves de criptografia, que podem ser exploradas em ataques futuros.

A análise da Sonatype sugere que os repositórios foram comprometidos, pois o código malicioso é idêntico em todos os pacotes afetados, e a maioria possuía um histórico limpo por anos. As hipóteses mais prováveis para o comprometimento são:

  • Comprometimento de contas antigas de mantenedores do npm por meio de preenchimento de credenciais.
  • Aquisição de domínios expirados.

A primeira hipótese é considerada mais provável, dado o ataque simultâneo a múltiplos pacotes de diferentes mantenedores.

Os pacotes comprometidos e suas respectivas versões maliciosas são:

  • country-currency-map: versão 2.1.8, 288 downloads
  • @keepkey/device-protocol: versão 7.13.3, 56 downloads
  • bnb-javascript-sdk-nobroadcast: versão 2.16.16, 61 downloads
  • @bithighlander/bitcoin-cash-js-lib: versão 5.2.2, 61 downloads
  • eslint-config-travix: versão 6.3.1, 0 downloads
  • babel-preset-travix: versão 1.2.1, 0 downloads
  • @travix/ui-themes: versão 1.1.5, 0 downloads
  • @veniceswap/uikit: versão 0.65.34, 0 downloads
  • @crosswise-finance1/sdk-v2: versão 0.1.21, 0 downloads
  • @veniceswap/eslint-config-pancake: versão 1.6.2, 0 downloads

É importante observar que todos os pacotes, exceto “country-currency-map”, ainda estão disponíveis no npm com as versões comprometidas, representando um risco significativo para os desenvolvedores. O mantenedor do “country-currency-map” descontinuou a versão maliciosa e orientou os usuários a utilizarem a versão segura 2.1.7.

A investigação aponta para a vulnerabilidade das contas de mantenedores do npm, já que os repositórios GitHub associados não foram alterados. Embora o npm exija autenticação de dois fatores para projetos populares, pacotes mais antigos podem estar desprotegidos devido à inatividade de seus mantenedores.