Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
tanscript-exploit-check — Verificador de IOC para o ataque à cadeia de suprimentos npm TanStack/Mini Shai-Hulud (CVE-2026-45321) | Kitploit
Ferramentas/GitHubGitHub/nkopylov/tanscript-exploit-check
Gerenciamento de Indicadores de Comprometimento (IOC)Análise de VulnerabilidadesAnálise ForenseInteligência de AmeaçasSegurança da Cadeia de SuprimentosResposta a Incidentes
GitHubnkopylov/tanscript-exploit-check

tanscript-exploit-check

Verificador de IOC para o ataque à cadeia de suprimentos npm TanStack/Mini Shai-Hulud (CVE-2026-45321)

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
1há 2 mesesAinda não revisado

Ataque à Cadeia de Suprimentos Mini Shai-Hulud — Verificador de IOC

root@kitploit:~
curl -fsSL https://raw.githubusercontent.com/nkopylov/tanscript-exploit-check/main/check-tanstack-exploit.sh | bash

Ou clone e execute localmente:

root@kitploit:~
git clone https://github.com/nkopylov/tanscript-exploit-check.git
cd tanscript-exploit-check
./check-tanstack-exploit.sh [project_dir ...]

O que aconteceu

Este verificador cobre duas ondas da campanha de ataque à cadeia de suprimentos Mini Shai-Hulud pela TeamPCP:

Onda 1: Comprometimento do CI/CD do TanStack (11 de maio de 2026)

Em 11 de maio de 2026 (19:20-19:26 UTC), um atacante publicou 84 versões maliciosas em 42 pacotes npm @tanstack/* em uma janela de 6 minutos. O ataque também atingiu pacotes da Mistral AI, UiPath, OpenSearch e outros — mais de 170 pacotes no total entre npm e PyPI.

Nenhuma credencial de mantenedor foi roubada. O atacante explorou a própria cadeia de confiança do CI/CD por meio de um ataque em 3 estágios:

  1. Exploração de pull_request_target — Um fork descartável do GitHub abriu um PR que executou código do atacante no contexto de segurança do repositório base
  2. Envenenamento de cache do GitHub Actions — O código do fork envenenou o cache compartilhado do pnpm, que posteriormente infectou fluxos de trabalho de lançamento legítimos
  3. Extração de token OIDC da memória do processo — O código malicioso extraiu tokens de publicação npm diretamente da memória do runner do GitHub Actions, produzindo pacotes com atestados de proveniência SLSA Build Level 3 válidos

Onda 2: Invasão da conta npm "atool" (19 de maio de 2026)

Em 19 de maio de 2026 (01:39-02:06 UTC), a conta npm comprometida atool ([email protected]) publicou 637 versões maliciosas em 314 pacotes em duas ondas automatizadas. Alvos de alto impacto incluem:

  • size-sensor (4.2M downloads/mês)
  • echarts-for-react (3.8M downloads/mês)
  • @antv/scale (2.2M downloads/mês)
  • timeago.js (1.15M downloads/mês)

Esta onda usou um payload baseado em Bun (index.js de 498KB) acionado via "preinstall": "bun run index.js", com um payload de segundo estágio oculto em commits impostores enviados para o repositório GitHub antvis/G2 através da exploração de compartilhamento de objeto fork.

O que o código malicioso faz (ambas as ondas)

Ambas as ondas usam a mesma família de ferramentas "Mini Shai-Hulud":

  • Coleta de credenciais: Mais de 80 variáveis de ambiente, cadeia completa da AWS (env → config → IMDSv2 → ECS → Secrets Manager), PATs do GitHub, tokens npm, chaves SSH, tokens K8s, tokens Vault, gerenciadores de senhas (1Password, Bitwarden, pass, gopass)
  • Persistência: Daemons gh-token-monitor (Onda 1) e kitty-monitor (Onda 2) via LaunchAgent/systemd; hooks em .claude/settings.json e .vscode/tasks.json
  • Exfiltração: Redes P2P (Onda 1), API Git Data do GitHub + HTTPS disfarçado como traces OpenTelemetry (Onda 2)
  • Abuso de CI/CD: Injeção em workflow despejando toJSON(secrets), troca de token OIDC npm
  • Chave de homem morto: rm -rf ~/ se o token do GitHub for revogado enquanto o daemon estiver ativo
  • C2 via Dead-drop (Onda 2): Consulta a API de busca de commits do GitHub pela palavra-chave firedalazer, comandos assinados com RSA-PSS

O que este script verifica

Pacotes afetados

Onda 1: TanStack (42 pacotes)

Apenas @tanstack/router* e @tanstack/start* foram afetados. NÃO afetados: @tanstack/query*, @tanstack/table*, @tanstack/form*, @tanstack/virtual*, @tanstack/store.

Veja o aviso completo para todos os 42 pacotes.

Onda 2: Conta atool (314 pacotes)

Todos os pacotes publicados pelo usuário npm atool ([email protected]) receberam versões maliciosas em 19 de maio de 2026. Pacotes de alto impacto incluem:

PacoteDownloads mensais
size-sensor4.2M
echarts-for-react3.8M
@antv/scale2.2M

Além de 310+ pacotes principalmente no escopo @antv/* (@antv/g2, @antv/g6, @antv/l7, @antv/s2, @antv/x6, @antv/f2, etc.), ai-figure, timeago-react, jest-canvas-mock, jest-date-mock e outros.

Veja o artigo do SafeDep para a lista completa.

Remediação (se comprometido)

CRÍTICO: Desative a chave de homem morto ANTES de revogar qualquer token. O malware limpa $HOME se os tokens forem revogados enquanto o daemon estiver ativo.

  1. Elimine os daemons de persistência (gh-token-monitor E kitty-monitor) e remova os serviços LaunchAgent/systemd
  2. Remova os arquivos de persistência (.claude/router_runtime.js, .vscode/setup.mjs, ~/.local/share/kitty/cat.py, /var/tmp/.gh_update_state, etc.)
  3. Exclua node_modules e lockfiles, reinstale com --ignore-scripts
  4. Rotacione TODAS as credenciais (npm, GitHub, AWS, GCP, chaves SSH, tokens Vault, tokens de gerenciadores de senhas, etc.)
  5. Bloqueie domínios do atacante no nível de DNS/firewall (api.masscan.cloud, filev2.getsession.org, git-tanstack.com, t.m-kosche.com)
  6. Audite logs do provedor de nuvem para 11 a 19 de maio de 2026

Anúncios oficiais e referências

Onda 1: TanStack (11 de maio)

  • CVE-2026-45321 (CVSS 9.6 Crítico) — Registro CVE
  • GHSA-g7cv-rxg3-hmpx — Aviso GitHub
  • TanStack Postmortem — tanstack.com/blog/npm-supply-chain-compromise-postmortem
  • TanStack Hardening Follow-up — tanstack.com/blog/incident-followup
  • Issue de rastreamento GitHub — TanStack/router#7383

Onda 2: Invasão da conta atool (19 de maio)

  • Análise do SafeDep — safedep.io/mini-shai-hulud-strikes-again-314-npm-packages-compromised

Artigos de pesquisadores de segurança

  • Socket.dev
  • Snyk
  • StepSecurity (descobridores originais)
  • Wiz
  • Orca Security
  • SecurityWeek

Prompts de endurecimento para agentes de codificação de IA

Copie e cole estes prompts em seu agente de codificação de IA (Claude Code, Cursor, Cline/OpenClaw, Windsurf, Hermes, etc.) para endurecer seu projeto contra ataques à cadeia de suprimentos como este.

Prompt 1: Atraso na publicação npm (quarentena de novas versões)

Endureça a configuração npm deste projeto contra ataques à cadeia de suprimentos. Faça o seguinte:

  1. Fixar versões exatas: Remova todos os prefixos ^ e ~ de cada dependência em package.json para que npm install nunca puxe silenciosamente uma versão recém-publicada.

  2. Desabilitar scripts postinstall por padrão: Adicione ignore-scripts=true ao .npmrc. Em seguida, adicione um script "preinstall" explícito em package.json que execute apenas os scripts de ciclo de vida conhecidos como seguros que este projeto realmente precisa (se houver).

  3. Impor instalações apenas com lockfile no CI: Certifique-se de que o CI use npm ci (não npm install). Se houver um arquivo de configuração do CI, verifique isso. Caso contrário, anote como uma etapa manual.

  4. Adicionar verificação de proveniência: Adicione npm audit signatures como uma etapa no pipeline do CI e como um hook git pre-push.

Prompt 2: Endurecer configuração do agente de IA

Audite e endureça a configuração do agente de codificação de IA deste projeto contra ataques de injeção na cadeia de suprimentos (como a campanha TanStack/Mini Shai-Hulud que injetou hooks maliciosos em .claude/settings.json e .vscode/tasks.json). Faça o seguinte:

Claude Code (.claude/):

  1. Revise .claude/settings.json e .claude/settings.local.json em busca de entradas hooks que executem comandos shell. Sinalize qualquer coisa que execute arquivos .js, .mjs ou .sh — especialmente de dentro de .claude/, .vscode/ ou node_modules/.
  2. Remova quaisquer hooks que você não consiga rastrear a um propósito legítimo criado pelo usuário.
  3. Adicione uma regra para impedir que seja commitado (deve permanecer local).

Prompt 3: Endurecimento do GitHub Actions

Audite e endureça a configuração do GitHub Actions neste repositório contra ataques à cadeia de suprimentos de CI/CD. Faça o seguinte:

  1. Remova ou refatore quaisquer gatilhos pull_request_target — estes executam código do workflow no contexto do repositório base com acesso a segredos, mesmo quando acionados por um fork. Substitua por pull_request + um workflow separado com aprovação, se necessário.

  2. Fixe todas as ações de terceiros em SHAs de commit completos (não tags ou branches). Por exemplo, substitua actions/checkout@v4 por actions/checkout@<sha-completo>. Adicione um comentário com a tag para legibilidade.

  3. Aplique permissões de privilégio mínimo a cada workflow. Adicione blocos permissions: explícitos. A maioria dos workflows precisa apenas de contents: read. Workflows de publicação precisam de id-token: write — e nada mais.

  4. Restrinja o escopo do cache: Se estiver usando actions/cache, garanta que as chaves de cache sejam específicas do branch para evitar envenenamento entre branches. Adicione restore-keys com cuidado — não restaure caches de branches não confiáveis.

Licença

MIT

Baixar ferramenta
#VerificaçãoDescrição
1Chave de homem mortoDaemons de persistência: gh-token-monitor (Onda 1), kitty-monitor (Onda 2)
2Processos maliciososNomes de processos conhecidos do atacante (ambas as ondas)
3Arquivos de payloadArquivos maliciosos conhecidos por nome e hash SHA-256 (4 hashes)
4Hooks do Claude CodeHooks injetados em .claude/settings.json + heurística genérica SessionStart
5Tarefas do VS CodeTarefas injetadas em .vscode/tasks.json + heurística genérica runOn: folderOpen
6GitHub ActionstoJSON(secrets) em qualquer workflow + aviso de pull_request_target
7Lockfiles npmVersões de pacotes comprometidas em lockfiles
8optionalDependencies@tanstack/setup e @antv/setup maliciosos + 4 SHAs de commit impostores
9Conexões de redeConexões ativas com infraestrutura C2 (5 domínios/IPs)
10Cache DNSResolução anterior de domínios do atacante (4 domínios)
11Branches GitPadrão de nomeação de branch do atacante com tema Dune
12Scripts de ciclo de vidaHeurística: bun run em preinstall/postinstall (pacotes instalados)
13C2 via Dead-dropPalavra-chave firedalazer e marcadores "Shai-Hulud" no histórico git
14Dependências GitHubHeurística: Dependências github: fixadas em SHA de commit em optionalDeps
PacoteVersões maliciosasPrimeira versão segura
@tanstack/react-router1.169.5, 1.169.81.169.9
@tanstack/router-core1.169.5, 1.169.81.169.9
@tanstack/vue-router1.169.5, 1.169.81.169.9
@tanstack/solid-router1.169.5, 1.169.81.169.9
@tanstack/react-start1.167.68, 1.167.711.167.72
@tanstack/router-plugin1.167.38, 1.167.411.167.42
timeago.js
1.15M
  • Criar um script de política de atualização: Crie um scripts/safe-update.sh que:

    • Recebe um nome de pacote como argumento
    • Verifica quando a versão mais recente foi publicada (npm view <pkg> time --json)
    • Recusa-se a atualizar se a versão tiver menos de 3 dias
    • Se for mais antiga que 3 dias, executa npm install <pkg>@latest --save-exact
    • Imprime um resumo do que mudou
  • Não altere nenhum código de aplicação. Apenas mexa em arquivos de configuração, .npmrc, scripts de package.json e configuração do CI.

    .gitignore
    .claude/settings.local.json

    VS Code (.vscode/):

    1. Revise .vscode/tasks.json e .vscode/launch.json em busca de tarefas que executem scripts ou binários inesperados.
    2. Remova quaisquer entradas de tarefa que referenciem arquivos como setup.mjs, router_runtime.js ou outros nomes que não pertencem a este projeto.
    3. Verifique .vscode/extensions.json por extensões que você não reconhece.

    Cursor (.cursor/):

    1. Revise .cursor/settings.json e quaisquer arquivos de regras em busca de comandos ou hooks injetados.
    2. Mesmas verificações do VS Code acima — Cursor herda a configuração .vscode/.

    Geral:

    1. Verifique se há scripts preinstall, postinstall, prepare ou prestart em package.json que você não escreveu. Sinalize os suspeitos.
    2. Verifique .github/workflows/ por qualquer workflow que use pull_request_target — sinalize como um risco de segurança com um comentário explicando o porquê.
    3. Garanta que .gitignore exclua arquivos de sessão do agente que possam vazar credenciais (.claude/projects/, .cursor/logs/, etc.).

    Relate o que encontrou e o que alterou. Não modifique código de aplicação.

  • Adicione StepSecurity Harden-Runner como o primeiro passo em cada job: step-security/harden-runner@v2 com egress-policy: audit (ou block se você souber seus endpoints permitidos).

  • Verifique segredos nos logs do workflow: Garanta que nenhum passo do workflow imprima ${{ secrets.* }} ou ${{ toJSON(secrets) }} na saída padrão.

  • Relate todas as alterações. Não modifique código de aplicação.