Shai-Hulud 2.0 surge mais potente e amplia número de alvos, colocando o país entre os mais afetados pela campanha global

JavaScript – O Brasil agora figura entre os três países mais impactados por uma campanha de malware altamente sofisticada que já contaminou mais de 800 pacotes no npm, o maior repositório de bibliotecas JavaScript do mundo.

Identificado como Shai-Hulud 2.0, o ataque coloca desenvolvedores e empresas brasileiras entre os principais alvos de um dos worms digitais mais avançados já investigados. Dados da Kaspersky apontam que 9,7% das mais de 1.700 tentativas identificadas desde setembro ocorreram em sistemas nacionais — atrás apenas da Rússia (18,5%) e da Índia (10,7%).

LEIA: IA generativa amplia abismo digital entre classes sociais brasileiras

O nome Shai-Hulud vem da criatura gigante de Duna. Assim como o verme colossal, o malware se move silenciosamente pelo ecossistema de desenvolvimento, consumindo credenciais, contaminando pacotes e se replicando de forma exponencial. Ele age alterando pacotes do Node Package Manager (npm), repositório essencial para desenvolvedores JavaScript.

Ao instalar um pacote comprometido, o primeiro arquivo executado é o setup_bun.js, que aparenta ser totalmente legítimo. Em vez de esconder seu conteúdo, o script é propositalmente claro, comentado e com aparência profissional. Dessa forma, consegue capturar logins e senhas sem levantar suspeitas.

De posse dessas credenciais, o worm passa a contaminar todos os pacotes mantidos pelo desenvolvedor afetado, republicando versões adulteradas no npm. Outros programadores baixam essas versões e reiniciam o ciclo de infecção.

Os objetivos do ataque incluem:

• roubo de tokens e segredos (incluindo chaves de AWS, Azure e Google Cloud);
• exposição de repositórios privados;
• coleta de dados sensíveis do ambiente local.

“Ele se apresenta como uma ferramenta para instalar o Bun JavaScript runtime, uma tecnologia legítima e popular entre desenvolvedores”, afirma o relatório da Kaspersky. O script checa se o Bun já está presente e, caso não esteja, instala a ferramenta a partir das fontes oficiais, adaptando-se ao sistema operacional da vítima.

Tudo parece natural — e essa aparente normalidade é parte da armadilha. Com o runtime instalado, o ataque real é acionado.

Com o Bun no sistema, o malware executa a segunda fase: o arquivo bun_environment.js, um script de 10 MB intensamente ofuscado usando ferramentas como o obfuscate.io. É ali que a operação completa se desenrola.

O primeiro alvo são os tokens: o worm procura chaves de acesso do GitHub (ghp_ e gho_), além de credenciais de AWS, Azure e Google Cloud, utilizando inclusive serviços de metadados e SDKs oficiais.

Para garantir que nenhum segredo seja deixado para trás, o malware faz o download e executa o TruffleHog, ferramenta legítima conhecida por encontrar credenciais expostas. O Shai-Hulud 2.0 usa o utilitário para vasculhar todo o sistema da vítima de forma agressiva.

GitHub vira canal de exfiltração e arma de ataque

Uma das táticas mais engenhosas do Shai-Hulud 2.0 é o uso do próprio GitHub como meio de exfiltrar dados. Em vez de enviar informações para servidores suspeitos, o malware cria um repositório público aleatório, com 18 caracteres no nome. A descrição desse repositório inclui um marcador específico: “Sha1-Hulud: The Second Coming”.

É para esse espaço que os dados roubados — credenciais, tokens e informações do sistema — são enviados, usando a própria conta da vítima como depósito.

E há um agravante: caso o worm não encontre tokens do GitHub na máquina infectada, ele busca repositórios de outras vítimas que usem o mesmo marcador. Ao localizá-los, rouba os tokens ali já exfiltrados, criando uma rede de compartilhamento involuntário entre vítimas.

Para alcançar segredos protegidos no GitHub Actions, o worm cria branches shai-hulud em todos os repositórios acessíveis à vítima. Neles, insere workflows maliciosos (shai-hulud-workflow.yml) que são executados a cada push.

Esses workflows coletam automaticamente todos os segredos do GitHub Actions e os enviam ao servidor dos operadores, codificados duas vezes em Base64 para reduzir chances de detecção. O processo opera em segundo plano, de forma contínua.

Worm se replica

Após obter as credenciais, o Shai-Hulud 2.0 parte para a replicação. Ele procura o token de autorização do npm no arquivo .npmrc e valida o acesso via API. Com permissão confirmada, lista até 100 pacotes mantidos pela vítima — um avanço significativo em relação à versão anterior, que infectava até 20.

Para cada pacote, o malware:

1. baixa o tarball;
2. cria diretório temporário;
3. descompacta o conteúdo;
4. insere setup_bun.js e bun_environment.js;
5. altera o package.json para executar o script malicioso no preinstall;
6. incrementa a versão;
7. repacota e publica a variante comprometida.

Assim, desenvolvedores inocentes baixam versões aparentemente legítimas, reiniciando a cadeia de infecção.

A característica mais preocupante do novo Shai-Hulud surge quando o ataque falha. Se o worm não encontra tokens válidos do npm ou do GitHub — ficando impossibilitado de roubar dados ou se espalhar —, ele aciona uma rotina destrutiva.

Esse módulo apaga arquivos do usuário, especialmente no diretório home, funcionando como uma espécie de retaliação digital.

Vítimas no mundo inteiro

A análise da Kaspersky mostra que o Shai-Hulud 2.0 atinge tanto desenvolvedores individuais quanto grandes empresas. As maiores concentrações de infecção estão na Rússia (18,5%), Índia (10,7%) e Brasil (9,7%), mas há registros relevantes em Vietnã, China, Turquia e França.

Os mais de 800 pacotes comprometidos já representam milhões de downloads em potencial — cada um oferecendo ao worm novas chances de roubar credenciais, expor repositórios e comprometer cadeias inteiras de desenvolvimento.

Como identificar infecção

Pacotes contaminados costumam apresentar sinais específicos, como:

• presença de um arquivo package.tar (em vez do nome do pacote);
• scripts preinstall ou postinstall suspeitos no package.json;
• versões incrementadas em ritmo atípico;
• arquivos setup_bun.js e bun_environment.js.

No GitHub, os indícios incluem:

• repositórios com nomes aleatórios de 18 caracteres;
• descrição contendo “Sha1-Hulud: The Second Coming”;
• branches shai-hulud em projetos legítimos;
• workflows shai-hulud-workflow.yml no diretório .github/workflows.

Como se proteger

A Kaspersky recomenda uma série de ações emergenciais e preventivas:
• realizar auditoria completa do sistema com solução de segurança confiável;
• examinar repositórios no GitHub em busca de nomes estranhos, branches shai-hulud e workflows suspeitos;
• revisar logs do GitHub Actions para entradas relacionadas a “shai-hulud”;
• rotacionar todos os tokens do npm e do GitHub e renovar chaves de nuvem (AWS, Azure, Google Cloud);
• limpar cache do npm, revisar pacotes instalados e reinstalar versões confiáveis;
• buscar indicadores de comprometimento no sistema e na rede.

(Com informações de Tec Mundo)
(Foto: Reprodução/Freepik/DC Studio)