đŻ Nous y voilĂ . AprĂšs avoir dĂ©cortiquĂ© CVE, CVSS, EPSS, et KEV, il est temps de tout assembler.
Aujourdâhui, on construit la matrice de priorisation qui va vous permettre de passer de â42 000 CVE Ă patcherâ Ă â42 CVE Ă patcher cette semaine, dans cet ordre prĂ©cisâ đ.
Plus de panique, plus de âon patche au hasardâ. Juste une mĂ©thodologie claire, automatisable, et dĂ©fendable devant un audit.
Rappel : Les quatre piliers
| Indicateur | Organisation | Ce quâil mesure | Type |
|---|---|---|---|
| CVE | MITRE / CNA | Identifiant unique de la vulnérabilité | ID |
| CVSS | FIRST | Sévérité technique (impact théorique) | Score (0-10) |
| EPSS | FIRST | ProbabilitĂ© dâexploitation (30 jours) | Score (0-1) |
| KEV | CISA | Exploitation réelle confirmée | Booléen (oui/non) |
Le schéma complet
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â ĂCOSYSTĂME VULNĂRABILITĂS â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
âââââââââââŒââââââââââ
â CVE-2026-1234 â â Identifiant unique
â (MITRE / CNA) â
âââââââââââŹââââââââââ
â
ââââââââââââââââââŒâââââââââââââââââ
â â â
âââââââââââŒââââââââââ âââââŒâââââââââ ââââââŒâââââââââââ
â CVSS: 9.8 â â EPSS: 0.87 â â KEV: PrĂ©sente â
â (SĂ©vĂ©ritĂ© tech.) â â (Proba 87%)â â (ExploitĂ©e !) â
â [FIRST] â â [FIRST] â â [CISA] â
âââââââââââââââââââââ ââââââââââââââ âââââââââââââââââ
â â â
ââââââââââââââââââŒâââââââââââââââââ
â
âââââââââââŒââââââââââ
â + VOTRE CONTEXTEâ
â (Exposition, â
â CriticitĂ© mĂ©tierâ
â Impact business)â
âââââââââââŹââââââââââ
â
âââââââââââŒââââââââââ
â DĂCISION DE â
â PRIORISATION â
â (P0, P1, P2, P3)â
âââââââââââââââââââââ
La matrice de priorisation
Voici une grille de décision qui croise tous les indicateurs :
đŽ Niveau 1 : KEV = PrioritĂ© absolue
RĂšgle dâor : Si une CVE est dans KEV, câest P0 (urgence), quel que soit son CVSS ou son EPSS.
| CVE | CVSS | EPSS | KEV | Exposition | Priorité | Délai |
|---|---|---|---|---|---|---|
| CVE-A | 9.8 | 0.95 | â | Internet | P0 | 24-48h |
| CVE-B | 6.5 | 0.88 | â | Interne | P0 | 3-5 jours |
| CVE-C | 7.2 | 0.12 | â | IsolĂ© | P1 | 1 semaine |
- KEV = exploitation confirmĂ©e dans la nature đ„
- Vous n'ĂȘtes plus "Ă risque", vous ĂȘtes en danger đš
- Le "Due Date" de KEV est une obligation (lĂ©gale pour les agences US, contractuelle pour certains secteurs) âïž
đ Niveau 2 : EPSS Ă©levĂ© (sans KEV)
Si la CVE nâest pas (encore) dans KEV, mais que lâEPSS est Ă©levĂ© :
| CVE | CVSS | EPSS | KEV | Exposition | Priorité | Délai |
|---|---|---|---|---|---|---|
| CVE-D | 9.2 | 0.90+ | â | Internet | P1 | 1 semaine |
| CVE-E | 7.5 | 0.80-0.89 | â | Internet | P1 | 10 jours |
| CVE-F | 8.1 | 0.70-0.79 | â | Interne | P2 | 2 semaines |
- EPSS > 0.80 = forte probabilitĂ© d'exploitation imminente â°
- Mieux vaut patcher avant que la CVE n'entre dans KEV đĄïž
đĄ Niveau 3 : CVSS Ă©levĂ© (EPSS faible)
Si le CVSS est Ă©levĂ© mais lâEPSS est faible :
| CVE | CVSS | EPSS | KEV | Exposition | Priorité | Délai |
|---|---|---|---|---|---|---|
| CVE-G | 9.8 | 0.05 | â | Interne | P2 | 2-3 semaines |
| CVE-H | 9.2 | 0.02 | â | IsolĂ© | P3 | Cycle normal |
- Grave techniquement, mais peu de risque d'exploitation rĂ©elle đ
- Peut-ĂȘtre un PoC complexe, ou un produit trĂšs niche đŹ
đą Niveau 4 : Tout le reste
| CVE | CVSS | EPSS | KEV | Exposition | Priorité | Délai |
|---|---|---|---|---|---|---|
| CVE-I | 6.5 | 0.30 | â | Interne | P3 | Cycle normal |
| CVE-J | 5.2 | 0.10 | â | IsolĂ© | P4 | Backlog |
- Risque faible, impact limitĂ© đ
- On patche dans le cadre du cycle de maintenance habituel đ
Le contexte : La variable manquante
CVSS, EPSS et KEV donnent des indicateurs globaux. Mais le risque réel dépend de votre contexte.
Les questions Ă se poser
Pour chaque CVE, demandez-vous :
1. Exposition
| Niveau | Description | Multiplicateur |
|---|---|---|
| Internet đ | Accessible publiquement | x2 |
| DMZ đȘ | Accessible depuis Internet via VPN/bastion | x1.5 |
| Interne đą | RĂ©seau interne, pas dâaccĂšs direct | x1 |
| IsolĂ© đ | Air-gapped, segmentĂ© | x0.5 |
2. Criticité métier
| Niveau | Description | Multiplicateur |
|---|---|---|
| Critique đ„ | Prod, revenue-generating, donnĂ©es sensibles | x2 |
| Important â ïž | Services internes essentiels | x1.5 |
| Standard đ | Services non-critiques | x1 |
| Dev/Test đ§Ș | Environnements non-prod | x0.5 |
3. Facilité de mitigation
| Difficulté | Description | Ajustement |
|---|---|---|
| Facile â | Patch simple, sans dĂ©pendance | Aucun |
| Moyenne âïž | Patch avec tests requis | +3 jours |
| Difficile â ïž | Patch complexe, risque de casse | +1 semaine |
| Impossible đ« | Pas de patch, EOL, workaround seulement | Mitigation |
Le workflow complet
Lundi matin (30 min)
1. Récupérer les données
import requests
import pandas as pd
# Récupérer KEV
kev_url = "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json"
kev_data = requests.get(kev_url).json()
kev_df = pd.DataFrame(kev_data['vulnerabilities'])
# Récupérer EPSS pour vos CVE
cve_list = ["CVE-2024-1234", "CVE-2024-5678"] # Depuis votre scanner
epss_scores = {}
for cve in cve_list:
response = requests.get(f"https://api.first.org/data/v1/epss?cve={cve}")
data = response.json()
if data['status'] == 'OK' and len(data['data']) > 0:
epss_scores[cve] = {
'epss': float(data['data'][0]['epss']),
'percentile': float(data['data'][0]['percentile'])
}
# Croiser avec les résultats de votre scanner (Nessus, Qualys...)
# qui contient déjà CVE + CVSS + Assets
2. Identifier les P0 (KEV)
# CVE de votre scanner qui sont dans KEV
your_cves_in_kev = kev_df[kev_df['cveID'].isin(cve_list)]
if len(your_cves_in_kev) > 0:
print("â ïž ALERTE : CVE dans KEV dĂ©tectĂ©es !")
print(your_cves_in_kev[['cveID', 'vendorProject', 'product', 'dueDate']])
# â Envoi d'une alerte Slack/Teams/Email
3. Trier par EPSS décroissant
# Créer une liste triée
prioritized_cves = sorted(
epss_scores.items(),
key=lambda x: x[1]['epss'],
reverse=True
)
for cve, scores in prioritized_cves[:10]: # Top 10
print(f"{cve}: EPSS={scores['epss']:.3f} (Percentile {scores['percentile']:.1f}%)")
Mardi-Jeudi (Action)
1. P0 (KEV) : Patch immédiat
- Mardi matin : Identification des assets vulnérables.
- Mardi aprÚs-midi : Tests du patch en pré-prod.
- Mercredi : Déploiement en prod (ou mitigation si pas de patch).
2. P1 (EPSS > 0.80) : Cette semaine
- Mercredi : Tests.
- Jeudi : Déploiement.
đĄ 3. P2 (CVSS Ă©levĂ©, EPSS moyen) : Ce mois-ci
- Planification pour les 2-3 semaines suivantes đ.
đą 4. P3 (Le reste) : Cycle normal
- Ajout au backlog de patch management đ.
Vendredi (Documentation)
Documentez :
- Quelles CVE ont été patchées ? (ID, date, assets concernés).
- Quelles CVE nâont PAS Ă©tĂ© patchĂ©es, et pourquoi ? (pas de patch, risque de casse, systĂšme en EOLâŠ).
- Quelles mitigations temporaires ont Ă©tĂ© mises en place ? (firewall, WAF, dĂ©sactivation de fonctionnalitĂ©âŠ).
Outils :
- JIRA / Confluence pour le tracking.
- Tableau Excel / Google Sheets (si vous ĂȘtes old school).
- Dashboard de votre outil de patch management (Ivanti, ManageEngineâŠ).
Les outils pour automatiser
Scanners de vulnérabilités (gratuits/open-source)
| Outil | CVSS | EPSS | KEV | Licence | Notes |
|---|---|---|---|---|---|
| Greenbone OpenVAS | â | â | â | Open Source | Scanner complet, feeds gratuits |
| Vuls | â | â | â | Open Source | Scanner lĂ©ger, multi-OS |
| Trivy | â | â | â | Open Source | SpĂ©cialisĂ© containers/IaC |
| Nuclei | â | â | â | Open Source | Template-based, rapide |
| OWASP Dependency-Track | â | â | â | Open Source | Plateforme SCA continue |
Il existe pour Trivy des outils permettant de vous gĂ©nĂ©rer des rapports avec lâEPSS. Par exemple : Trivy - Scan2html
APIs et feeds
| Source | URL | Format | Mise Ă jour |
|---|---|---|---|
| CISA KEV | JSON Feed | JSON | Continu |
| FIRST EPSS | API | JSON/CSV | Quotidien |
| NVD | API | JSON | Continu |
| CIRCL CVE Search | API | JSON | Quotidien |
Les piÚges à éviter (le best-of)
1. Lâobsession du CVSS
ProblĂšme : Une CVE Ă 6.5 avec EPSS 0.95 et dans KEV est infiniment plus dangereuse quâune 9.8 avec EPSS 0.01 et hors KEV.
Solution : ArrĂȘtez de fĂ©tichiser le CVSS. Câest UN indicateur parmi 4+.
2. Ignorer le contexte
3. La paralysie par lâanalyse
4. Croire que KEV est exhaustif
5. Patcher sans tester
- Isolez le systĂšme vulnĂ©rable (firewall, segmentation) đ
- Testez le patch en prĂ©-prod đ§Ș
- DĂ©ployez si OK, sinon appliquez des mitigations temporaires đĄïž
6. Négliger la communication
- Alertes đš : Si une CVE dans KEV touche un systĂšme critique, informez immĂ©diatement.
- Reporting hebdomadaire đ : Dashboard des CVE patchĂ©es et en cours.
- Documentation đ : Pour les audits et les certifications (ISO 27001, SOC 2...).
Cas dâusage rĂ©els
Cas 1 : La tempĂȘte parfaite
CVE-2024-XXXX : RCE dans nginx (utilisé pour tous vos reverse proxies).
| Indicateur | Valeur |
|---|---|
| CVSS | 9.8 |
| EPSS | 0.92 |
| KEV | â (ajoutĂ© ce matin) |
| Exposition | Internet (tous vos serveurs web) |
| Criticité métier | Critique (prod, transactions clients) |
Cas 2 : Le faux positif
CVE-2024-YYYY : SQLi dans un plugin WordPress obscur.
| Indicateur | Valeur |
|---|---|
| CVSS | 8.1 |
| EPSS | 0.85 |
| KEV | â |
| Exposition | Vous nâutilisez pas WordPress |
- PrioritĂ© : P4 (ignorĂ©e) đ«
- Raison : Pas de WordPress dans votre stack â
Cas 3 : Lâescalade rapide
CVE-2024-ZZZZ : Privilege escalation dans sudo.
| Indicateur | Jour 1 | Jour 3 | Jour 7 |
|---|---|---|---|
| CVSS | 7.8 | 7.8 | 7.8 |
| EPSS | 0.10 | 0.75 | 0.95 |
| KEV | â | â | â |
- Jour 1 : P3 (cycle normal, surveillance) đ
- Jour 3 : P1 (EPSS monte, un PoC est publiĂ©) â ïž
- Jour 7 : P0 (KEV, exploitation confirmĂ©e par ransomwares) đ„
La checklist du lundi matin
Ătape 1 : RĂ©cupĂ©rer KEV (5 min)
curl -o kev.json https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json
Filtrez les CVE ajoutées cette semaine :
kev_df['dateAdded'] = pd.to_datetime(kev_df['dateAdded'])
recent = kev_df[kev_df['dateAdded'] >= '2026-01-15']
Ătape 2 : Croiser avec vos assets (10 min)
Votre scanner de vulnérabilités vous donne une liste de CVE détectées. Croisez avec KEV :
your_cves = ['CVE-2024-1234', 'CVE-2024-5678', ...]
cves_in_kev = kev_df[kev_df['cveID'].isin(your_cves)]
if len(cves_in_kev) > 0:
print("â ïž URGENCE : CVE dans KEV !")
# Envoi alerte Slack/Teams
Ătape 3 : RĂ©cupĂ©rer EPSS (10 min)
Pour toutes vos CVE non présentes dans KEV, récupérez le score EPSS :
for cve in your_cves:
epss = get_epss_score(cve) # Fonction que vous avez créée
print(f"{cve}: EPSS={epss}")
Ătape 4 : Trier et prioriser (5 min)
Créez votre liste de priorités :
| Priorité | CritÚres | Action |
|---|---|---|
| P0 | KEV = â | Patch immĂ©diat (24-48h) |
| P1 | EPSS > 0.80 + Internet | Patch cette semaine |
| P2 | CVSS > 8.0 + EPSS > 0.50 | Patch ce mois-ci |
| P3 | Le reste | Cycle normal |
Ătape 5 : Communiquer (5 min)
Envoyez un résumé à votre équipe et à votre RSSI :
Bonjour,
Rapport hebdomadaire des vulnérabilités (Semaine 3 - Janvier 2026) :
â
CVE patchées la semaine derniÚre : 12
â ïž CVE dans KEV dĂ©tectĂ©es : 2 (CVE-2024-XXXX, CVE-2024-YYYY)
đŽ CVE prioritaires cette semaine : 5 (EPSS > 0.80)
đ Backlog : 27 CVE
Actions en cours :
- CVE-2024-XXXX : Patch en test, déploiement mercredi.
- CVE-2024-YYYY : Mitigation temporaire appliquée (WAF), patch prévu vendredi.
Dashboard : https://grafana.company.com/vuln-management
Ce quâil faut retenir
Conclusion : Le patch management en 2026
On est en 2026 . On a des IA qui gĂ©nĂšrent du code , des containers qui sâauto-scalent , et des dashboards qui clignotent en temps rĂ©el . Mais on a aussi 50 000 CVE par an , dont des milliers marquĂ©es âCriticalâ .
Et si vous ne les utilisez pas encore, sachez que vos concurrents (et vos attaquants) le font déjà .
- Ouvrez KEV
- Triez par EPSS
- Contextualisez avec votre infra
- Attaquez dans l'ordre
Vous ne sauverez pas le monde , mais vous sauverez peut-ĂȘtre votre boĂźte .
Ressources supplémentaires
Pour réviser les bases :
- CVE-2026-0544 : Lâinjection SQL qui ne meurt jamais
- La base CVE : Mode dâemploi
- CVSS : Le thermomÚtre cassé
Ressources officielles :
- đč FIRST EPSS
- đč CISA KEV Catalog
- đč NVD
- đč CVE.org
- đč OWASP Risk Rating Methodology