Hackers estão utilizando contratos inteligentes do Ethereum para ocultar cargas úteis de malware em pacotes npm aparentemente inofensivos, uma tática que transforma a blockchain em um canal de comandos resiliente e dificulta as remoções.
ReversingLabs detalhou dois pacotes npm, colortoolsv2 e mimelib2, que leem um contrato no Ethereum para buscar uma URL de um downloader de segunda etapa, em vez de codificar a infraestrutura no próprio pacote, uma escolha que reduz indicadores estáticos e deixa menos pistas em revisões de código-fonte.
Os pacotes surgiram em julho e foram removidos após a divulgação. A ReversingLabs rastreou a promoção deles até uma rede de repositórios no GitHub que se apresentavam como bots de negociação, incluindo solana-trading-bot-v2, com estrelas falsas, históricos de commits inflados e mantenedores fantoches, uma camada social que orientou desenvolvedores para a cadeia de dependências maliciosa.
As downloads foram baixas, mas o método importa. Segundo The Hacker News, colortoolsv2 teve sete downloads e mimelib2 um, o que ainda se encaixa no targeting oportunista de desenvolvedores. Snyk e OSV agora listam ambos os pacotes como maliciosos, fornecendo verificações rápidas para equipes que auditam builds históricos.
História se repete
O canal de comando on-chain ecoa uma campanha mais ampla que pesquisadores acompanharam no final de 2024, envolvendo centenas de typosquats no npm. Nessa onda, pacotes executavam scripts de instalação ou pré-instalação que consultavam um contrato no Ethereum, recuperavam uma URL base e, em seguida, faziam o download de payloads específicos para cada sistema operacional, chamados node-win.exe
, node-linux
ou node-macos
.
Checkmarx documentou um contrato principal em 0xa1b40044EBc2794f207D45143Bd82a1B86156c6b
acoplado ao parâmetro de carteira 0x52221c293a21D8CA7AFD01Ac6bFAC7175D590A84
, com infraestrutura observada em 45.125.67.172:1337
e 193.233.201.21:3001
, entre outros.
A desobfuscação da Phylum mostra a chamada ethers.js
para getString(address)
no mesmo contrato e registra a rotação de endereços C2 ao longo do tempo, um comportamento que transforma o estado do contrato em um ponteiro móvel para a recuperação de malware. Socket independentemente mapeou o flood de typosquat e publicou IOCs correspondentes, incluindo o mesmo contrato e carteira, confirmando a consistência entre fontes.
Uma vulnerabilidade antiga continua a prosperar
A ReversingLabs enquadra os pacotes de 2025 como uma continuação da técnica, e não da escala, com o detalhe de que o contrato inteligente hospeda a URL para a próxima etapa, e não o payload.
O trabalho de distribuição no GitHub, incluindo estrelas falsas e commits de manutenção, busca passar por uma diligência casual e alavancar atualizações automáticas de dependências em clones dos repositórios falsos.
O design assemelha-se ao uso anterior de plataformas de terceiros para indireção, por exemplo GitHub Gist ou armazenamento em nuvem, mas o armazenamento on-chain adiciona imutabilidade, legibilidade pública e um espaço neutro que defensores não podem derrubar facilmente.
Segundo a ReversingLabs, IOCs concretos desses relatos incluem os contratos Ethereum 0x1f117a1b07c108eae05a5bccbe86922d66227e2b
vinculados aos pacotes de julho e o contrato de 2024 0xa1b40044EBc2794f207D45143Bd82a1B86156c6b
, carteira 0x52221c293a21D8CA7AFD01Ac6bFAC7175D590A84
, padrões de host 45.125.67.172
e 193.233.201.21
com portas 1337 ou 3001, e nomes de payload de plataforma mencionados acima.
Hashes para a segunda etapa de 2025 incluem 021d0eef8f457eb2a9f9fb2260dd2e391f009a21
, e para a onda de 2024, a Checkmarx lista valores SHA-256 para Windows, Linux e macOS. A ReversingLabs também publicou SHA-1s para cada versão maliciosa do npm, o que ajuda as equipes a vasculhar armazéns de artefatos em busca de exposições passadas.
Protegendo-se contra o ataque
Para defesa, o controle imediato é impedir que scripts de ciclo de vida (lifecycle scripts) sejam executados durante a instalação e CI. O npm documenta a flag --ignore-scripts
para npm ci
e npm install
, e as equipes podem configurá-la globalmente em .npmrc
, permitindo builds necessários apenas em uma etapa separada.
A página de melhores práticas de segurança do Node.js recomenda a mesma abordagem, juntamente com a fixação de versões via lockfiles e uma revisão mais rigurosa de mantenedores e metadados.
Bloquear o tráfego de saída para os IOCs acima e alertar em logs de build que inicializam ethers.js
para consultar getString(address)
, fornecendo detecções práticas que se alinham ao design C2 on-chain.
Os pacotes já se foram, o padrão persiste, e a indireção on-chain agora caminha ao lado de typosquats e repositórios fraudulentos como uma forma repetível de alcançar as máquinas dos desenvolvedores.
O post Ethereum smart contracts quietly push javascript malware targeting developers apareceu primeiro no CryptoSlate.