Pesquisadores de segurança alertam que um novo tipo de ataque está silenciosamente utilizando contratos inteligentes do Ethereum como um canal de comando e controle (C2), escondendo malware em pacotes npm JavaScript aparentemente inofensivos, visando especificamente os computadores dos desenvolvedores. Este método não apenas aumenta a dificuldade de rastreamento e remoção, mas também aproveita a imutabilidade e a publicidade da blockchain, tornando mais difícil para a parte defensora bloquear.
como pacotes npm maliciosos utilizam Ethereum para transmitir instruções de ataque
ReversingLabs descobriu que dois pacotes npm chamados colortoolsv2 e mimelib2 leem contratos inteligentes específicos na Ethereum para obter a URL de um downloader malicioso de segunda fase, em vez de codificar a infraestrutura nos pacotes.
Este design reduz a possibilidade de deteção estática e deixa menos pistas na revisão de código. Embora o número de downloads destes dois pacotes seja extremamente baixo (7 e 1, respetivamente), a sua abordagem de ataque representa uma ameaça significativa para a segurança da cadeia de suprimentos.
GitHub disfarce e engenharia social para instalação guiada
A pesquisa mostra que a promoção desses pacotes de malware vem de uma rede de repositórios do GitHub disfarçados como robôs de negociação, como o solana-trading-bot-v2.
Os atacantes induzem os desenvolvedores a instalarem dependências maliciosas, usando estrelas falsas, um histórico de submissões exagerado e contas de mantenedores fantoches.
Este método é semelhante ao ataque de registro de domínio npm no final de 2024, quando centenas de pacotes consultavam contratos inteligentes Ethereum durante a fase de instalação, obtendo a URL base e, em seguida, baixando executáveis maliciosos para Windows, Linux e macOS.
Detalhes técnicos do canal de comando na Blockchain
A empresa de segurança Checkmarx e a Phylum descobriram que o endereço do contrato principal utilizado pelos atacantes é 0xa1b40044EBc2794f207D45143Bd82a1B86156c6b, e através do ethers.js chamaram getString(address) para obter o endereço mais recente do servidor C2.
Estes nós C2 incluem 45.125.67.172:1337 e 193.233.201.21:3001, que mudam ao longo do tempo para evitar bloqueios.
Devido ao fato de os dados dos contratos inteligentes serem imutáveis, esse método de armazenamento em cadeia é mais difícil de ser removido do que o tradicional GitHub Gist ou armazenamento em nuvem.
Recomendações de defesa: bloquear scripts do ciclo de vida e pedidos de rede
Especialistas recomendam que as equipes de desenvolvimento ativem o parâmetro --ignore-scripts durante a instalação do npm e no processo de CI, para evitar a execução automática de scripts de ciclo de vida de malware, e que fixem as versões dos pacotes através de arquivos de bloqueio.
Ao mesmo tempo, deve-se bloquear os IPs maliciosos conhecidos e os endereços de contratos no firewall ou no proxy de segurança, e monitorar chamadas suspeitas para getString(address) nos registros de construção.
O guia de segurança oficial do Node.js também recomenda uma auditoria mais rigorosa da identidade dos mantenedores e dos metadados dos pacotes para reduzir o risco de ataques na cadeia de suprimentos.
Conclusão
Embora o impacto no número de downloads deste incidente não tenha sido grande, ele revela um padrão de ataque mais oculto e difícil de defender - utilizando a Blockchain como um canal de comando persistente, combinando engenharia social e infiltração na cadeia de suprimentos de código aberto, representando uma ameaça de longo prazo para desenvolvedores e empresas. No futuro, a combinação de malware on-chain e ataques tradicionais à cadeia de suprimentos pode se tornar uma nova norma na área de segurança da informação.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
Ethereum contratos inteligentes暗藏armadilha!npm pacotes被植入vela de pavio longo針對開發者的惡意程式
Pesquisadores de segurança alertam que um novo tipo de ataque está silenciosamente utilizando contratos inteligentes do Ethereum como um canal de comando e controle (C2), escondendo malware em pacotes npm JavaScript aparentemente inofensivos, visando especificamente os computadores dos desenvolvedores. Este método não apenas aumenta a dificuldade de rastreamento e remoção, mas também aproveita a imutabilidade e a publicidade da blockchain, tornando mais difícil para a parte defensora bloquear.
como pacotes npm maliciosos utilizam Ethereum para transmitir instruções de ataque
ReversingLabs descobriu que dois pacotes npm chamados colortoolsv2 e mimelib2 leem contratos inteligentes específicos na Ethereum para obter a URL de um downloader malicioso de segunda fase, em vez de codificar a infraestrutura nos pacotes.
Este design reduz a possibilidade de deteção estática e deixa menos pistas na revisão de código. Embora o número de downloads destes dois pacotes seja extremamente baixo (7 e 1, respetivamente), a sua abordagem de ataque representa uma ameaça significativa para a segurança da cadeia de suprimentos.
GitHub disfarce e engenharia social para instalação guiada
A pesquisa mostra que a promoção desses pacotes de malware vem de uma rede de repositórios do GitHub disfarçados como robôs de negociação, como o solana-trading-bot-v2.
Os atacantes induzem os desenvolvedores a instalarem dependências maliciosas, usando estrelas falsas, um histórico de submissões exagerado e contas de mantenedores fantoches.
Este método é semelhante ao ataque de registro de domínio npm no final de 2024, quando centenas de pacotes consultavam contratos inteligentes Ethereum durante a fase de instalação, obtendo a URL base e, em seguida, baixando executáveis maliciosos para Windows, Linux e macOS.
Detalhes técnicos do canal de comando na Blockchain
A empresa de segurança Checkmarx e a Phylum descobriram que o endereço do contrato principal utilizado pelos atacantes é 0xa1b40044EBc2794f207D45143Bd82a1B86156c6b, e através do ethers.js chamaram getString(address) para obter o endereço mais recente do servidor C2.
Estes nós C2 incluem 45.125.67.172:1337 e 193.233.201.21:3001, que mudam ao longo do tempo para evitar bloqueios.
Devido ao fato de os dados dos contratos inteligentes serem imutáveis, esse método de armazenamento em cadeia é mais difícil de ser removido do que o tradicional GitHub Gist ou armazenamento em nuvem.
Recomendações de defesa: bloquear scripts do ciclo de vida e pedidos de rede
Especialistas recomendam que as equipes de desenvolvimento ativem o parâmetro --ignore-scripts durante a instalação do npm e no processo de CI, para evitar a execução automática de scripts de ciclo de vida de malware, e que fixem as versões dos pacotes através de arquivos de bloqueio.
Ao mesmo tempo, deve-se bloquear os IPs maliciosos conhecidos e os endereços de contratos no firewall ou no proxy de segurança, e monitorar chamadas suspeitas para getString(address) nos registros de construção.
O guia de segurança oficial do Node.js também recomenda uma auditoria mais rigorosa da identidade dos mantenedores e dos metadados dos pacotes para reduzir o risco de ataques na cadeia de suprimentos.
Conclusão
Embora o impacto no número de downloads deste incidente não tenha sido grande, ele revela um padrão de ataque mais oculto e difícil de defender - utilizando a Blockchain como um canal de comando persistente, combinando engenharia social e infiltração na cadeia de suprimentos de código aberto, representando uma ameaça de longo prazo para desenvolvedores e empresas. No futuro, a combinação de malware on-chain e ataques tradicionais à cadeia de suprimentos pode se tornar uma nova norma na área de segurança da informação.