Ataque Massivo ao TanStack: 84 Pacotes npm Comprometidos e o Impacto na Segurança da Cadeia de Suprimentos

Ataque Massivo ao TanStack: 84 Pacotes npm Comprometidos e o Impacto na Segurança da Cadeia de Suprimentos

Uma nova campanha de ataque comprometeu 84 pacotes npm no ecossistema TanStack, visando roubar credenciais e segredos de ambientes CI/CD, incluindo o GitHub Actions. O artigo detalha o mecanismo de infecção, os riscos para desenvolvedores e empresas, e as medidas de resposta necessárias.

MundiX News·14 de maio de 2026·10 min de leitura·👁 2 views

A equipe de pesquisa de ameaças da Socket Research Team descobriu a comprometimento de 84 pacotes npm no namespace @tanstack, com a injeção do implante malicioso Mini Shai-Hulud. Este malware foi projetado para roubar credenciais e segredos de ambientes CI/CD, incluindo o GitHub Actions. A gravidade da situação é amplificada pelo fato do malware ser executado automaticamente durante a instalação de dependências através de hooks de ciclo de vida do npm. Além disso, alguns dos pacotes afetados são extremamente populares, como o @tanstack/react-router, que possui mais de 12 milhões de downloads semanais. Este incidente representa uma ameaça significativa à segurança da cadeia de suprimentos de software.

O ataque se aproveita de um arquivo router_init.js malicioso, que é executado durante a instalação das dependências. Este arquivo, com cerca de 2,3 MB, é altamente ofuscado, utilizando técnicas como a rotação de strings, referências em formato hexadecimal e a inserção de código morto. O arquivo inclui funcionalidades como a demonização baseada em spawn com proteção contra reentrada, acesso a variáveis de ambiente GITHUB_* (segredos acessíveis apenas em Actions/CI), armazenamento temporário de dados e operações de transmissão/envio de dados. Versões recentemente publicadas também contêm um campo optionalDependencies no arquivo package.json, que aponta para um commit no repositório TanStack/router com o hash 79ac49eedf774dd4b0cfa308722bc463cfe5885c. Este commit, que adiciona um pacote chamado @tanstack/setup e registra um hook prepare, permite a execução de código arbitrário em estações de trabalho de desenvolvedores ou sistemas CI durante a instalação.

A equipe TanStack, em seu post-mortem, explicou que a comprometimento foi resultado de uma série de ataques ao GitHub Actions, envolvendo o padrão pull_request_target. O ataque explorou a injeção de código malicioso no cache do GitHub Actions, através da fronteira de confiança fork-to-base, e a extração de tokens OIDC da memória durante a execução do processo GitHub Actions runner. A TanStack declarou que os tokens npm não foram roubados, e o fluxo de trabalho de publicação npm não foi comprometido. Em vez disso, o código malicioso foi executado no CI, e os pacotes foram publicados no npm em nome do projeto através de uma ligação OIDC confiável. Para mitigar os riscos, é crucial verificar a integridade dos arquivos router_init.js, alterar todos os segredos em sistemas afetados, revogar as permissões de federação OIDC para GitHub Actions e verificar os logs de publicação npm em busca de atividades suspeitas. Além disso, é importante bloquear conexões de saída para filev2.getsession[.]org e implementar a Subresource Integrity ou a verificação de arquivos de bloqueio de pacotes.

Como verificar seu sistema e minimizar os efeitos do ataque:

  • Verificação Inicial: Execute shasum -a 256 para todos os arquivos router_init.js na árvore de suas dependências. Compare o resultado com o hash: ab4fcadaec49c03278063dd269ea5eef82d24f2124a8e15d7b90f2fa8601266c.
  • Alterar Segredos: Altere todos os segredos em quaisquer sistemas onde a versão afetada de @tanstack/* foi instalada. A prioridade é:
    • Tokens npm
    • Tokens GitHub PAT / Confiança OIDC
    • Credenciais AWS (chaves estáticas e funções de instância)
    • Tokens Vault
    • Tokens de conta de serviço no Kubernetes
  • Revogar Permissões OIDC: Revogue as permissões de federação OIDC para GitHub Actions de todos os pacotes npm publicados dos repositórios afetados; restaure-as somente após confirmar que o fluxo de trabalho de publicação não foi alterado pelos invasores.
  • Verificar Diretórios: Verifique os diretórios .claude/ e .vscode/ em todos os diretórios home dos desenvolvedores e nas raízes dos projetos. Remova router_runtime.js, setup.mjs, bem como quaisquer entradas desconhecidas em settings.json ou tasks.json.
  • Verificar Commits: Revise os commits recentes em seus repositórios GitHub do autor claude@users.noreply.github.com, se eles não foram criados através do aplicativo GitHub legítimo Claude Code. Use:
    bash
    undefined

git log --all --author=claude@users.noreply.github.com

    Se tais commits forem descobertos, reverta-os e execute um force-push.
*   **Verificar Logs de Publicação npm:** Verifique os logs de publicação npm em busca de publicações inesperadas de pacotes de sua organização, especialmente versões publicadas de runners do GitHub Actions sem o envolvimento de um membro da equipe.
*   **Bloquear Conexões de Saída:** Bloqueie as conexões de saída para `filev2.getsession[.]org` e a infraestrutura Session associada no perímetro da rede, se ela não for usada em seu trabalho. Como a faixa de endereços IP da rede de nós de serviço Session é distribuída, o bloqueio no nível DNS para `.getsession.org` será mais eficaz do que as regras por IP.
*   **Implementar Subresource Integrity:** Implemente Subresource Integrity ou verificação de arquivos de bloqueio de pacotes com o campo `integrity` fixado para todos os pacotes `@tanstack/*` em `package-lock.json` ou `pnpm-lock.yaml`. Qualquer versão com uma incompatibilidade de hash deve bloquear o CI.
*   **Restringir Escopos de Tokens OIDC:** Nos fluxos de trabalho do GitHub Actions, defina `permissions: id-token: none` em todos os fluxos de trabalho que não precisam explicitamente de publicação OIDC e conceda a permissão `id-token: write` apenas à tarefa específica que executa a publicação.
*   **Não Confie Apenas em Badges de Origem Sigstore:** Este implante malicioso demonstra que um invasor, com a capacidade de executar código no GitHub Actions, é capaz de criar atestações Sigstore formalmente corretas para pacotes maliciosos.

A tabela a seguir ajuda a rastrear os artefatos de pacotes comprometidos em todas as ondas da campanha Mini Shai-Hulud. (Tabela omitida para manter a concisão)

📤 Compartilhar & Baixar