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
tanstack-compromise-checker — Script de shell para detectar indicadores do ataque à cadeia de suprimentos do npm da TanStack (CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx) | Kitploit
Ferramentas/GitHubGitHub/fabriziosalmi/tanstack-compromise-checker
Gerenciamento de Indicadores de Comprometimento (IOC)Scanners de VulnerabilidadesSegurança de ContêineresAnálise ForenseAnálise de MalwareDevSecOpsDetecção de SegredosInteligência de AmeaçasSegurança da Cadeia de Suprimentos

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
Resposta a Incidentes
GitHubfabriziosalmi/tanstack-compromise-checker

tanstack-compromise-checker

Script de shell para detectar indicadores do ataque à cadeia de suprimentos do npm da TanStack (CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx)

Ver Repositório
21há 28 diasAinda não revisado

tanstack-compromise-checker

Detecta indicadores do ataque à cadeia de suprimentos do npm TanStack em uma máquina de desenvolvedor, um repositório ou um runner de CI. Script Bash, imagem Docker e GitHub Action — mesmo mecanismo, três pontos de entrada.

CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx

Em 11 de maio de 2026, atacantes publicaram 84 versões maliciosas em 42 pacotes @tanstack/* via envenenamento de cache do GitHub Actions. O payload rouba tokens do GitHub, tokens npm, credenciais AWS/GCP/Azure e instala um daemon dead-man's switch que apaga ~/ no momento em que o token roubado é revogado.

Início rápido

Escolha o ponto de entrada que corresponde aonde você está.

macOS / Linux / WSL2 / Git Bash

root@kitploit:~
TAG=v1.0.0
curl -fsSLO https://github.com/fabriziosalmi/tanstack-compromise-checker/releases/download/$TAG/check.sh
curl -fsSLO https://github.com/fabriziosalmi/tanstack-compromise-checker/releases/download/$TAG/check.sh.sha256
sha256sum -c check.sh.sha256
bash check.sh --online

Docker — funciona em qualquer SO que rode Docker (incluindo Windows)

root@kitploit:~
docker run --rm -v "$PWD":/scan \
  ghcr.io/fabriziosalmi/tanstack-compromise-checker:v1.0.0 \
  /scan true fail tanstack-findings.json '' GHSA-g7cv-rxg3-hmpx

A imagem é multi-arquitetura (linux/amd64, linux/arm64) e vem com proveniência de build assinada via GitHub OIDC. Verifique antes de executar:

root@kitploit:~
gh attestation verify \
  oci://ghcr.io/fabriziosalmi/tanstack-compromise-checker:v1.0.0 \
  --repo fabriziosalmi/tanstack-compromise-checker

GitHub Action — bloqueie dependências comprometidas no CI

root@kitploit:~
permissions: {}

jobs:
  check:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v6
        with:
          persist-credentials: false
      - uses: fabriziosalmi/tanstack-compromise-checker@v1
        with:
          scan-dir: .
          online: 'true'
          fail-on: fail

Um workflow completo e endurecido está em .github/workflows/tanstack-check.yml e é o mesmo workflow que este repositório executa contra si mesmo.

O que o script verifica

Com --online, o script também busca o advisory do GHSA em tempo de execução para que a cobertura de detecção acompanhe o estado mais recente do advisory em vez de uma lista embutida de versões.

Família afetada: @tanstack/router, @tanstack/react-router, @tanstack/history, @tanstack/start, @tanstack/eslint-plugin-router e pacotes relacionados.

Famílias limpas (não afetadas): @tanstack/react-query, @tanstack/react-table, @tanstack/react-virtual, @tanstack/form, @tanstack/store.

Uso

root@kitploit:~
# Quick check (current user's home)
bash check.sh

# Online mode: query the GHSA advisory and npm registry publish-time
bash check.sh --online

# Scan a specific directory
bash check.sh --scan-dir /path/to/your/repos

# JSON output for CI/SIEM integration
bash check.sh --json > findings.json

# Suggest pin commands for affected repos (dry-run)
bash check.sh --scan-dir /path/to/repos --fix

# Provide an extended known-bad list
bash check.sh --bad-versions-file ./extra-bad-versions.txt

Todas as opções

Códigos de saída

CódigoSignificado
0Limpo — nenhum indicador no escopo verificado
1Apenas avisos — revisão recomendada
2Falhas — indicadores de comprometimento presentes
3Erro de ferramenta/uso

Postura de segurança

Este repositório se defende contra a mesma classe de ataque que detecta. Concretamente:

  • Cada uses: de GitHub Action está fixado em um SHA de commit de 40 caracteres, não em uma tag flutuante.
  • A imagem base do Docker está fixada em um digest de manifesto imutável multi-arquitetura.
  • Cada workflow declara permissions: {} no nível superior; os jobs concedem apenas o que precisam.
  • actions/checkout é invocado com persist-credentials: false para que nenhum remote git autenticado seja deixado em $GITHUB_WORKSPACE.
  • step-security/harden-runner é o primeiro passo de cada workflow e monitora o tráfego de saída do runner.
  • OpenSSF Scorecard roda semanalmente e a cada push para main; os resultados são enviados como SARIF.
  • Cada release publica uma atestação de proveniência de build SLSA para a imagem Docker. Qualquer pessoa pode verificá-la offline com gh attestation.
  • Cada release vem com um check.sh.sha256 que cobre todos os artefatos instaláveis.

A política completa está em SECURITY.md.

Não use curl | bash para nenhuma ferramenta de segurança, incluindo esta. Sempre baixe, verifique o checksum, inspecione e então execute.

Exemplo de saída

root@kitploit:~
━━  1 / 8  DEAD-MAN'S SWITCH ARTEFACTS
  ✔  No dead-man's switch artefacts found

━━  2 / 8  PERSISTENCE VECTORS
  ✔  No persistence vectors detected

━━  3 / 8  TOKEN / CREDENTIAL EXPOSURE
  ✔  No credential exposure detected

━━  4 / 8  NETWORK INDICATORS
  ✔  No node TCP connections currently established (or none observable)

━━  5 / 8  REPO SCAN — package.json + lockfiles
  ℹ  Found 12 package.json + 8 lockfile(s)
  ✔  No compromised family declared in any package.json
  ✔  No compromised pins found in any lockfile

━━  6 / 8  INSTALLED node_modules — direct version check
  ✔  No compromised packages in installed node_modules

━━  7 / 8  GITHUB ACTIONS HARDENING HINTS
  ✔  No risky GitHub Actions patterns detected (in scanned scope)

━━  8 / 8  MINI SHAI-HULUD PAYLOAD + AUXILIARY IOCs
  ✔  No Mini Shai-Hulud payload / auxiliary IOCs detected

━━  SUMMARY
  Passed: 8    Warnings: 0    Failed: 0
  Scope : /Users/alice/dev
  ✔  No indicators of compromise within scope: /Users/alice/dev
  Note: a clean result for /Users/alice/dev does not certify the rest of the system.

Se você estiver comprometido

NÃO revogue seu token do GitHub antes de parar o daemon — o dead-man's switch executará rm -rf ~/ no momento em que o token for revogado.

  1. Pare o daemon primeiro:
    • macOS 14+: launchctl bootout gui/$UID ~/Library/LaunchAgents/com.user.gh-token-monitor.plist
    • macOS legado: launchctl unload ~/Library/LaunchAgents/com.user.gh-token-monitor.plist
    • Linux: systemctl --user stop gh-token-monitor && systemctl --user disable gh-token-monitor
  2. Remova o script: rm -f ~/.local/bin/gh-token-monitor.sh
  3. Então revogue e rotacione: token do GitHub, token npm, credenciais AWS/GCP/Azure, chaves SSH, agente SSH.
  4. Revise o log de auditoria do GitHub: https://github.com/settings/security-log
  5. Inspecione ~/.aws/credentials, ~/.kube/config, ~/.config/gh/hosts.yml, ~/.npmrc.

Dependências

O script bash precisa de:

  • bash 4+
  • jq (recomendado) — análise de package-lock.json
  • python3 (fallback opcional) — usado quando jq está ausente
  • curl — exigido para --online
  • lsof ou ss (opcional) — heurística de IOC de rede

A imagem Docker inclui tudo isso. Use-a em sistemas onde você não pode ou não quer instalar essas ferramentas.

Contribuindo

Issues e pull requests são bem-vindos. Observe que este repositório usa CODEOWNERS: todos os PRs exigem revisão de um mantenedor.

Referências

  • Postmortem oficial do TanStack
  • Advisory do GitHub GHSA-g7cv-rxg3-hmpx
  • Análise da Snyk
  • Blog da Wiz — Mini Shai-Hulud
  • Artigo da StepSecurity
  • Orca Security — 160+ pacotes

Licença

MIT.

Baixar ferramenta
#VerificaçãoDescrição
1Dead-man's switch~/.local/bin/gh-token-monitor.sh, LaunchAgents + LaunchDaemons (macOS), unidades systemd de usuário + sistema (Linux), processos em execução
2Persistênciaarquivos rc do shell, crontab de usuário/sistema, /etc/cron.*, autostart XDG, core.hooksPath global do git
3Credenciaisvariáveis de ambiente sensíveis, ~/.npmrc, ~/.yarnrc.yml, ~/.aws/credentials, ~/.config/gh/hosts.yml, ~/.netrc, ~/.docker/config.json, ~/.kube/config, enumeração de arquivos .env*
4IOC de redeprocessos node em execução com conexões TCP de saída estabelecidas (heurística, revisão manual)
5Varredura de repositóriodependências declaradas em package.json + versões fixadas em lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml)
6Instaladosnode_modules/@tanstack/*/package.json verificado contra a lista de versões maliciosas conhecidas e depois contra o time[<version>] do registro npm quando --online
7Dicas de Actions.github/workflows/* varridos em busca de pull_request_target, ausência de --ignore-scripts, uso de actions/cache
8IOCs Mini Shai-Huludarquivos de payload em node_modules (router_init.js, tanstack_runner.js), dependência opcional @tanstack/setup, adulteração de configuração de ferramentas de IA, domínios C2 no código-fonte, padrões de autor de commit + branch do atacante, tokens npm marcados para resgate, pacotes secundários propagados por worm, além de heurísticas de nível informativo para formatos de payload desconhecidos
FlagDescrição
--scan-dir DIRDiretório raiz a ser verificado (padrão: $HOME). Recusa verificar diretórios de sistema como /, /etc, /usr.
--onlineConsulta o advisory do GHSA e o time[<version>] do registro npm para confirmar o comprometimento. Desativado por padrão — opt-in.
--ghsa GHSA-IDSubstitui o ID do advisory usado em --online (padrão GHSA-g7cv-rxg3-hmpx).
--attack-window-start ISO, --attack-window-end ISOSubstitui a janela de tempo de publicação usada em --online.
--fixExibe comandos de fixação recomendados para repositórios afetados (dry-run por padrão).
--applyCom --fix: opt-in para execução. Atualmente ainda recusa update cego; é necessária fixação manual.
--yes, -yPula o prompt de confirmação para --apply.
--jsonEmite descobertas como JSON para stdout (implica --quiet).
--bad-versions-file FAcrescenta entradas (pkg@version, uma por linha) à lista de versões maliciosas conhecidas.
--no-colorDesativa cores ANSI.
--quiet, -qSuprime a saída por verificação, exibe apenas o resumo.
-h, --helpMostra ajuda.