| name | dev-vulnerability-analyzer |
| description | Analyse et évalue les vulnérabilités d'un système ou d'une application. À utiliser pour comprendre et prioriser les vulnérabilités, construire un plan de remédiation et valider la correction. Se déclenche avec "vulnérabilité", "CVE", "faille", "vulnerability", "risque sécurité", "score CVSS", "patch critique". Also triggers on "analyze a vulnerability", "CVE impact", "is this CVE exploitable". |
Vulnerability Analyzer
Workflow
1. Collecte des informations
Commencer par poser ces questions si l'utilisateur ne les a pas fournies :
- CVE ID ou description de la faille ?
- Composant/version affecté ? Stack technique (language, runtime, OS) ?
- Environnement : exposition Internet ? cloud / on-premise / conteneur ?
- Système en production avec données sensibles ?
Sources officielles à consulter systématiquement :
https://nvd.nist.gov/vuln/detail/CVE-XXXX-YYYY # NVD — score CVSS officiel
https://www.cve.org/CVERecord?id=CVE-XXXX-YYYY # CVE.org — description brute
https://www.cisa.gov/known-exploited-vulnerabilities-catalog # KEV — exploitation active
https://github.com/advisories # GitHub Advisory Database
2. Évaluation CVSS v4.0 (2026)
CVSS v4.0 remplace v3.1 comme référence depuis 2024. Vérifier la version du score fourni.
| Métrique | Valeurs | Poids sur le score |
|---|
| Attack Vector (AV) | Network > Adjacent > Local > Physical | Fort |
| Attack Complexity (AC) | Low > High | Moyen |
| Privileges Required (PR) | None > Low > High | Moyen |
| User Interaction (UI) | None > Passive > Active | Faible |
| Impact CIA | High > Low > None (×3) | Fort |
Score final : 0.0–3.9 Faible / 4.0–6.9 Moyen / 7.0–8.9 Élevé / 9.0–10.0 Critique
Attention : le score NVD est calculé dans le contexte générique. Toujours recalculer avec le contexte réel (score Environmentale/Temporel).
Calculateur CVSS officiel : https://www.first.org/cvss/calculator/4-0
3. Vérification de l'exposition réelle
Questions de décision avant de prioriser :
[ ] Le composant est-il joignable depuis Internet (direct ou indirect) ?
[ ] Des données sensibles (PII, financières, secrets) transitent-elles par ce composant ?
[ ] L'exploitation nécessite-t-elle des privilèges déjà présents dans l'environnement ?
[ ] Des mitigations compensatoires existent-elles (WAF, network policy, auth forte) ?
[ ] Le service est-il critique pour la continuité métier ?
Une faille CVSS 7.5 sur un service interne sans données sensibles est moins urgente qu'un CVSS 6.5 sur une API publique d'authentification.
4. Recherche d'exploits actifs
curl -s "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json" \
| jq '.vulnerabilities[] | select(.cveID == "CVE-XXXX-YYYY")'
gh search repos "CVE-XXXX-YYYY" --limit 10
nuclei -list -tags cve -filter-severity critical,high | grep XXXX-YYYY
searchsploit CVE-XXXX-YYYY
Maturité d'exploit (du moins grave au plus grave) :
- Théorique — aucun code public
- PoC — démonstration en labo, difficile à adapter
- Exploit fonctionnel — code public adapté à des cibles réelles
- Weaponized — intégré dans des frameworks (Metasploit, ransomware kits)
- Exploitation active ITW (In The Wild) — confirmée CISA KEV ou threat feeds
5. Scan de détection dans l'environnement
trivy image myapp:latest --severity HIGH,CRITICAL
trivy fs . --severity HIGH,CRITICAL --format json > trivy-report.json
grype dir:. -o json | jq '.matches[] | select(.vulnerability.severity == "Critical")'
snyk test --severity-threshold=high --json
dependency-check.sh --project myapp --scan ./target --format HTML
npm audit --audit-level=high --json
pip-audit --format json --severity high
6. Plan de remédiation par priorité
Décision rapide :
| Situation | Action |
|---|
| KEV CISA + exposition Internet | Isolation immédiate → patch sous 24h |
| Critique sans exploit public + exposition Internet | Workaround immédiat + patch sous 7j |
| Élevé + exposition Internet | Patch sous 30j, mitigation réseau |
| Critique sur système interne isolé | Patch sous 30j, surveillance accrue |
| Moyen/Faible système non critique | Intégrer au prochain cycle maintenance |
Commandes de mise à jour de dépendances :
npm update <package>
npm install <package>@latest
npm audit fix --force
pip install --upgrade <package>
pip install "<package>>=X.Y.Z"
mvn versions:update-properties
mvn dependency:tree | grep <package>
go get <module>@vX.Y.Z
go mod tidy
docker build --no-cache -t myapp:patched .
Workarounds fréquents :
location /vulnerable-path { return 403; }
iptables -A INPUT -p tcp --dport 8080 -s 0.0.0.0/0 -j DROP
iptables -A INPUT -p tcp --dport 8080 -s 10.0.0.0/8 -j ACCEPT
(http.request.uri.path contains "/vulnerable-endpoint") → Block
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.XXX=false
Remédiation applicative — exemples :
import re, os
def safe_file_read(user_input: str, base_dir: str) -> str:
safe_name = re.sub(r'[^a-zA-Z0-9_\-\.]', '', user_input)
full_path = os.path.realpath(os.path.join(base_dir, safe_name))
if not full_path.startswith(os.path.realpath(base_dir)):
raise ValueError("Path traversal détecté")
return open(full_path).read()
ObjectInputStream ois = new ObjectInputStream(inputStream) {
@Override
protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {
if (!ALLOWED_CLASSES.contains(desc.getName())) {
throw new InvalidClassException("Classe non autorisée : " + desc.getName());
}
return super.resolveClass(desc);
}
};
7. Timeline de correction
| Sévérité + contexte | Délai max | Action immédiate |
|---|
| Critique + KEV CISA | 24–48h | Isoler le service |
| Critique sans exploit | 7 jours | Activer WAF / bloquer IP |
| Élevé + exposition Internet | 30 jours | Mitigation réseau |
| Élevé + interne | 60 jours | Surveillance logs |
| Moyen | 90 jours | Planifier maintenance |
| Faible | 180 jours | Prochain cycle majeur |
Ajuster si : système PCI-DSS / HDS / NIS2 (délais souvent contractuels), données personnelles (RGPD notif 72h si brèche).
8. Validation post-remédiation
dpkg -l <package> | grep '^ii'
rpm -q <package>
nuclei -u https://target.example.com -tags cve -id CVE-XXXX-YYYY
trivy image myapp:patched --exit-code 1 --severity CRITICAL
npm audit --audit-level=critical
Checklist de clôture :
[ ] Version patchée déployée en production
[ ] Scan de validation passé (0 finding sur la CVE)
[ ] Ticket de suivi fermé avec date + responsable
[ ] Même vulnérabilité vérifiée sur les systèmes similaires
[ ] Monitoring/alerting mis en place si applicable
[ ] Retour d'expérience documenté (cause, délai, action)
Anti-patterns et pièges fréquents
- Ne pas confondre score NVD et risque réel : un CVSS 9.8 sur un composant interne non exposé est moins urgent qu'un 7.0 sur une API publique authentifiée.
npm audit fix --force sans test : peut casser des dépendances transitives — toujours tester en staging.
- Patcher sans valider : vérifier que la version installée correspond bien au bulletin (les packages managers mentent parfois sur la version effective).
- Ignorer les dépendances transitives : la faille peut venir d'une dépendance de dépendance — utiliser
npm ls <package> ou mvn dependency:tree pour localiser la source.
- Fermer le ticket sans scan de confirmation : sans scan post-patch, impossible de garantir que la correction est effective.
- Traiter les workarounds comme définitifs : les blocages WAF ou network peuvent être contournés ; le patch reste la seule correction durable.
- Négliger les systèmes similaires : si une faille touche un service, chercher systématiquement si le même composant est présent ailleurs.
Sources de référence (2026)
| Source | Usage |
|---|
| nvd.nist.gov | Score CVSS officiel, description technique |
| cisa.gov/kev | Exploitations actives confirmées |
| github.com/advisories | Dépendances open-source |
| security.snyk.io | Dépendances + remediation guidée |
| exploit-db.com | PoC et exploits publics |
| vulncheck.com | Intelligence threat + KEV enrichi |
| first.org/cvss | Calculateur CVSS v4.0 |
Communication Rules — MANDATORY
- Ultra-concise. No filler, no preamble, no pleasantries.
- Never say "happy to help", "sure!", "great question", "let me", or similar.
- Tool first, talk second. Act before explaining.
- Result first. Lead with outcome, not process.
- Stop when done. No summary, no recap, no trailing commentary.
- No politeness wrappers. Direct and blunt.
- Minimum words. If one word works, do not use ten.
- No unsolicited explanations.
- No emoji unless asked.