Logo TecMundo
Segurança

Brasil é alvo de novo vírus que se espalha sozinho e apaga os próprios rastros

Shai-Hulud 2.0 chega com ainda mais força e capacidade de infectar maior número de vítimas

Avatar do(a) autor(a): Cecilia Ferraz

schedule08/12/2025, às 16:30

updateAtualizado em 09/12/2025, às 09:23

O Brasil está entre os três países mais visados por uma nova e devastadora campanha de malware que já infectou mais de 800 pacotes do npm, o maior repositório de bibliotecas JavaScript do mundo

Batizado de Shai-Hulud 2.0, o ataque coloca desenvolvedores e organizações brasileiras na mira de um dos mais sofisticados worms digitais já documentados: segundo dados da Kaspersky, 9,7% dos mais de 1.700 ataques bloqueados desde setembro atingiram usuários no país, ficando atrás apenas da Rússia (18,5%) e Índia (10,7%).

smart_display

Nossos vídeos em destaque

Origem do Shai-Hulud

O nome Shai-Hulud é uma referência ao verme gigante de “Dune”. Este malware, do tipo worm, se move pelo ecossistema de desenvolvimento como uma criatura subterrânea, consumindo credenciais, infectando novos hospedeiros e se multiplicando em uma escala alarmante. Ele modifica pacotes do Node Package Manager (npm), que funciona como um repositório de bibliotecas para desenvolvedores. 

Quando um desenvolvedor instala um pacote infectado, o primeiro arquivo executado é o setup_bun.js, um script que parece completamente inofensivo. Diferente da maioria dos malwares que tentam esconder seu código, este script é deixado propositalmente sem ofuscação, bem documentado e com uma aparência profissional. Assim, ele consegue roubar informações de login e senha sem suspeitas.

Com essas credenciais em mãos, o malware então infecta todos os outros pacotes que o desenvolvedor mantém, republicando novas versões com o código malicioso embutido. Esses pacotes infectados são então baixados por outros desenvolvedores, e o ciclo se repete.

O ataque tem múltiplos objetivos: roubar credenciais e segredos (como chaves de acesso a serviços de nuvem da AWS, Azure e Google Cloud), expor repositórios privados de empresas tornando-os públicos, e coletar dados sensíveis de todo o sistema da vítima.

"Ele se apresenta como uma ferramenta para instalar o Bun JavaScript runtime, uma tecnologia legítima e popular entre desenvolvedores", explica o relatório da Kaspersky. O script verifica se o Bun já está instalado no sistema e, caso não esteja, o baixa de fontes oficiais de maneira específica para cada sistema operacional. Tudo parece rotineiro, seguro, confiável.

Mas essa normalidade é uma armadilha. Uma vez que o Bun está instalado, o verdadeiro ataque começa.

O segundo estágio: 10 MB de código malicioso

Com o runtime Bun no lugar, o malware executa seu segundo estágio: o arquivo bun_environment.js, um script de 10 megabytes fortemente ofuscado usando ferramentas como obfuscate.io. É aqui que toda a operação maliciosa se desenrola.

O primeiro alvo são as credenciais. O malware vasculha o sistema em busca de tokens de acesso do GitHub (identificados pelos prefixos ghp_ ou gho_) em variáveis de ambiente e arquivos de configuração da CLI do GitHub. 

Mas não para por aí, ele também procura credenciais de serviços de nuvem como AWS, Azure e Google Cloud, consultando serviços de metadados e usando SDKs oficiais para enumerar todas as chaves de acesso disponíveis.

Para garantir que nenhum segredo escape, o malware baixa e executa o TruffleHog, uma ferramenta legítima usada por profissionais de segurança para encontrar credenciais vazadas. Com ela, o Shai-Hulud 2.0 escaneia agressivamente todo o sistema de arquivos da vítima.

GitHub como canal de comunicação e arma

Uma das inovações mais engenhosas do Shai-Hulud 2.0 é como ele usa o próprio GitHub para exfiltrar dados roubados. Em vez de enviar informações para servidores controlados por criminosos — o que poderia ser detectado por firewalls e sistemas de segurança — o malware cria um repositório público no GitHub com um nome aleatório de 18 caracteres.

Este repositório recebe um marcador específico em sua descrição: "Sha1-Hulud: The Second Coming." É para lá que todos os dados roubados são enviados — credenciais, informações do sistema, tokens de acesso. A vítima, sem saber, está usando sua própria conta do GitHub para armazenar o produto de seu próprio roubo.

Mas há um recurso ainda mais sinistro: se o malware não consegue encontrar um token do GitHub na máquina da vítima, ele procura por repositórios de outras vítimas usando aquele marcador específico na descrição.

Ao encontrá-los, o Shai-Hulud rouba os tokens já exfiltrados de outras vítimas, criando uma rede interconectada de credenciais compartilhadas. É como se cada vítima se tornasse um fornecedor involuntário de recursos para futuros ataques.

A injeção de workflows maliciosos

Para roubar segredos ainda mais protegidos — aqueles armazenados no GitHub Actions, o sistema de automação do GitHub —, o malware cria branches chamados shai-hulud em todos os repositórios que a vítima pode acessar. Nesses branches, ele injeta arquivos de workflow maliciosos (shai-hulud-workflow.yml) que são acionados a cada push no repositório.

Esses workflows, que parecem arquivos de configuração normais, coletam automaticamente todos os segredos do GitHub Actions e os enviam para o servidor dos atacantes, com os dados codificados duas vezes em Base64 para dificultar a detecção. É um método de exfiltração contínua e automatizada que funciona silenciosamente em segundo plano.

O worm se replica: até 100 pacotes por vítima

Após roubar as credenciais, o Shai-Hulud 2.0 parte para sua próxima missão: se reproduzir. O malware busca o token de autorização do npm nos arquivos de configuração .npmrc do sistema e, ao encontrá-lo, valida o token consultando a API do npm.

Com acesso confirmado, o script recupera uma lista de até 100 pacotes mantidos pela vítima — um aumento significativo em relação aos 20 pacotes da primeira versão. Para cada pacote, o malware executa uma operação cirúrgica:

  1. Baixa a versão tarball (arquivo .TAR) do pacote;
  2. Cria um diretório temporário;
  3. Desempacota o arquivo;
  4. Injeta os arquivos maliciosos setup_bun.js e bun_environment.js;
  5. Modifica o package.json para executar o script malicioso durante a pré-instalação;
  6. Incrementa o número da versão do pacote;
  7. Reempacota tudo e publica a nova versão infectada no npm.

O ciclo se fecha: outros desenvolvedores baixam essas novas versões aparentemente legítimas, instalam em seus projetos, e o processo recomeça. É uma infecção em cadeia que se multiplica exponencialmente.

Shai Hulud 2.0 tem até modo destrutivo

Talvez o aspecto mais preocupante do Shai-Hulud 2.0 seja seu comportamento quando não consegue cumprir seus objetivos. Se o malware não encontra tokens válidos do npm nem do GitHub, tornando impossível exfiltrar dados ou se propagar, ele não simplesmente desiste.

Em vez disso, ativa uma carga destrutiva que apaga arquivos do usuário, principalmente aqueles no diretório home. É uma vingança digital, uma punição por não ter o que roubar.

Vítimas em escala global

A telemetria da Kaspersky mostra que o Shai-Hulud 2.0 não discrimina: suas vítimas incluem desenvolvedores individuais e grandes organizações em todos os continentes. As infecções estão concentradas na Rússia (18,5% dos casos), Índia (10,7%) e Brasil (9,7%), mas também foram registradas ocorrências significativas no Vietnã, China, Turquia e França.

Os mais de 800 pacotes infectados representam milhões de downloads potenciais, só com a versão 2.0. Cada instalação é uma nova oportunidade para o malware roubar credenciais, expor repositórios privados e infectar mais pacotes, criando um efeito cascata que pode comprometer cadeias inteiras de desenvolvimento de software.

Sinais de infecção

Identificar uma infecção por Shai-Hulud 2.0 exige atenção a detalhes específicos. Os pacotes infectados apresentam algumas características reveladoras:

  • Contêm um arquivo chamado package.tar (em vez de um arquivo que corresponde ao nome do pacote);
  • Têm comandos preinstall ou postinstall suspeitos no package.json que executam scripts como setup_bun.js;
  • Versões incrementadas de forma incomum ou rápida;
  • Presença dos arquivos setup_bun.js e bun_environment.js.

No GitHub, os sinais incluem repositórios com nomes aleatórios de 18 caracteres, descrições contendo “Sha1-Hulud: The Second Coming”, branches chamados shai-hulud em repositórios legítimos, e arquivos de workflow shai-hulud-workflow.yml no diretório .github/workflows.

Como se proteger

A Kaspersky recomenda uma série de medidas para quem suspeita de infecção ou deseja se proteger preventivamente:

  • Auditoria imediata: faça uma varredura completa do sistema com uma solução de segurança confiável;
  • Verifique todos os repositórios GitHub em busca de nomes suspeitos, branches shai-hulud e workflows maliciosos;
  • Revise os logs do GitHub Actions procurando por referências a "shai-hulud"
  • Rotação de credenciais: reemita todos os tokens do npm e GitHub, rotacione chaves de acesso a serviços de nuvem, especialmente AWS e Google Cloud e troque todas as senhas e segredos que possam ter sido expostos;
  • Limpeza do ambiente: limpe o cache do npm, faça um inventário de todos os módulos npm instalados, reverta para versões limpas de pacotes suspeitos e procure por indicadores de comprometimento no sistema de arquivos e na rede.

Para continuar informado sobre este caso, acompanhe o TecMundo nas redes sociais. Inscreva-se em nossa newsletter e canal do YouTube para mais notícias de segurança e tecnologia.

Perguntas Frequentes

O que é o Shai-Hulud 2.0 e por que ele é tão perigoso?
Shai-Hulud 2.0 é um malware do tipo worm que se espalha automaticamente entre pacotes do repositório npm, o maior repositório de bibliotecas JavaScript do mundo. Ele é considerado um dos worms digitais mais sofisticados já documentados, com capacidade de roubar credenciais, infectar pacotes mantidos por desenvolvedores e apagar seus rastros. Seu funcionamento silencioso e sua habilidade de se replicar em cadeia tornam-no especialmente perigoso.
Como o Shai-Hulud 2.0 se infiltra nos sistemas dos desenvolvedores?
O malware se disfarça como um instalador legítimo do Bun, um runtime JavaScript popular. Ao instalar um pacote npm infectado, o script setup_bun.js é executado, parecendo inofensivo. Ele então rouba credenciais e inicia o segundo estágio do ataque com o script bun_environment.js, que é fortemente ofuscado e realiza a coleta e exfiltração de dados sensíveis.
Quais dados o Shai-Hulud 2.0 tenta roubar?
O malware busca tokens de acesso do GitHub, credenciais de serviços de nuvem como AWS, Azure e Google Cloud, além de segredos armazenados no GitHub Actions. Ele utiliza ferramentas como o TruffleHog para escanear o sistema em busca de informações sensíveis e exfiltra esses dados por meio de repositórios públicos criados na própria conta GitHub da vítima.
Como o Shai-Hulud 2.0 se replica e infecta outros pacotes?
Após obter o token do npm da vítima, o malware identifica até 100 pacotes mantidos por ela. Ele baixa, modifica e republica esses pacotes com os scripts maliciosos setup_bun.js e bun_environment.js. O package.json é alterado para executar o código malicioso durante a instalação, criando um ciclo de infecção contínuo e exponencial.
O que acontece se o malware não conseguir roubar dados?
Se o Shai-Hulud 2.0 não encontrar tokens válidos do npm ou GitHub, ele ativa um modo destrutivo que apaga arquivos do diretório home do usuário. Essa ação funciona como uma espécie de retaliação digital por não ter conseguido cumprir seus objetivos.
Quais são os sinais de que um sistema pode estar infectado?
Indicadores incluem pacotes npm com arquivos chamados package.tar, scripts suspeitos como setup_bun.js no package.json, versões de pacotes alteradas rapidamente e presença dos arquivos setup_bun.js e bun_environment.js. No GitHub, sinais incluem repositórios com nomes aleatórios de 18 caracteres, descrições com “Sha1-Hulud: The Second Coming”, branches chamados shai-hulud e arquivos de workflow maliciosos.
Como os desenvolvedores podem se proteger contra o Shai-Hulud 2.0?
A Kaspersky recomenda auditoria imediata com soluções de segurança, verificação de repositórios GitHub, rotação de credenciais (tokens do npm, GitHub e chaves de nuvem), limpeza do ambiente de desenvolvimento e reversão para versões limpas de pacotes suspeitos. Também é importante monitorar logs do GitHub Actions e procurar por indicadores de comprometimento.
star

Continue por aqui