
Herramienta CLI que explica CVEs en lenguaje sencillo y escanea repositorios para detectar impacto. Impulsada por Claude.
"¿Este CVE me afecta?" — respondido en segundos, no horas.
Sentinel toma un ID de CVE, obtiene datos de NVD, OSV.dev y MITRE, luego usa Claude para producir un informe de vulnerabilidad claro y accionable de 5 secciones.
cd sentinel/
pip install -e .
# Required: Anthropic API key
sentinel config set api-key sk-ant-...
# Optional: NVD API key (higher rate limits)
sentinel config set nvd-key xxxxxxxx-xxxx-...
# Or use environment variables
export ANTHROPIC_API_KEY=sk-ant-...
export NVD_API_KEY=xxxxxxxx-xxxx-...
# Explain a CVE (5-section report with colored terminal output)
sentinel cve CVE-2024-3094
# Choose output persona (see Personas below)
sentinel cve CVE-2024-3094 --format exec # Executive / CISO summary
sentinel cve CVE-2024-3094 -f engineer # Deep technical advisory
sentinel cve CVE-2024-3094 -f devops # Infrastructure-focused
sentinel cve CVE-2024-3094 -f security # Default 5-section report
# Also works with scan
sentinel scan . --cve CVE-2024-3094 --format exec
# JSON output
sentinel cve CVE-2024-3094 --json
# Markdown output
sentinel cve CVE-2024-3094 --markdown
# Brief one-paragraph summary
sentinel cve CVE-2024-3094 --brief
# Skip cache, fetch fresh data
sentinel cve CVE-2024-3094 --no-cache
# Verbose mode (show timing and source details)
sentinel cve CVE-2024-3094 -v
--format / -f)security (predeterminado) — Analista de SeguridadEl clásico informe de vulnerabilidad de 5 secciones:
exec — Ejecutivo / CISOUna lectura de 10 segundos para ejecutivos ocupados. Severidad semáforo, impacto empresarial, una acción. Sin jerga.
🔴 CRITICAL — CVE-2024-3094 (XZ Backdoor)
A backdoor was planted in a core Linux compression library used across most servers.
Attackers can intercept and modify data on any system running xz 5.6.0-5.6.1.
Immediate downgrade required — estimated 15-30 min per server, no downtime expected.
Risk: Supply chain compromise — high severity, active exploitation
Impact: All Linux infrastructure running affected versions
Action needed: Downgrade xz to 5.4.6. Verify with `xz --version`.
engineer — Ingeniero de SoftwareInmersión técnica profunda con versiones exactas, comandos de actualización, patrones grep y pasos de prueba:
devops — DevOps / SREEnfoque en infraestructura con contenedores, K8s, CI/CD y monitoreo:
Sentinel detecta dependencias en configuraciones de compilación de aplicaciones móviles que los escáneres estándar pasan por alto:
# Scan an Android project
sentinel scan ./my-android-app --cve CVE-2024-XXXX
# Scan an iOS project
sentinel scan ./my-ios-app --cve CVE-2024-XXXX
# Scan a Flutter project
sentinel scan ./my-flutter-app
Características:
$firebaseBomVersion) desde bloques gradle.properties y ext {}libs.versions.toml)Firebase/Analytics)Escanea tu clúster de Kubernetes en busca de imágenes de contenedores vulnerables:
# Scan all namespaces
sentinel scan --k8s
# Scan specific namespace
sentinel scan --k8s --namespace production
# Check specific CVE across cluster
sentinel scan --k8s --cve CVE-2024-3094
# Generate SBOM for all running images
sentinel scan --k8s --sbom
# Scan a specific image (no cluster connection needed)
sentinel scan --k8s --image nginx:1.25
Sentinel necesita acceso de solo lectura. Aplica el manifiesto RBAC mínimo:
kubectl apply -f config/k8s-rbac.yaml
Esto crea un ServiceAccount sentinel-readonly con solo get y list en pods, namespaces, deployments, replicasets, daemonsets y statefulsets. Sin acceso de escritura.
Determina si un CVE realmente afecta tu código rastreando si las funciones vulnerables son alcanzables desde los puntos de entrada:
# Full analysis with Claude interpretation
sentinel scan . --cve CVE-2024-22195 --execution-path
# Local-only (no data sent externally)
sentinel scan . --cve CVE-2024-22195 --execution-path --local-only
Veredictos:
| Modo | Datos enviados externamente |
|---|---|
--local-only | Nada — análisis AST puramente local |
| Predeterminado | Solo metadatos sanitizados: nombres de funciones, nombres de importaciones, aristas del grafo de llamadas (lista de nodos/aristas), descripción del CVE. Nunca código fuente. |
Todos los datos enviados a Claude se registran en ~/.sentinel/audit.log para su revisión.
sentinel cache clear # Clear all cached data
La configuración se almacena en ~/.sentinel/config.json. La caché en ~/.sentinel/cache.db.
sentinel config set api-key <key>
sentinel config set nvd-key <key>
sentinel config set model <model-name>
sentinel config get api-key
Sentinel incluye un servidor FastAPI que acepta comandos de Slack, Microsoft Teams, Telegram y una API REST genérica.
sentinel server start # Default port 8080
sentinel server start --port 9090 # Custom port
sentinel server start --workers 4 # Multiple workers
sentinel server status # Check if running
# Explain a CVE
curl -X POST http://localhost:8080/api/cve \
-H "Content-Type: application/json" \
-d '{"cve_id": "CVE-2024-3094"}'
# Scan a repo
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 # Interactive setup guide
config/slack-manifest.ymlexport SLACK_SIGNING_SECRET=<signing-secret>
export SLACK_BOT_TOKEN=xoxb-<bot-token>
https://<your-domain>/slack/commandshttps://<your-domain>/slack/events/sentinel cve CVE-2024-3094 o @Sentinel cve CVE-2024-3094sentinel setup teams # Interactive setup guide
https://<your-domain>/teams/webhookexport TEAMS_WEBHOOK_SECRET=<base64-hmac-secret>
@Sentinel cve CVE-2024-3094sentinel setup telegram # Interactive setup guide
export TELEGRAM_BOT_TOKEN=<bot-token>
curl -X POST "https://api.telegram.org/bot<TOKEN>/setWebhook" -d '{"url":"https://<YOUR_DOMAIN>/telegram/webhook"}'/cve CVE-2024-3094, /scan <repo> --cve CVE-XXXXcd docker/
# Set env vars in .env file or export them
docker compose up -d
# With nginx reverse proxy:
docker compose --profile with-nginx up -d
| Sección | Lo que responde |
|---|
| 🔍 Qué es | Explicación en lenguaje sencillo |
| 💥 Cómo explotar | Vector de ataque, resumen de PoC, dificultad |
| 🚨 Quién debe preocuparse | Software afectado, versiones, ecosistemas |
| 🛡️ Cómo parchear de forma segura | Pasos de remediación, enlaces de parches |
| ✅ Qué probar | Pasos de verificación después del parche |
| Sección | Enfoque |
|---|
| 📦 Bibliotecas y Versiones Afectadas | Rangos de versión exactos, cadenas de dependencias |
| 🔧 Remediación a Nivel de Código | Comandos de actualización específicos, cambios de configuración |
| 🔍 Qué Buscar con Grep | Patrones para buscar en tu código base |
| 🧪 Cómo Probar la Corrección | Comandos de verificación, pruebas de regresión |
| ⚠️ Cambios Rupturistas | Deprecaciones, diferencias de comportamiento |
| Sección | Enfoque |
|---|
| 🏗️ Infraestructura Afectada | Imágenes base, contenedores, servicios en la nube |
| 🚀 Impacto en el Despliegue | Estrategia de actualización continua, evaluación de tiempo de inactividad |
| 🔄 Plan de Reversión | Cómo revertir si el parche causa problemas |
| 📊 Monitoreo y Detección | Logs, alertas, detección de explotación |
| 🚨 Pasos de Respuesta a Incidentes | Paso a paso si es explotado activamente |
| Ecosistema | Archivos Analizados | Archivo de Bloqueo (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 |
| Punto de conexión | Método | Descripción |
|---|
/health | GET | Verificación de salud |
/api/cve | POST | API REST — explicar un CVE |
/api/scan | POST | API REST — escanear un repositorio |
/slack/commands | POST | Comandos slash de Slack |
/slack/events | POST | API de Eventos de Slack |
/teams/webhook | POST | Webhook saliente de Teams |
/telegram/webhook | POST | Webhook del bot de Telegram |