Mini Shai-Hulud Ataca Novamente: Ataque de Cadeia de Suprimentos Compromete Pacotes TanStack, UiPath e Mistral AI
Um sofisticado ataque de cadeia de suprimentos, apelidado de 'Mini Shai-Hulud', comprometeu inúmeros pacotes **npm** e **PyPI**, incluindo os de **TanStack**, **UiPath**, **Mistral AI**, **OpenSearch** e **Guardrails AI**. O ataque, atribuído ao ator de ameaças **TeamPCP**, utiliza GitHub Actions e tokens OIDC sequestrados para distribuir malware e roubar credenciais sensíveis.

A mais recente campanha do **TeamPCP**, apelidada de Mini Shai-Hulud, demonstra uma evolução nas táticas de ataque de cadeia de suprimentos, impactando a integridade dos ecossistemas de desenvolvimento de software.
### Roubo de Credenciais e Técnicas de Evasão
Os pacotes **npm** comprometidos foram modificados para incluir um arquivo JavaScript ofuscado ("router_init.js"). Este script malicioso perfila o ambiente de execução e implanta um roubador de credenciais abrangente. O roubador visa provedores de nuvem, carteiras de criptomoedas, ferramentas de IA, aplicativos de mensagens e sistemas de CI como Github Actions. Relatórios da **Aikido Security**, **Endor Labs**, **SafeDep**, **Socket**, **StepSecurity** e **Snyk** detalham o ataque, observando que os dados exfiltrados são enviados para "filev2.getsession[.]org".
Os atacantes estão usando a infraestrutura do Session Protocol, provavelmente para evadir detecção, misturando-se ao tráfego legítimo do serviço de mensagens focado em privacidade. Como backup, os dados criptografados também são commitados em repositórios controlados pelo atacante sob o nome de autor "[email protected]" via GitHub GraphQL API, usando tokens GitHub roubados.
### Persistência e Movimentação Lateral
O malware demonstra persistência estabelecendo hooks no **Claude Code** e no **Microsoft Visual Studio Code** (**VS Code**), garantindo que o roubador seja reexecutado a cada inicialização das IDEs. Um serviço `gh-token-monitor` é instalado para monitorar continuamente e re-exfiltrar tokens do GitHub. Além disso, fluxos de trabalho maliciosos do GitHub Actions são injetados para serializar segredos do repositório em um objeto JSON e fazer upload dos dados para um servidor externo ("api.masscan[.]cloud").
### Vetores de Infecção em Evolução
Ao contrário de ataques anteriores visando pacotes **SAP**, esta campanha emprega uma nova estratégia. Em vez de hooks de pré-instalação, o arquivo JavaScript malicioso é incluído no tarball do pacote, juntamente com uma dependência opcional apontando para um pacote hospedado no GitHub. Essa dependência do GitHub contém um hook de ciclo de vida `prepare` que executa o payload JavaScript usando o runtime **Bun**.
Para pacotes **Mistral AI**, o ataque reverte para a abordagem anterior, substituindo o conteúdo do arquivo `package.json` por um hook de pré-instalação para invocar `node setup.mjs`, que baixa **Bun** e executa o mesmo malware JavaScript.
### CVE-2026-45321: Vulnerabilidade Crítica no TanStack
O comprometimento da cadeia de suprimentos do **TanStack** é rastreado como **CVE-2026-45321**, com uma pontuação CVSS crítica de 9.6 em 10.0. O incidente impactou 42 pacotes e 84 versões em todo o ecossistema **TanStack**.
O **TanStack** rastreou o comprometimento até um ataque em cadeia de GitHub Actions envolvendo o gatilho `pull_request_target`, envenenamento de cache do GitHub Actions e extração de memória em tempo de execução de um token OIDC do processo do runner do GitHub Actions. De acordo com o **TanStack**, nenhum token **npm** foi roubado, e o próprio fluxo de trabalho de publicação **npm** não foi diretamente comprometido.

O pesquisador da **StepSecurity**, Ashish Kurmi, destacou que as versões maliciosas foram publicadas através do pipeline de release do próprio projeto no GitHub Actions, usando tokens OIDC sequestrados. Notavelmente, os pacotes comprometidos carregam atestações de proveniência SLSA Build Level 3 válidas, tornando este o primeiro worm npm documentado a produzir pacotes maliciosos validamente atestados. O worm desde então se espalhou além do **TanStack** para pacotes da **UiPath**, DraftLab e outros mantenedores.
### Abuso de Publicação Confiável e Tokens OIDC
O ataque aproveita a publicação confiável, permitindo que o código controlado pelo atacante em execução dentro de um fluxo de trabalho use suas permissões OIDC para gerar um token de publicação de curta duração durante a compilação e usá-lo para publicar os pacotes sem a necessidade de roubar um token **npm**. O worm se espalha localizando um token **npm** publicável com `bypass_2fa` definido como true, enumerando pacotes publicados pelo mesmo mantenedor e trocando um token OIDC do GitHub por um token de publicação por pacote.
O pesquisador da **Endor Labs**, Peyton Kennedy, explicou que o commit órfão acionou uma execução de fluxo de trabalho do GitHub Actions contra a superfície legítima do fluxo de trabalho **TanStack/router**. Como a configuração do publicador confiável OIDC do repositório concedeu confiança no nível do repositório, em vez de escopo a um branch protegido específico e arquivo de fluxo de trabalho, a execução do fluxo de trabalho acionada por esse commit pôde solicitar um token de publicação **npm** válido e de curta duração.
### Dead-Man's Switch e Payload Destrutivo
Uma nova tática introduzida no malware JavaScript ofuscado é a instalação de um dead-man's switch. Este switch usa um script shell para verificar periodicamente se um token **npm** criado pelo malware é revogado, consultando o endpoint `api.github.com/user` a cada 60 segundos. O token é descrito como "IfYouRevokeThisTokenItWillWipeTheComputerOfTheOwner".
Se o desenvolvedor revogar o token de seu painel **npm**, o script aciona uma rotina destrutiva que executa `rm -rf ~/` na máquina infectada, transformando-a efetivamente em malware wiper. Recomenda-se aos desenvolvedores que não revoguem os tokens **npm** antes de isolar e criar uma imagem do sistema.
### Implicações Mais Amplas e Estratégias de Defesa
A líder de pesquisa de segurança da **Upwind**, Avital Harel, enfatizou que esta campanha reflete uma mudança nos ataques de cadeia de suprimentos em direção à propagação orientada por identidade através de infraestrutura CI/CD confiável. Com os atacantes obtendo acesso a fluxos de trabalho de publicação e identidades de pipeline, o processo de entrega de software se torna o mecanismo de distribuição. A defesa contra isso requer visibilidade comportamental aprimorada durante as instalações e compilações.
### Pacotes Impactados
Além do **TanStack**, a campanha Mini Shai-Hulud se espalhou para os seguintes pacotes:
* [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 **OX Security** relata que o incidente afetou mais de 170 pacotes abrangendo os registros **npm** e **PyPI**, com mais de 518 milhões de downloads cumulativos. Mais de 400 repositórios com credenciais roubadas foram criados como parte da onda de ataques, todos contendo a string "Shai-Hulud: Here We Go Again."
A Wiz, de propriedade da **Google**, relatou que o payload também exfiltra credenciais roubadas através de um terceiro canal redundante.