Campanha Massiva Shai-Hulud Compromete Mais de 600 Pacotes npm, Visa Segredos de Desenvolvedores
Um novo ataque de cadeia de suprimentos **Shai-Hulud** injetou código malicioso em mais de 600 pacotes no registro do Node Package Manager (**npm**). A campanha, que visa principalmente o ecossistema `@antv`, rouba segredos de desenvolvedores e CI/CD, exfiltrando-os através da rede Session P2P e do GitHub.

Atores de ameaças publicaram mais de 600 pacotes maliciosos no índice do **Node Package Manager (npm)** como parte de uma nova campanha de cadeia de suprimentos **Shai-Hulud**.
A maioria dos pacotes afetados está no ecossistema `@antv`, que inclui bibliotecas para gráficos, visualização de grafos, criação de fluxogramas e mapeamento. No entanto, pacotes populares fora desse namespace também foram comprometidos.
### Ataque de uma hora
Assim como na campanha anterior **Shai-Hulud** que afetou pacotes **TanStack** e **Mistral**, o payload coleta segredos de ambientes de desenvolvedor e CI/CD e os exfiltra pela rede Session P2P para complicar os esforços de detecção e remoção.
O ator de ameaças também usou o **GitHub** como um mecanismo de exfiltração de fallback e publicou dados roubados em repositórios sob as contas das vítimas quando tokens usados para publicação foram encontrados.
De acordo com a empresa de segurança de aplicativos **Socket**, os hackers publicaram 639 versões maliciosas em 323 pacotes exclusivos em cerca de uma hora em 19 de maio, entre 01:56 UTC e 02:56 UTC.
O ataque começou com a compromisso da conta npm `atool`, que publica os pacotes no namespace `@antv`. Algumas das bibliotecas impactadas incluem:
* echarts-for-react
* @antv/g2
* @antv/g6
* @antv/x6
* @antv/l7
* @antv/g2plot
* @antv/graphin
* timeago.js
* size-sensor
* canvas-nest.js
Pesquisadores da **Endor Labs** destacam que alguns dos pacotes (por exemplo, timeago.js, size-sensor e jest-canvas-mock) não recebiam uma atualização legítima há muito tempo e tinham menor probabilidade de ter seu recurso de segurança de publicação confiável OIDC configurado.
Por exemplo, embora o *jest-canvas-mock* ainda tenha 10 milhões de downloads mensais, ele está inativo há cerca de 3 anos.
Pesquisadores da **Socket** mantêm uma lista de artefatos de pacotes afetados por todos os ataques **Shai-Hulud**, que cresceu para mais de 1.000 entradas.
As campanhas **Shai-Hulud** começaram em setembro passado e continuam a afetar múltiplos ecossistemas de software, como npm, PyPI e Composer, em menor grau.
### Publicando no GitHub
O malware compromete contas de mantenedores ou tokens de publicação para enviar pacotes legítimos com código malicioso que rouba segredos de desenvolvedores e CI/CD, e pode se espalhar para outros projetos usando as credenciais roubadas.
A última onda envolve a injeção de um payload `index.js` altamente ofuscado que tenta roubar credenciais de **GitHub**, npm, nuvem, Kubernetes, Vault, Docker, banco de dados e SSH.
Ele visa principalmente estações de trabalho de desenvolvedores e ambientes de CI/CD, incluindo **GitHub Actions**, GitLab CI, Jenkins, Azure DevOps, CircleCI, Vercel, Netlify e outras plataformas de build.
Os dados roubados são serializados, comprimidos com Gzip, criptografados com AES-256-GCM e encapsulados com RSA-OAEP para dificultar a inspeção de rede.
Quando credenciais do **GitHub** estão disponíveis, o malware usa a API do **GitHub** para criar automaticamente novos repositórios sob a conta da vítima e fazer upload dos dados roubados para eles.
Repositórios publicados como resultado deste ataque possuem um arquivo Readme com a string `niaga og ew ereh :duluh-iahs`, que é o reverso de *Shai-Hulud: Here We Go Again*, uma frase usada no vazamento do malware **Shai-Hulud** na semana passada.
Um relatório da plataforma de segurança de software **Aikido** observa que existem mais de 2.700 repositórios falsos no **GitHub** que correspondem aos marcadores da campanha.
Uma busca antes da publicação deste artigo mostra que existem atualmente pelo menos 2.900 repositórios **GitHub** gerados pela mais recente campanha de cadeia de suprimentos **Shai-Hulud**.

O principal canal de exfiltração, no entanto, é para *filev2.getsession[.]org/file/* via rede Session P2P. o endpoint *t.m-kosche.com* para envio das credenciais roubadas.
"Na rede, este é um tráfego criptografado de ponta a ponta em TCP/443, indistinguível do tráfego legítimo do aplicativo Session na camada de rede. Não há um endpoint C2 [comando e controle] tradicional para bloquear por nome de host ou IP", dizem os pesquisadores da **Endor Labs**.
### Pacote com aparência legítima
Uma adição importante e nova que a **Endor Labs** observou nesta variante **Shai Hulud** é sua capacidade de gerar atestações de proveniência **Sigstore** válidas, abusando de tokens OpenID Connect (OIDC) de ambientes de CI comprometidos e enviando-os para Fulcio e Reko.
Uma capacidade semelhante foi observada no payload entregue no ataque **TanStack** atribuído ao TeamPCP, quando o ator de ameaças publicou versões de pacotes maliciosos com atestado de proveniência verificável de Níveis de Cadeia de Suprimentos para Artefatos de Software (SLSA).
Como resultado, pacotes npm maliciosos podem parecer legitimamente assinados e passar por verificações padrão de verificação de proveniência, apesar de conterem malware que rouba credenciais.
A capacidade de auto-propagação também está presente neste ataque. O malware valida tokens npm roubados, enumera pacotes de propriedade da vítima, baixa os tarballs, injeta o payload malicioso e republica pacotes infectados com números de versão incrementados.
Dado que o código do **Shai Hulud** foi recentemente vazado no **GitHub** pelo grupo de ameaças TeamPCP e já foi usado em ataques, a atribuição da nova campanha **Shai-Hulud** é mais difícil.
### Persistência via VS Code e Claude Code
A **Socket** afirma que esta variante difere tecnicamente das cargas úteis anteriores do Mini **Shai-Hulud**, mas compartilha as mesmas características operacionais.
"As cargas úteis AntV diferem dos artefatos anteriores do Mini **Shai-Hulud**, como os payloads router_init.js e router_runtime.js relacionados ao Intercom do **TanStack**", explica a **Socket**.
"A amostra AntV usa um index.js de nível raiz, um endpoint C2 primário diferente e um corpo de payload menor. No entanto, o modelo operacional principal é consistente."
A **Aikido Security** confirma que, embora o modelo principal seja o mesmo, existem algumas diferenças. O payload agora é menor e há persistência através de backdoors plantados em configurações do VS Code e Claude Code.
Os pesquisadores alertam que isso pode indicar que "o atacante está pensando sobre o que acontece depois que a compromisso inicial é limpo".
A recomendação geral para desenvolvedores que baixaram algum dos pacotes npm infectados é removê-los imediatamente ou reverter para uma versão conhecida e segura publicada antes de 18 de maio, e então revogar e rotacionar todas as credenciais expostas (por exemplo, tokens do **GitHub**, tokens de nuvem, chaves SSH).
Relatórios sobre o ataque de empresas de segurança de aplicativos como **Socket**, **Endor Labs**, **Aikido Security** e **Step Security** incluem indicadores de comprometimento, juntamente com conselhos de detecção, remediação e mitigação que os defensores podem usar para proteger ambientes de desenvolvimento.
**[ATUALIZAÇÃO: 10:31 EST]:** *Artigo atualizado com informações da **Aikido Security** e **Microsoft**.*
[A Lacuna de Validação: Pentest Automatizado Responde a Uma Pergunta. Você Precisa de Seis.](https://hubs.li/Q048zztN0)
Ferramentas de pentest automatizadas entregam valor real, mas foram construídas para responder a uma pergunta: um atacante pode se mover pela rede? Elas não foram construídas para testar se seus controles bloqueiam ameaças, se suas regras de detecção disparam ou se suas configurações de nuvem se sustentam.
Este guia cobre as 6 superfícies que você realmente precisa validar.
[Baixe Agora](https://hubs.li/Q048zztN0)