Ontem, dez pacotes npm foram atualizados repentinamente com código malicioso para roubar variáveis de ambiente e outros dados sensíveis dos sistemas dos desenvolvedores.
A campanha visou vários pacotes relacionados a criptomoedas e o popular pacote 'country-currency-map' foi baixado milhares de vezes por semana.
O código malicioso foi descoberto pelo pesquisador da Sonatype, Ali ElShakankiry, e está presente em dois scripts altamente ofuscados, "/scripts/launch.js" e "/scripts/diagnostic-report.js", que são executados após a instalação do pacote.
A Sonatype informa que o JavaScript rouba as variáveis de ambiente do dispositivo e as envia para o host remoto "eoi2ectd5a5tn1h.m.pipedream(.)net)".
Variáveis de ambiente são comumente visadas pois podem conter API keys, credenciais de banco de dados, credenciais de nuvem, e chaves de criptografia, que podem ser usadas para ataques subsequentes.
Como o analista de malware da Sonatype, Ax Sharma, explica em um artigo, como o código malicioso é o mesmo em todos os repositórios e a maioria teve um histórico limpo por anos, é provável que tenham sido comprometidos de alguma maneira.
"Hipotetizamos que a causa do sequestro seja contas antigas de mantenedores npm sendo comprometidas, seja através de credential stuffing (onde atores de ameaças tentam novamente nomes de usuário e senhas vazados em violações anteriores para comprometer contas em outros sites), ou uma aquisição de domínio expirado — ambos cenários comuns explicados na documentação npm", relata a Sonatype.
"Considerando a cronologia simultânea dos ataques em múltiplos pacotes de mantenedores distintos, o primeiro cenário (takeover de contas de mantenedores) parece ser mais provável em vez de ataques de phishing bem orquestrados."
Os nomes dos pacotes, suas versões comprometidas e quantas vezes a versão maliciosa foi baixada estão listados abaixo:
- 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.
Todos esses pacotes, exceto o country-currency-map, ainda estão disponíveis no npm, com suas últimas versões indicadas acima, portanto, baixá-los infectará seus projetos com malware rouba-informações.
O mantenedor do pacote country-currency-map descontinuou a versão maliciosa (2.1.8) ontem e deixou uma nota dizendo aos desenvolvedores para usar a versão 2.1.7 em vez disso, que é segura.
A hipótese de que o ataque foi causado pela insegurança das contas de mantenedor npm é ainda mais apoiada pelo fato de que os repositórios correspondentes do GitHub dos projetos comprometidos não foram atualizados com malware.
Embora o npm tenha tornado a autenticação de dois fatores obrigatória para projetos populares, alguns dos afetados pela campanha mais recente são pacotes mais antigos com sua última atualização há vários anos.
Assim, seus mantenedores podem não estar mais ativamente envolvidos.
Publicidade
Conheça a Solyd One, e tenha acesso a todos os cursos de segurança ofensiva da Solyd, todas as certificações práticas, incluindo a SYCP, 2 CTFs anuais com prêmios de até 30 mil reais, dezenas de laboratórios realísticos, suporte, comunidade e muito mais. Saiba mais...