
Outil CLI qui explique les CVE en anglais simple et analyse les dépôts pour en mesurer l'impact. Propulsé par Claude.
"Est-ce que cette CVE m'affecte vraiment ?" — réponse en secondes, pas en heures.
Sentinel prend un ID CVE, récupère les données de NVD, OSV.dev et MITRE, puis utilise Claude pour produire un briefing de vulnérabilité clair et actionnable en 5 sections.
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 (par défaut) — Analyste de sécuritéLe briefing classique de vulnérabilité en 5 sections :
exec — Cadre dirigeant / CISOUne lecture de 10 secondes pour les cadres occupés. Sévérité par feux tricolores, impact métier, une action prioritaire. Pas de jargon.
🔴 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 — Ingénieur logicielPlongée technique approfondie avec versions exactes, commandes de mise à niveau, motifs à rechercher et étapes de test :
devops — DevOps / SREOrienté infrastructure avec conteneurs, K8s, CI/CD et surveillance :
Sentinel détecte les dépendances dans les configurations de build d'applications mobiles que les scanners standards ratent :
# 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
Fonctionnalités :
$firebaseBomVersion) depuis gradle.properties et les blocs ext {}libs.versions.toml)Firebase/Analytics)Analysez votre cluster Kubernetes à la recherche d'images conteneur vulnérables :
# 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 a besoin d'un accès en lecture seule. Appliquez le manifeste RBAC minimal :
kubectl apply -f config/k8s-rbac.yaml
Ceci crée un ServiceAccount sentinel-readonly avec uniquement les droits get et list sur les pods, namespaces, deployments, replicasets, daemonsets et statefulsets. Aucun accès en écriture.
Déterminez si une CVE affecte réellement votre code en traçant si les fonctions vulnérables sont atteignables depuis les points d'entrée :
# 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
Verdicts :
| Mode | Données envoyées à l'extérieur |
|---|---|
--local-only | Rien — analyse AST locale pure |
| Par défaut | Uniquement des métadonnées nettoyées : noms de fonctions, noms d'importations, arêtes du graphe d'appels (liste de nœuds/arêtes), description de la CVE. Jamais le code source. |
Toutes les données envoyées à Claude sont enregistrées dans ~/.sentinel/audit.log pour examen.
sentinel cache clear # Clear all cached data
La configuration est stockée dans ~/.sentinel/config.json. Le cache dans ~/.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 inclut un serveur FastAPI qui accepte les commandes depuis Slack, Microsoft Teams, Telegram et une API REST générique.
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://<votre-domaine>/slack/commandshttps://<votre-domaine>/slack/events/sentinel cve CVE-2024-3094 ou @Sentinel cve CVE-2024-3094sentinel setup teams # Interactive setup guide
https://<votre-domaine>/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://<VOTRE_DOMAINE>/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
| Section | Ce qu'elle répond |
|---|
| 🔍 Ce que c'est | Explication en langage simple |
| 💥 Comment exploiter | Vecteur d'attaque, résumé de la preuve de concept, difficulté |
| 🚨 Qui doit paniquer | Logiciels, versions, écosystèmes affectés |
| 🛡️ Comment patcher en toute sécurité | Étapes de correction, liens de mise à jour |
| ✅ Que tester | Étapes de vérification après le correctif |
| Section | Focus |
|---|
| 📦 Bibliothèques & Versions affectées | Plages de versions exactes, chaînes de dépendances |
| 🔧 Correction au niveau du code | Commandes de mise à niveau spécifiques, changements de configuration |
| 🔍 Ce qu'il faut rechercher | Motifs à chercher dans votre code source |
| 🧪 Comment tester le correctif | Commandes de vérification, tests de régression |
| ⚠️ Changements cassants | Dépréciations, différences de comportement |
| Section | Focus |
|---|
| 🏗️ Infrastructure affectée | Images de base, conteneurs, services cloud |
| 🚀 Impact du déploiement | Stratégie de mise à jour progressive, évaluation des temps d'arrêt |
| 🔄 Plan de retour arrière | Comment annuler si le correctif pose problème |
| 📊 Surveillance & Détection | Journaux, alertes, détection d'exploitation |
| 🚨 Étapes de réponse aux incidents | Pas à pas en cas d'exploitation active |
| Écosystème | Fichiers analysés | Fichier de verrouillage (préféré) |
|---|
| 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 |
| Point d'accès | Méthode | Description |
|---|
/health | GET | Vérification de santé |
/api/cve | POST | API REST — expliquer une CVE |
/api/scan | POST | API REST — analyser un dépôt |
/slack/commands | POST | Commandes slash Slack |
/slack/events | POST | API Événements Slack |
/teams/webhook | POST | Webhook sortant Teams |
/telegram/webhook | POST | Webhook du bot Telegram |