Uma campanha de malware está a distribuir pacotes falsos através do npm, o repositório usado por milhões de projetos JavaScript. A investigação foi publicada pela Checkmarx e recebeu nova cobertura a 20 de setembro, quando ainda era descrita como uma operação em curso.
O pacote principal chama-se indexed-btree e tenta imitar a biblioteca legítima sorted-btree. A semelhança dos nomes, um repositório GitHub com aparência normal e um histórico de alterações fabricado ajudam a criar confiança. Segundo os investigadores, o pacote chegou perto de dois milhões de downloads semanais.
O código malicioso só aparece durante a utilização
A campanha destaca-se porque não usa os scripts automáticos executados durante a instalação. Esses scripts tornaram-se um dos principais sinais de alerta nas cadeias de fornecimento de software e o npm passou a limitá-los na versão 12.
Neste caso, a instalação pode terminar sem comportamento suspeito. O carregador está escondido num método usado pela própria biblioteca e é ativado quando a aplicação chama uma função com um valor específico. Isso permite contornar proteções concentradas apenas no momento em que o pacote é instalado.
Depois de iniciado, o malware recolhe informações do computador, como arquitetura, nome da máquina, processador, memória e tempo de funcionamento. Esses dados podem ser enviados através de canais no Slack e no Telegram. A segunda fase é obtida com ajuda de um contrato inteligente na rede de testes Sepolia, usada pela tecnologia Ethereum, o que torna mais difícil bloquear a infraestrutura através de um único domínio.
A análise também encontrou capacidade para apagar ficheiros e remover o gatilho malicioso, reduzindo os vestígios deixados no sistema.
Nove pacotes relacionados já foram removidos
A Checkmarx associou a mesma operação a outros nove pacotes, entretanto retirados do npm. Entre eles estão btree-core, ordered-kv-index, btree-leaderboard, priority-slot-queue e várias bibliotecas com nomes ligados a índices e armazenamento.
Os números de downloads apresentados nas páginas dos pacotes somam vários milhões, mas não equivalem ao mesmo número de computadores infetados. Um download pode resultar de testes automáticos, instalações repetidas ou sistemas que nunca executaram a função usada como gatilho. Também não está demonstrado que todos os projetos tenham recebido ou executado a segunda fase do malware.
A investigação refere ainda uma carteira com 109 unidades de Ether. Esse saldo não prova que o dinheiro tenha sido roubado pela campanha, uma distinção importante para não transformar uma relação técnica numa conclusão criminal sem evidência.
O incidente expõe um limite das novas proteções
O npm reforçou a segurança após sucessivos ataques ao ecossistema de código aberto. Bloquear scripts de instalação por defeito reduz um vetor frequente, mas esta campanha mostra que o código nocivo pode ser deslocado para funções normais da biblioteca e executado mais tarde.
A consequência prática atinge sobretudo equipas de desenvolvimento e empresas que usam JavaScript nos seus serviços. Uma dependência pequena pode entrar num projeto através de outro pacote, sem ser escolhida diretamente por quem mantém a aplicação. Por isso, a remoção do repositório público trava novas instalações, mas não elimina cópias já descarregadas nem credenciais potencialmente expostas.
A Checkmarx recomenda que organizações que tenham instalado indexed-btree ou os pacotes associados tratem os ambientes como potencialmente comprometidos, substituam segredos de acesso e recuperem sistemas a partir de uma cópia segura. A empresa também defende análise do comportamento durante a execução, porque a verificação feita apenas antes ou durante a instalação não deteta este mecanismo.
Até ao momento, não foi divulgado um número confirmado de vítimas, nem uma lista de empresas afetadas. O que está confirmado é a existência dos pacotes, a técnica usada para ativar o malware e a remoção de nove componentes relacionados.
Fontes: Checkmarx · BleepingComputer
