O ecossistema de software de código aberto vive uma verdadeira corrida armamentista entre desenvolvedores e agentes maliciosos. A cada nova ferramenta de segurança criada, surgem técnicas ainda mais sofisticadas para burlá-la. A mais recente descoberta envolve pacotes NPM maliciosos que exploram uma característica única da blockchain Ethereum: o uso de contratos inteligentes como esconderijo para instruções de malware.
- O que aconteceu? A anatomia do ataque aos pacotes npm
- A grande inovação dos hackers: contratos inteligentes como esconderijo
- Engenharia social e a rede fantasma: como os desenvolvedores são enganados
- Você está em risco? Como se proteger de ataques na cadeia de suprimentos de software
- Verifique antes de instalar: práticas essenciais de segurança
- Ferramentas que podem salvar seu projeto
- Conclusão: a ameaça invisível no seu package.json
Essa inovação foi identificada em pacotes aparentemente inofensivos, mas que escondiam um downloader capaz de comprometer projetos inteiros. Mais do que apenas um novo ataque, trata-se de uma evolução perigosa no cenário de ameaças à cadeia de suprimentos de software, afetando especialmente desenvolvedores que trabalham com Node.js, front-end e aplicações de blockchain.
Neste artigo, vamos detalhar como o ataque foi descoberto, a técnica inédita de ofuscação chamada etherhiding, os métodos de engenharia social usados para enganar desenvolvedores e, principalmente, como você pode se proteger contra esse tipo de ameaça cada vez mais criativa e persistente.

O que aconteceu? A anatomia do ataque aos pacotes npm
A descoberta partiu da equipe de pesquisa da ReversingLabs, que identificou em julho de 2025 os pacotes colortoolsv2 e mimelib2 publicados no NPM Registry.
À primeira vista, esses pacotes pareciam legítimos e funcionais, oferecendo bibliotecas relacionadas a manipulação de cores e e-mails. Porém, em sua estrutura interna, escondiam um downloader de malware.
Em vez de simplesmente carregar código malicioso de um servidor controlado por atacantes, esses pacotes continham uma inovação: o uso de contratos inteligentes na rede Ethereum como fonte para buscar instruções maliciosas.
Essa escolha tornou o ataque especialmente engenhoso, já que a blockchain é pública, descentralizada e resiliente contra censura, dificultando qualquer tentativa de remoção.
A grande inovação dos hackers: contratos inteligentes como esconderijo
O que é um contrato inteligente?
Para quem não está familiarizado com o conceito, um contrato inteligente é um programa digital autoexecutável que roda na blockchain Ethereum. Ele pode ser comparado a um contrato tradicional, mas em vez de depender de advogados ou autoridades, suas regras são automaticamente aplicadas e registradas em um livro-razão público e imutável.
Em termos simples, trata-se de um código armazenado na blockchain que qualquer pessoa pode consultar, mas que não pode ser alterado depois de implantado.
Como a técnica “etherhiding” foi usada?
No caso desses pacotes, os criminosos aplicaram a técnica chamada etherhiding. Em vez de colocar diretamente a URL de um servidor malicioso no código — algo facilmente detectável por ferramentas de análise — os pacotes consultavam um contrato inteligente no Ethereum.
Esse contrato armazenava instruções codificadas ou endereços de servidores maliciosos. Assim, quando o código era executado, ele lia o contrato, extraía a informação e só então estabelecia a comunicação com o servidor de controle.
Isso trouxe duas vantagens para os atacantes:
- Ofuscação avançada – Ferramentas de análise dificilmente conseguem flagrar o endereço malicioso, já que ele não está presente no pacote em si.
- Resiliência – Enquanto servidores convencionais podem ser derrubados, o conteúdo de um contrato inteligente permanece imutável e acessível globalmente.
Engenharia social e a rede fantasma: como os desenvolvedores são enganados
Além da inovação técnica, os atacantes também aplicaram estratégias de engenharia social para aumentar as chances de sucesso.
Os pacotes maliciosos foram promovidos em repositórios falsos no GitHub, que se passavam por ferramentas legítimas relacionadas a bots de negociação de criptomoedas, como o solana-trading-bot-v2.
Para dar ainda mais credibilidade a esses repositórios, os criminosos recorreram à chamada Stargazers Ghost Network. Trata-se de uma rede de contas falsas que inflavam artificialmente o número de estrelas em projetos no GitHub, dando a impressão de que eram ferramentas populares e confiáveis.
Assim, desenvolvedores desavisados eram induzidos a instalar os pacotes, confiando em métricas manipuladas e na suposta reputação dos repositórios.
Você está em risco? Como se proteger de ataques na cadeia de suprimentos de software
A boa notícia é que existem medidas práticas que podem reduzir significativamente a chance de cair nesse tipo de armadilha.
Verifique antes de instalar: práticas essenciais de segurança
- Não confie apenas em métricas como número de downloads no NPM ou estrelas no GitHub. Esses números podem ser falsificados.
- Inspecione o código de novas dependências antes de adicioná-las ao seu projeto. Mesmo uma análise superficial pode revelar comportamentos suspeitos.
- Cheque o histórico do mantenedor. Contas recém-criadas ou com pouca atividade são sinais de alerta.
- Desconfie de pacotes com documentação escassa ou que imitam nomes de bibliotecas populares.
Ferramentas que podem salvar seu projeto
Existem várias ferramentas que ajudam a proteger contra pacotes NPM maliciosos:
- npm audit: já integrado ao NPM, escaneia dependências em busca de vulnerabilidades conhecidas.
- Snyk: serviço especializado em análise de segurança de dependências.
- Dependabot: integrado ao GitHub, alerta automaticamente sobre pacotes desatualizados ou vulneráveis.
- Socket.dev: foca especificamente em detectar comportamentos suspeitos em pacotes NPM.
Usar essas ferramentas em conjunto pode fornecer uma camada extra de segurança e reduzir a exposição a ataques.
Conclusão: a ameaça invisível no seu package.json
O caso dos pacotes colortoolsv2 e mimelib2 mostra como os ataques à cadeia de suprimentos de software estão evoluindo rapidamente. Ao combinar o vasto ecossistema do NPM com a resiliência da blockchain Ethereum, os atacantes criaram um vetor de ataque extremamente sofisticado.
Mais do que nunca, a segurança de dependências é uma responsabilidade compartilhada. Cada desenvolvedor precisa estar atento não só ao código que escreve, mas também ao que importa para seus projetos.
Revisar suas dependências, aplicar boas práticas de segurança e compartilhar informações com a comunidade são passos essenciais para reduzir riscos. Afinal, a próxima ameaça pode já estar escondida em algum package.json por aí.