Hack Alerta

Shai Hulud 2.0: worm em pacotes npm com capacidade wiper

A Kaspersky descreve Shai Hulud 2.0, um worm que infectou mais de 800 pacotes npm e combina rotinas de roubo de credenciais com um payload destrutivo que apaga arquivos quando a exfiltração falha; mais de 1.700 tentativas foram bloqueadas desde setembro, com 9,7% dos casos detectados no Brasil.

Pesquisadores da Kaspersky identificaram uma nova variante do worm Shai Hulud que compromete pacotes npm e combina recursos de infostealer com capacidade destrutiva (wiper).

Descoberta e panorama

Em relatório divulgado pela Kaspersky, a versão denominada Shai Hulud 2.0 infectou mais de 800 pacotes npm e, segundo telemetria do fabricante, teve tentativas de ataque bloqueadas em mais de 1.700 máquinas desde setembro. As detecções foram observadas globalmente, com maior incidência em Rússia (18,5% dos bloqueios), Índia (10,7%) e Brasil (9,7%).

Abordagem técnica

O ataque opera em duas etapas. Na fase inicial, um script chamado setup_bun.js é inserido no campo preinstall do package.json de pacotes legítimos. Esse script, propositalmente não ofuscado e documentado para se parecer com um instalador do runtime Bun, verifica instalações locais e procede com a instalação do Bun quando necessário, preparando o ambiente para a carga útil principal.

A segunda etapa é executada pelo runtime Bun e carrega um arquivo ofuscado chamado bun_environment.js, relatado pela Kaspersky como um script de aproximadamente 10 MB ofuscado com ferramenta semelhante ao obfuscate.io. Esse componente concentra as rotinas de roubo de segredos, exfiltração e replicação.

Vetor e técnicas de exfiltração

Shai Hulud 2.0 busca credenciais em múltiplas fontes: variáveis de ambiente e configurações do GitHub CLI à procura de tokens começando por ghp_ ou gho_, metadados de instâncias em provedores de nuvem (AWS, Azure, Google Cloud) via API de metadata e SDKs oficiais, além de uma varredura local usando TruffleHog para identificar segredos em arquivos.

Para extrair os dados, o malware estabelece um canal via um repositório público no GitHub. Quando encontra um token válido, cria um repositório com um nome aleatório de 18 caracteres e usa a descrição como marcador para armazenar as informações coletadas. Caso não encontre token localmente, o código procura por tokens previamente roubados em repositórios públicos que contenham um marcador de campanha (texto específico na descrição).

Replicação e comportamento worm-like

Para se propagar, o script escaneia arquivos .npmrc em busca de tokens de registro do npm. Depois de validar um token com a API /-/whoami do npm, o malware obtém até 100 pacotes mantidos pela conta e injeta os arquivos maliciosos via bundleAssets, atualizando a versão e configurando o setup_bun.js como script de preinstall antes de republicar o pacote no registro.

Componente destrutivo

A Kaspersky observou que, se a ameaça for incapaz de obter tokens válidos para exfiltração (nem GitHub nem npm), ela dispara um payload destrutivo que apaga arquivos do usuário, concentrando-se principalmente no diretório home. A família é identificada pelas soluções da empresa como HEUR:Worm.Script.Shulud.gen.

Impacto e alcance

O alcance da campanha é amplo por natureza: compromete a cadeia de suprimentos de pacotes npm e, portanto, pode afetar tanto desenvolvedores individuais quanto pipelines de CI/CD que dependem de dependências públicas. A Kaspersky fornece uma lista de pacotes afetados e informações adicionais por meio de seu feed público de ameaças a componentes open source.

Limites das informações

O relatório traz detalhes técnicos extensos sobre vetores, artefatos e comportamento, mas não fornece um inventário público completo dos alvos finais nem nomes comerciais de vítimas específicas além das estatísticas regionais citadas; a Kaspersky mantém a lista de pacotes afetados em seu feed de open source.

Repercussão e ações recomendadas (do relatório)

  • Monitorar e rotacionar tokens e credenciais expostas em variáveis de ambiente e arquivos de configuração.
  • Auditar repositórios e workflows do GitHub em busca de commits, workflows ou descrições suspeitas que possam indicar uso de tokens roubados.
  • Verificar pacotes npm usados em projetos contra feeds e listas de componentes maliciosos fornecidos por fornecedores de inteligência como a Kaspersky.

As fontes não detalham atribuições do ataque nem o número exato de vítimas finais por organização; a Kaspersky declara apenas as porcentagens regionais e o número de bloqueios observados.


Baseado em publicação original de Kaspersky
Publicado pela Redação Hack Alerta com base em fontes externas citadas e monitoramento editorial do Hack Alerta. Para decisões técnicas, operacionais ou jurídicas, confirme sempre os detalhes na fonte original.