Après avoir vu pourquoi le CVSS seul ne suffit plus pour prioriser vos patchs, entrons dans le vif du sujet avec EPSS (Exploit Prediction Scoring System).
C’est l’outil qui répond à LA question que vous vous posez devant votre liste de 12 000 CVE : “Laquelle va réellement être exploitée ?”
Spoiler : Ce n’est pas forcément celle avec le plus gros score CVSS.
Qu’est-ce que c’est ?
EPSS (Exploit Prediction Scoring System) est un modèle de scoring créé par le FIRST (oui, les mêmes qui gèrent le CVSS). Son objectif ? Prédire la probabilité qu’une CVE soit exploitée dans les 30 prochains jours.
C’est un score entre 0.0 (presque aucune chance) et 1.0 (exploitée à coup sûr dans le mois).
Exemple concret :
- CVE-2024-1234 : CVSS 9.8 / EPSS 0.02 (2%) → Grave techniquement, mais peu exploitée.
- CVE-2024-5678 : CVSS 6.5 / EPSS 0.91 (91%) → Moins grave, mais presque certaine d’être exploitée.
Laquelle patchez-vous en premier ? Si vous avez dit la première, retournez case départ sans toucher 20 000 francs.
Comment ça fonctionne ?
Le modèle de Machine Learning
EPSS n’est pas un simple calcul comme le CVSS. C’est un modèle de Machine Learning entraîné sur plusieurs sources de données hétérogènes.
Voici ce qu’il digère quotidiennement :
1. Les données d’exploitation réelles
- Honeypots : Des systèmes pièges déployés par des chercheurs pour observer les attaques.
- Feeds de malwares : Analyses de malwares collectés dans la nature qui exploitent des CVE.
- Rapports de CTI (Cyber Threat Intelligence) : Données partagées par des entreprises de sécu (Palo Alto, CrowdStrike, Mandiant…).
- Données de CISA : Notamment le catalogue KEV (on en parlera lundi prochain).
2. Les caractéristiques de la CVE
- Score CVSS : Oui, le modèle en tient compte, mais ce n’est qu’UN paramètre parmi 30+.
- Âge de la CVE : Une CVE récente a plus de chances d’être exploitée qu’une CVE de 2012.
- Présence d’un PoC public : Si un Proof of Concept fonctionnel existe sur GitHub, Exploit-DB, ou Metasploit, le risque augmente drastiquement.
- Complexité de l’exploit : Est-ce qu’il faut être un génie pour l’exploiter, ou un script kiddie peut le faire avec un copier-coller ?
3. L’activité autour de la CVE
- Mentions sur les réseaux sociaux : Twitter/X, forums de sécu (Reddit, HackerNews…).
- Forums underground : Oui, FIRST monitore aussi certains forums clandestins (anonymisés évidemment).
- Articles de sécurité : Publications sur des blogs, advisories de vendors, bulletins de CERT.
- Discussions sur GitHub : Combien d’issues mentionnent cette CVE ? Y a-t-il des exploits en développement ?
4. Les données historiques
Le modèle apprend des patterns du passé :
- Si des CVE similaires (même type d’attaque, même produit, même CWE) ont été exploitées massivement, la nouvelle CVE hérite d’un risque accru.
- Si une CVE touche un logiciel très populaire (Apache, Windows, WordPress…), elle grimpe automatiquement.
L’entraînement quotidien
Le modèle est réentraîné tous les jours avec les dernières données.
Concrètement, le score d’une CVE peut :
- Monter si un PoC est publié, si la CVE est mentionnée sur Twitter, ou si elle apparaît dans des malwares.
- Descendre si elle vieillit sans être exploitée, ou si des mitigations efficaces sont déployées.
C’est une prédiction dynamique, pas un score figé comme le CVSS.
Les métriques clés
En plus du score brut (0-1), EPSS fournit plusieurs indicateurs utiles :
1. Le score EPSS (0.0 à 1.0)
C’est la probabilité d’exploitation dans les 30 prochains jours.
Exemples :
- 0.01 (1%) : Très faible risque. C’est une CVE nichée, complexe, ou qui n’intéresse personne.
- 0.50 (50%) : Risque modéré. Ça peut partir, mais ce n’est pas garanti.
- 0.95 (95%) : Quasi-certitude d’exploitation. Patch maintenant.
2. Le percentile
“Cette CVE est plus risquée que X% des autres CVE.”
Exemple :
- EPSS 0.85, percentile 98% → Cette CVE est dans le top 2% des plus dangereuses.
Le percentile est parfois plus parlant que le score brut. Une CVE au 99e percentile, c’est le 1% le plus critique.
3. Le trending (montée/descente)
Certains dashboards montrent si le score EPSS monte ou descend.
Exemples :
- 📈 +0.15 en 24h : Alerte ! Un PoC vient peut-être d’être publié.
- 📉 -0.05 en 7 jours : Le buzz retombe, la CVE n’est finalement pas si exploitable.
4. Le modèle v3
Depuis 2023, EPSS utilise le modèle v3, beaucoup plus précis que les versions précédentes. Les principales améliorations :
- Moins de faux positifs : Le modèle v2 avait tendance à “surprédire” l’exploitation.
- Meilleure prise en compte du contexte : Distinction entre exploitation ciblée (APT) et exploitation de masse (ransomwares).
- Ajustements sectoriels : Le modèle sait que certaines CVE ne touchent que des secteurs très nichés (OT/ICS, healthcare…).
👉 Outil officiel : FIRST EPSS Dashboard
Un peu d’histoire (et de scepticisme)
La genèse (2019)
EPSS a été lancé en 2019 (v1) par le FIRST, après plusieurs années de recherche. L’idée de base : “Le CVSS dit si c’est grave, mais pas si c’est urgent”.
Au début, tout le monde était sceptique :
- “Un modèle prédictif pour la sécu ? Mouais…”
- “Ça va juste nous rajouter un chiffre à lire.”
- “Les attaquants vont apprendre à contourner le modèle.”
Mais en 2024-2025, plusieurs études indépendantes ont montré que EPSS identifiait correctement 80-85% des CVE effectivement exploitées dans les 30 jours. C’est loin d’être parfait, mais c’est bien mieux que de tout patcher au hasard.
Les versions successives
- v1 (2019) : Prototype. Données limitées, précision moyenne.
- v2 (2021) : Amélioration majeure. Intégration de feeds CTI et de données underground.
- v3 (2023) : Version actuelle. Réduction des faux positifs, meilleure granularité.
Le modèle continue d’évoluer avec les retours de la communauté.
L’adoption progressive
Aujourd’hui, EPSS est intégré dans :
- Les scanners de vulnérabilités .
- Les plateformes de patch management .
- Les dashboards de CTI .
Mais beaucoup d’entreprises ne l’utilisent toujours pas, par habitude ou par méconnaissance.
Les limites d’EPSS (soyons honnêtes)
EPSS n’est pas une baguette magique. Voici ses faiblesses :
1. Biais d’observabilité
Problème : Si une CVE est exploitée dans des réseaux très fermés (APT étatiques, infrastructures isolées), EPSS ne la verra pas.
Exemple : Une vulnérabilité zero-day utilisée par un groupe d’espionnage russe contre des ambassades européennes ne sera pas détectée tant qu’elle n’est pas divulguée publiquement.
Impact : EPSS sous-estime les menaces “silencieuses”.
2. Faux positifs
Problème : Certaines CVE avec EPSS élevé ne sont finalement jamais exploitées en masse.
Raisons :
- Le PoC public ne fonctionne pas bien en réalité.
- L’attaque est trop complexe pour être généralisée.
- Les défenses (WAF, IPS…) bloquent efficacement l’exploit.
Exemple : Une CVE sur un CMS obscur obtient un EPSS de 0.80 parce qu’un PoC est publié. Mais comme personne n’utilise ce CMS, elle n’est jamais vraiment exploitée.
3. Délai de réaction
Problème : Si une CVE devient “tendance” le lundi matin (publication d’un exploit sur GitHub), EPSS ne la détectera qu’avec 24-48h de retard.
Impact : Pendant ce laps de temps, vous êtes vulnérable sans avertissement.
Mitigation : Surveillez aussi les sources externes (Twitter, Mastodon, Reddit, Discord de sécu).
4. Dépendance aux sources
Problème : Si les feeds de CTI sont incomplets ou biaisés (focalisés sur les menaces “occidentales”), EPSS le sera aussi.
Exemple : Une campagne d’attaques ciblant exclusivement l’Asie du Sud-Est pourrait passer sous le radar si les honeypots et feeds sont majoritairement américains/européens.
5. Pas de prise en compte du contexte spécifique
Problème : EPSS donne une probabilité globale, mais ne sait pas si votre système est vulnérable.
Exemple :
- EPSS dit 0.95 pour une CVE Windows Server.
- Vous êtes 100% Linux.
- Le risque pour vous est zéro, malgré l’EPSS élevé.
Solution : Toujours croiser EPSS avec votre inventaire d’assets.
Comment utiliser EPSS au quotidien
1. Ne regardez jamais EPSS seul
EPSS doit toujours être croisé avec :
- CVSS : Pour la sévérité technique.
- KEV : Pour confirmer l’exploitation réelle.
- Votre contexte : Est-ce que vous utilisez le produit concerné ? Est-il exposé ?
2. Définissez des seuils
Voici une grille de lecture possible :
| EPSS | Percentile | Action |
|---|---|---|
| 0.90+ | 99%+ | P0 - Patch immédiat |
| 0.70-0.89 | 95-98% | P1 - Cette semaine |
| 0.30-0.69 | 80-94% | P2 - Ce mois-ci |
| < 0.30 | < 80% | P3 - Cycle normal |
Attention : Ces seuils sont indicatifs. Adaptez-les à votre appétence au risque et à votre secteur.
3. Surveillez les CVE qui “montent”
Si une CVE passe de 0.10 à 0.80 en 48h, c’est un signal d’alarme. Quelque chose a changé :
- Publication d’un exploit.
- Utilisation par un malware connu.
- Mention dans un bulletin de CERT.
Mettez-la en priorité même si le CVSS est “moyen”.
4. Automatisez la récupération
Ne faites pas ça à la main. Utilisez l’API EPSS :
import requests
cve_id = "CVE-2024-1234"
response = requests.get(f"https://api.first.org/data/v1/epss?cve={cve_id}")
data = response.json()
if data['status'] == 'OK':
epss_score = data['data'][0]['epss']
percentile = data['data'][0]['percentile']
print(f"{cve_id}: EPSS = {epss_score}, Percentile = {percentile}")
Intégrez ça dans vos workflows de patch management.
Cas d’usage réels
Cas 1 : La CVE “silencieuse”
CVE-2024-XXXX : Vulnérabilité dans un plugin WordPress.
- CVSS : 8.1 (High)
- EPSS : 0.92 (92%)
- Statut : Pas de patch disponible, seulement un workaround.
Votre réaction :
- Vérifiez si vous utilisez ce plugin (inventaire d’assets).
- Si oui, appliquez le workaround immédiatement.
- Surveillez KEV (si elle y entre, c’est que c’est vraiment exploité).
Sans EPSS : Vous auriez peut-être attendu le patch officiel. Trop tard.
Cas 2 : La fausse alerte
CVE-2024-YYYY : RCE dans un serveur d’impression obscur.
- CVSS : 9.8 (Critical)
- EPSS : 0.03 (3%)
- Raison : Produit ultra-niche, peu d’installations.
Votre réaction :
- Vérifiez si vous utilisez ce serveur (très probablement non).
- Si oui, patchez dans le cycle normal (pas d’urgence).
- Si non, ignorez.
Sans EPSS : Vous auriez peut-être paniqué à cause du CVSS 9.8.
Cas 3 : L’escalade rapide
CVE-2024-ZZZZ : SQLi dans un framework PHP populaire.
- Jour 1 : CVSS 7.5 / EPSS 0.15 → “On verra plus tard”.
- Jour 3 : EPSS monte à 0.85 → Un exploit est publié sur GitHub.
- Jour 5 : EPSS à 0.95 → Détecté dans des malwares.
Votre réaction :
- Jour 1 : Surveillance.
- Jour 3 : Priorisation immédiate.
- Jour 5 : Trop tard si vous n’avez pas patché.
Sans EPSS : Vous auriez peut-être raté le signal du Jour 3.
Quelques outils pour jouer avec EPSS
- FIRST EPSS : Le dashboard officiel. Vous entrez une CVE, vous obtenez le score.
- EPSS Explorer : Dashboard plus visuel avec graphiques d’évolution.
- FIRST EPSS API : API REST pour récupérer les scores programmatiquement.
- CIRCL CVE Search : Agrège CVE, CVSS, EPSS, et d’autres métadonnées.