
Ferramenta CLI que explica CVEs em linguagem simples e verifica repositórios quanto ao impacto. Desenvolvida por Claude.
"Essa CVE me afeta?" — respondido em segundos, não em horas.
O Sentinel recebe um ID de CVE, busca dados do NVD, OSV.dev e MITRE, e então usa o Claude para produzir um briefing claro e acionável de vulnerabilidade em 5 seções.
cd sentinel/
pip install -e .
# Obrigatório: chave da API Anthropic
sentinel config set api-key sk-ant-...
# Opcional: chave da API NVD (limites de taxa maiores)
sentinel config set nvd-key xxxxxxxx-xxxx-...
# Ou use variáveis de ambiente
export ANTHROPIC_API_KEY=sk-ant-...
export NVD_API_KEY=xxxxxxxx-xxxx-...
# Explica uma CVE (relatório de 5 seções com saída colorida no terminal)
sentinel cve CVE-2024-3094
# Escolhe a persona de saída (veja Personas abaixo)
sentinel cve CVE-2024-3094 --format exec # Resumo executivo / CISO
sentinel cve CVE-2024-3094 -f engineer # Assessoria técnica profunda
sentinel cve CVE-2024-3094 -f devops # Foco em infraestrutura
sentinel cve CVE-2024-3094 -f security # Relatório padrão de 5 seções
# Também funciona com scan
sentinel scan . --cve CVE-2024-3094 --format exec
# Saída JSON
sentinel cve CVE-2024-3094 --json
# Saída Markdown
sentinel cve CVE-2024-3094 --markdown
# Resumo breve de um parágrafo
sentinel cve CVE-2024-3094 --brief
# Ignora cache, busca dados frescos
sentinel cve CVE-2024-3094 --no-cache
# Modo verboso (mostra detalhes de tempo e origem)
sentinel cve CVE-2024-3094 -v
--format / -f)security (padrão) — Analista de SegurançaO clássico briefing de vulnerabilidade em 5 seções:
exec — Executivo / CISOUma leitura de 10 segundos para executivos ocupados. Semáforo de gravidade, impacto nos negócios, uma ação. Sem jargão.
🔴 CRÍTICO — CVE-2024-3094 (Backdoor XZ)
Uma backdoor foi plantada em uma biblioteca de compressão central do Linux usada na maioria dos servidores.
Atacantes podem interceptar e modificar dados em qualquer sistema executando xz 5.6.0-5.6.1.
Downgrade imediato necessário — estimado 15-30 min por servidor, sem tempo de inatividade esperado.
Risco: Comprometimento da cadeia de suprimentos — alta gravidade, exploração ativa
Impacto: Toda infraestrutura Linux executando versões afetadas
Ação necessária: Fazer downgrade do xz para 5.4.6. Verificar com `xz --version`.
engineer — Engenheiro de SoftwareMergulho técnico profundo com versões exatas, comandos de atualização, padrões grep e etapas de teste:
devops — DevOps / SREFoco em infraestrutura com contêineres, K8s, CI/CD e monitoramento:
O Sentinel detecta dependências em arquivos de configuração de builds mobile que scanners padrão perdem:
# Varrer um projeto Android
sentinel scan ./meu-app-android --cve CVE-2024-XXXX
# Varrer um projeto iOS
sentinel scan ./meu-app-ios --cve CVE-2024-XXXX
# Varrer um projeto Flutter
sentinel scan ./meu-app-flutter
Funcionalidades:
$firebaseBomVersion) a partir de gradle.properties e blocos ext {}libs.versions.toml)Firebase/Analytics)Varra seu cluster Kubernetes em busca de imagens de contêiner vulneráveis:
# Varrer todos os namespaces
sentinel scan --k8s
# Varrer namespace específico
sentinel scan --k8s --namespace production
# Verificar CVE específica no cluster
sentinel scan --k8s --cve CVE-2024-3094
# Gerar SBOM para todas as imagens em execução
sentinel scan --k8s --sbom
# Varrer uma imagem específica (sem necessidade de conexão com cluster)
sentinel scan --k8s --image nginx:1.25
O Sentinel precisa de acesso somente leitura. Aplique o manifesto RBAC mínimo:
kubectl apply -f config/k8s-rbac.yaml
Isso cria um ServiceAccount sentinel-readonly com apenas permissões get e list em pods, namespaces, deployments, replicasets, daemonsets e statefulsets. Sem acesso de escrita.
Determine se uma CVE realmente afeta seu código rastreando se funções vulneráveis são alcançáveis a partir de pontos de entrada:
# Análise completa com interpretação do Claude
sentinel scan . --cve CVE-2024-22195 --execution-path
# Apenas local (nenhum dado enviado externamente)
sentinel scan . --cve CVE-2024-22195 --execution-path --local-only
Vereditos:
| Modo | Dados enviados externamente |
|---|---|
--local-only | Nada — análise AST puramente local |
| Padrão | Apenas metadados sanitizados: nomes de funções, nomes de imports, arestas do grafo de chamadas (lista de nós/arestas), descrição da CVE. Nunca o código-fonte. |
Todos os dados enviados ao Claude são registrados em ~/.sentinel/audit.log para revisão.
sentinel cache clear # Limpar todos os dados em cache
Config armazenada em ~/.sentinel/config.json. Cache em ~/.sentinel/cache.db.
sentinel config set api-key <chave>
sentinel config set nvd-key <chave>
sentinel config set model <nome-do-modelo>
sentinel config get api-key
O Sentinel inclui um servidor FastAPI que aceita comandos do Slack, Microsoft Teams, Telegram e uma API REST genérica.
sentinel server start # Porta padrão 8080
sentinel server start --port 9090 # Porta personalizada
sentinel server start --workers 4 # Múltiplos workers
sentinel server status # Verificar se está em execução
# Explicar uma CVE
curl -X POST http://localhost:8080/api/cve \
-H "Content-Type: application/json" \
-d '{"cve_id": "CVE-2024-3094"}'
# Varrer um repositório
curl -X POST http://localhost:8080/api/scan \
-H "Content-Type: application/json" \
-d '{"repo_url": "https://github.com/user/repo", "cve_id": "CVE-2024-3094"}'
# Health check
curl http://localhost:8080/health
sentinel setup slack # Guia de configuração interativo
config/slack-manifest.ymlexport SLACK_SIGNING_SECRET=<signing-secret>
export SLACK_BOT_TOKEN=xoxb-<bot-token>
https://<seu-dominio>/slack/commandshttps://<seu-dominio>/slack/events/sentinel cve CVE-2024-3094 ou @Sentinel cve CVE-2024-3094sentinel setup teams # Guia de configuração interativo
https://<seu-dominio>/teams/webhookexport TEAMS_WEBHOOK_SECRET=<base64-hmac-secret>
@Sentinel cve CVE-2024-3094sentinel setup telegram # Guia de configuração interativo
export TELEGRAM_BOT_TOKEN=<token-do-bot>
curl -X POST "https://api.telegram.org/bot<TOKEN>/setWebhook" -d '{"url":"https://<SEU_DOMINIO>/telegram/webhook"}'/cve CVE-2024-3094, /scan <repositorio> --cve CVE-XXXXcd docker/
# Defina variáveis de ambiente no arquivo .env ou exporte-as
docker compose up -d
# Com proxy reverso nginx:
docker compose --profile with-nginx up -d
| Seção | O que responde |
|---|
| 🔍 O que é | Explicação em linguagem simples |
| 💥 Como explorar | Vetor de ataque, resumo de PoC, dificuldade |
| 🚨 Quem deve se preocupar | Software afetado, versões, ecossistemas |
| 🛡️ Como corrigir com segurança | Passos de remediação, links de correção |
| ✅ O que testar | Passos de verificação após a correção |
| Seção | Foco |
|---|
| 📦 Bibliotecas e Versões Afetadas | Faixas de versão exatas, cadeias de dependência |
| 🔧 Remediação em Nível de Código | Comandos de atualização específicos, alterações de configuração |
| 🔍 O que Procurar com Grep | Padrões para pesquisar em seu código |
| 🧪 Como Testar a Correção | Comandos de verificação, testes de regressão |
| ⚠️ Mudanças Impactantes | Depreciações, diferenças comportamentais |
| Seção | Foco |
|---|
| 🏗️ Infraestrutura Afetada | Imagens base, contêineres, serviços em nuvem |
| 🚀 Impacto no Deploy | Estratégia de atualização contínua, avaliação de downtime |
| 🔄 Plano de Rollback | Como reverter se a correção causar problemas |
| 📊 Monitoramento e Detecção | Logs, alertas, detecção de exploração |
| 🚨 Passos de Resposta a Incidentes | Passo a passo se explorado ativamente |
| Ecossistema | Arquivos Analisados | Arquivo de Lock (preferido) |
|---|
| Android (Gradle) | build.gradle, build.gradle.kts, gradle/libs.versions.toml | — |
| iOS (CocoaPods) | Podfile | Podfile.lock |
| iOS (Swift PM) | Package.swift | Package.resolved |
| Flutter (Dart) | pubspec.yaml | pubspec.lock |
| Endpoint | Método | Descrição |
|---|
/health | GET | Health check |
/api/cve | POST | API REST — explicar uma CVE |
/api/scan | POST | API REST — varrer um repositório |
/slack/commands | POST | Comandos de barra do Slack |
/slack/events | POST | API de Eventos do Slack |
/teams/webhook | POST | Webhook de saída do Teams |
/telegram/webhook | POST | Webhook do bot do Telegram |