Mini worm Shai-Hulud compromete pacotes do TanStack, Mistral AI, Guardrails AI e outros
12 de Maio de 2026 Atualizado em 12 de Maio de 2026

Centenas de pacotes distribuídos entre npm, PyPI e Composer foram comprometidos em uma nova campanha de supply chain atribuída ao threat actor TeamPCP, que distribui malware de roubo de credenciais com foco em desenvolvedores. A onda mais recente começou com o comprometimento de dezenas de pacotes da TanStack e da Mistral AI e rapidamente se expandiu para outros projetos populares, como Guardrails AI, UiPath, OpenSearch, Bitwarden CLI e pacotes oficiais da SAP.

Os pacotes npm afetados foram alterados para incluir um arquivo JavaScript ofuscado chamado "router_init.js", projetado para mapear o ambiente de execução e disparar um coletor de credenciais abrangente, capaz de atingir provedores de nuvem, carteiras de criptomoedas, ferramentas de AI, aplicativos de mensagens e sistemas de CI, incluindo Github Actions, Aikido Security, Endor Labs, SafeDep, Socket e StepSecurity, segundo a empresa. O malware também é capaz de coletar tokens OIDC e PAT do GitHub Actions, credenciais do Git, tokens de publicação do npm, segredos de AWS, tokens do HashiCorp Vault, chaves SSH, contas de serviço do Kubernetes, configurações do Claude Code, tarefas do VS Code e arquivos .env.

Os dados são exfiltrados para o domínio "filev2.getsession[.]org". O uso da infraestrutura do Session Protocol é uma tentativa deliberada dos atacantes de evitar detecção, já que o domínio dificilmente seria bloqueado em ambientes corporativos por pertencer a um serviço de mensagens descentralizado e voltado à privacidade. Para exfiltrar as informações sensíveis, o malware também usou a rede P2P Session, fazendo o tráfego parecer comunicação criptografada de mensageiro e dificultando a detecção, o bloqueio e os esforços de remoção.

Como plano de contingência, os dados criptografados são gravados em repositórios controlados pelos atacantes, sob o nome de autor "[email protected]", por meio da GitHub GraphQL API, usando os tokens roubados do GitHub. O malware também é capaz de criar mecanismos de persistência no Claude Code e no Microsoft Visual Studio Code, o VS Code, para sobreviver a reinicializações e executar novamente o coletor sempre que os IDEs forem abertos.

Além disso, ele instala um serviço chamado gh-token-monitor para monitorar e reenviar tokens do GitHub e injeta dois workflows maliciosos do GitHub Actions para serializar os segredos do repositório em um objeto JSON e enviar os dados a um servidor externo em "api.masscan[.]cloud". Uma vez infectado o ambiente, o malware se escreve em hooks do Claude Code e em tarefas de execução automática do VS Code, de modo que desinstalar os pacotes maliciosos não remove a infecção.

A TanStack afirmou ter rastreado a compromissão até um ataque encadeado no GitHub Actions, envolvendo o gatilho "pull_request_target", envenenamento do cache do GitHub Actions e a extração em memória de um token OIDC do processo runner do GitHub Actions. Segundo o relatório de análise pós-incidente da empresa, os atacantes combinaram três vulnerabilidades: um fluxo arriscado do tipo pull_request_target, envenenamento do cache do GitHub Actions e roubo de tokens OIDC da memória do runner.

"Nenhum token npm foi roubado, e o próprio workflow de publicação do npm não foi comprometido", disse a empresa. Segundo a análise, os atacantes teriam posicionado o payload malicioso em um fork no GitHub, injetado-o em arquivos tarball do npm já publicados e, em seguida, sequestrado o workflow legítimo "TanStack/router" do projeto para publicar versões comprometidas com proveniência SLSA válida.

O que torna o worm especialmente incomum é sua capacidade de se espalhar para outros pacotes ao localizar um token npm publicável com bypass_2fa definido como true, enumerar todos os pacotes publicados pelo mesmo mantenedor e trocar um token OIDC do GitHub por um token de publicação por pacote, contornando por completo a autenticação tradicional. O mecanismo de autopropagação continua em grande parte o mesmo das ondas anteriores: ele usa credenciais roubadas do GitHub e do npm, enumera os pacotes vinculados ao mantenedor comprometido, modifica arquivos tarball para inserir o payload e então republica versões maliciosas.

A compromissão da cadeia de suprimentos da TanStack recebeu o identificador CVE-2026-45321 . O caso tem pontuação CVSS de 9,6 em um máximo de 10,0, o que indica severidade crítica. O incidente afetou 42 pacotes e 84 versões no ecossistema da TanStack, que passaram a carregar procedência válida, atestações do Sigstore e assinaturas legítimas do GitHub Actions.

"O ataque publicou versões maliciosas por meio do próprio pipeline de release do GitHub Actions do projeto, usando tokens OIDC sequestrados", disse o pesquisador da StepSecurity, Ashish Kurmi. "Em uma escalada extremamente rara, os pacotes comprometidos carregam atestações válidas de proveniência SLSA Build Level 3, tornando este o primeiro worm documentado para npm que produz pacotes maliciosos com atestado válido."

Desde então, o worm se espalhou além da TanStack para pacotes da UiPath, DraftLab e outros mantenedores. A campanha Shai-Hulud surgiu em setembro do ano passado e teve várias iterações, algumas delas expondo centenas de milhares de segredos de desenvolvedores em repositórios do GitHub gerados automaticamente.

Além da TanStack, a campanha Mini Shai-Hulud também se espalhou para outros pacotes, incluindo alguns no PyPI:

- [email protected] (PyPI)
- [email protected] (PyPI)
- @opensearch-project/[email protected], 3.6.2, 3.7.0 e 3.8.0
- @squawk/[email protected]
- @squawk/[email protected]
- @squawk/[email protected]
- @tallyui/[email protected], 1.0.2 e 1.0.3
- @tallyui/[email protected], 1.0.2 e 1.0.3

A Microsoft, em sua análise do pacote malicioso mistralai no PyPI, disse que ele foi projetado para baixar um coletor de credenciais de um servidor remoto, "83.142.209[.]194", com lógica sensível ao país para evitar ambientes de língua russa e uma "ramificação destrutiva georrestrita que tem 1 chance em 6 de executar rm -rf / quando o sistema aparenta estar em Israel ou Irã". A compromissão do [email protected] também é especialmente notável porque o código malicioso é executado no momento da importação.

"A empresa de segurança de aplicações StepSecurity informa que o threat actor publicou os pacotes infectados por meio do pipeline legítimo de CI/CD, com atestações válidas de procedência SLSA emitidas pela infraestrutura de assinatura do npm e vinculadas ao fluxo legítimo de lançamento do TanStack/router." A Endor Labs relata mais de 160 pacotes comprometidos no npm, a Aikido registrou 373 entradas de versões maliciosas de pacotes, e a Socket monitorou 416 artefatos de pacotes comprometidos entre npm, Python Package Index (PyPI) e Composer.

Pesquisadores afirmam que, como o ataque produz atestações válidas do SLSA Build Level 3 para pacotes maliciosos, é necessário verificar a procedência e adicionar uma camada de análise comportamental no momento da instalação, além de uma checagem baseada em assinatura para identificar pacotes maliciosos. No longo prazo, para reduzir o risco de ataques semelhantes, vale considerar a imposição de instalações apenas com lockfile, o que deve impedir atualizações automáticas ou silenciosas de pacotes.

Publicidade

Anuncie no CaveiraTech e coloque sua marca na frente de milhares de profissionais de cybersecurity

Nossa audiência é formada por analistas, pentesters, decisores e entusiastas que consomem nossas notícias todo dia pelo Site, Newsletter e Instagram. Fale com quem realmente importa para o seu negócio. Anuncie aqui. Saiba mais...