Aller au contenu

Comprendre les CVE, CVSS et EPSS

Mise à jour :

Quand tu lances un scan de sécurité sur ton application ou ton serveur, tu obtiens souvent une liste de CVE avec des scores comme 9.8 Critical ou 5.5 Medium. Mais que signifient vraiment ces chiffres ? Faut-il tout corriger immédiatement ? Et pourquoi certaines failles « critiques » sont parfois moins urgentes que d’autres ?

Dans ce guide, je t’explique simplement :

  • ce qu’est une CVE (et pourquoi c’est utile) ;
  • comment lire les scores CVSS sans paniquer ;
  • comment utiliser EPSS pour savoir ce qui est vraiment exploité ;
  • pourquoi « 0 CVE » ne veut pas dire « 0 risque » ;
  • comment prioriser tes corrections de façon pragmatique.

C’est quoi une CVE ? L’essentiel en 2 minutes

Une fiche d’identité pour les failles de sécurité

Imagine un catalogue mondial des failles de sécurité connues. Chaque fois qu’on découvre un problème de sécurité dans un logiciel, on lui attribue un numéro unique : c’est une CVE (Common Vulnerabilities and Exposures).

Exemple concret :

CVE-2024-3094

Ce numéro signifie : « faille numéro 3094 découverte en 2024 ». C’est comme un numéro de série qui permet à tout le monde de parler de la même faille, peu importe la langue ou le pays.

Pourquoi c’est utile ?

Avant les CVE, quand une faille était découverte :

  • Chaque éditeur lui donnait un nom différent ;
  • Les équipes de sécurité ne savaient pas si deux alertes parlaient du même problème ;
  • C’était le chaos pour suivre les correctifs.

Avec les CVE, tout le monde utilise le même identifiant. Quand ton scanner affiche CVE-2024-3094, tu peux :

  • chercher cette CVE sur Google pour comprendre le problème ;
  • vérifier si ton éditeur a publié un correctif ;
  • comparer avec d’autres outils qui utilisent le même numéro.

Ce qu’une CVE contient (et ne contient pas)

Une CVE, c’est basiquement :

  • un numéro unique (CVE-ANNÉE-NUMÉRO) ;
  • une description courte du problème ;
  • des liens vers plus d’informations.

Ce qu’elle ne contient pas forcément :

  • un score de gravité (ajouté plus tard par d’autres organismes) ;
  • la preuve qu’un pirate l’exploite vraiment ;
  • un correctif tout prêt.

CVSS : le score de gravité (de 0 à 10)

Comment ça marche ?

Quand une CVE est publiée, des experts lui attribuent un score CVSS (Common Vulnerability Scoring System) pour indiquer sa gravité. C’est une note de 0 à 10 :

ScoreNiveauCe que ça veut dire
0AucunPas vraiment une faille
0.1 – 3.9FaiblePeu d’impact, difficile à exploiter
4.0 – 6.9MoyenImpact modéré ou exploitation complexe
7.0 – 8.9ÉlevéImpact important, exploitation possible
9.0 – 10CritiqueImpact majeur, exploitation facile

Ce que le score prend en compte

Le CVSS est calculé à partir de plusieurs questions :

  • Comment attaque-t-on ? Via internet ? En local ? Faut-il un accès physique ?
  • C’est facile ? Quelques clics ou plusieurs jours de travail ?
  • Faut-il des droits spéciaux ? Être admin ? Avoir un compte ?
  • Quel est l’impact ? Vol de données ? Prise de contrôle totale ? Simple ralentissement ?

Exemple concret

Prenons deux CVE :

CVEScoreOù ?Urgence réelle
CVE-A9.8 CriticalServeur de test interneMoyenne (personne n’y accède)
CVE-B6.5 MediumAPI publique de ton siteHaute (exposée à tous)

Le contexte compte autant que le score !

EPSS : est-ce que les pirates s’en servent vraiment ?

Le problème avec CVSS seul

CVSS mesure la gravité théorique. Mais toutes les failles critiques ne sont pas exploitées. Certaines CVE à 9.8 dorment pendant des années sans qu’aucun pirate ne s’y intéresse.

EPSS : la probabilité d’exploitation

EPSS (Exploit Prediction Scoring System) répond à une autre question : « Quelle est la probabilité que cette faille soit exploitée dans les 30 prochains jours ? »

C’est un pourcentage basé sur des données réelles :

  • les attaques observées dans le monde ;
  • les outils de piratage disponibles ;
  • l’historique d’exploitation de failles similaires.

Où trouver le score EPSS ?

Contrairement au CVSS qu’on trouve partout, l’EPSS est moins répandu. Voici comment le consulter :

Via l’API FIRST (gratuit)

Terminal window
# Récupérer l'EPSS d'une CVE spécifique
curl -s "https://api.first.org/data/v1/epss?cve=CVE-2024-3094" | jq

Réponse type :

{
"status": "OK",
"status-code": 200,
"version": "1.0",
"access": "public",
"total": 1,
"offset": 0,
"limit": 100,
"data": [
{
"cve": "CVE-2024-3094",
"epss": "0.859950000",
"percentile": "0.993510000",
"date": "2025-12-10"
}
]
}
  • epss : probabilité d’exploitation (0.93 = 93%)
  • percentile : rang par rapport aux autres CVE (99.8% = plus exploitée que 99.8% des failles)

Via des interfaces web

SiteURLAvantage
FIRST EPSSfirst.org/epssSource officielle
NVDnvd.nist.govCVSS + liens EPSS
CVE Detailscvedetails.comVue consolidée

Dans les scanners modernes

Certains outils intègrent déjà l’EPSS :

  • Grype : support natif depuis 2024, affiche EPSS et la base KEV de CISA ;
  • Dependency-Track : support natif dans l’interface et l’API REST ;
  • Trivy : pas de support natif, mais un plugin communautaire existe.

Voici un scan de l’image node:14 trié par EPSS :

Terminal window
# Scanner une image et trier par probabilité d'exploitation
grype node:14 --sort-by epss

Résultat (extrait) :

NAME INSTALLED FIXED IN VULNERABILITY SEVERITY EPSS RISK
libnghttp2-14 1.36.0-2+deb10u1 1.36.0-2+deb10u2 CVE-2023-44487 High 94.4% (99th) 78.8 (kev)
libwebp6 0.6.1-2+deb10u1 0.6.1-2+deb10u3 CVE-2023-4863 High 94.1% (99th) 85.6 (kev)
libc6 2.28-10+deb10u2 2.28-10+deb10u3 CVE-2024-2961 High 92.9% (99th) 68.8
libssl1.1 1.1.1n-0+deb10u4 1.1.1n-0+deb10u5 CVE-2023-2650 Medium 91.9% (99th) 52.8
git 1:2.20.1-2+deb10u8 CVE-2024-32002 Critical 80.1% (99th) 72.1

Ce que tu vois :

  • EPSS : probabilité d’exploitation dans les 30 jours (94.4% = très élevée)
  • (99th) : percentile (cette CVE est plus exploitée que 99% des autres)
  • (kev) : présente dans la base KEV de la CISA (exploitation confirmée dans la nature)
  • RISK : score combiné calculé par Grype (CVSS × EPSS)

Combiner les deux pour mieux décider

SituationCVSSEPSSQue faire ?
Faille grave ET exploitée9.0+> 30%🔴 Urgence absolue
Faille grave mais pas exploitée9.0+< 1%🟡 Planifier rapidement
Faille moyenne mais très exploitée5.0> 40%🔴 Priorité haute
Faille faible et non exploitée3.0< 0.1%🟢 Traiter quand possible

Pourquoi « 0 CVE » ne veut pas dire « 0 risque »

Le marketing du « 0 CVE »

Tu vois parfois des messages comme :

« Notre image Docker : 0 CVE ! » « Système ultra-sécurisé : aucune vulnérabilité ! »

C’est tentant d’y croire, mais c’est trompeur. Voici pourquoi.

Les limites des scanners

Quand un scanner affiche « 0 CVE », ça veut dire :

« Parmi les failles connues et répertoriées dans ma base de données, aucune ne correspond aux composants que j’ai pu détecter. »

Ça ne couvre pas :

  • les failles pas encore découvertes (zero-days) ;
  • les composants que le scanner n’a pas vus (binaires cachés, plugins…) ;
  • les failles pas encore scorées (il y a parfois des mois de retard) ;
  • les mauvaises configurations (mot de passe faible, ports ouverts…).

Les vrais risques sans CVE

Beaucoup de problèmes de sécurité n’ont pas de CVE :

RisqueExempleCVE ?
Mauvaise configurationBase de données accessible sans mot de passe❌ Non
Erreur humaineClé API publiée sur GitHub par erreur❌ Non
Architecture faiblePas de sauvegarde, pas de supervision❌ Non
Faille inconnueZero-day découverte demain❌ Pas encore

Comment les scanners trouvent les CVE

Le processus simplifié

Quand tu lances un scanner comme Trivy ou Grype, voici ce qui se passe :

1. INVENTAIRE 2. COMPARAISON 3. RAPPORT
Qu'est-ce qui Y a-t-il des Afficher les
est installé ? failles connues ? résultats
Python 3.9 → CVE-2024-XXXX ? → ⚠️ 3 CVE trouvées
OpenSSL 1.1 → CVE-2023-YYYY ? → dont 1 critique
nginx 1.20 → (pas de CVE) →
  1. Le scanner liste tous les composants (paquets, bibliothèques…) ;
  2. Il compare cette liste avec des bases de CVE connues ;
  3. Il affiche les correspondances trouvées avec leurs scores.

Pourquoi croiser plusieurs outils ?

Chaque scanner utilise des bases de données différentes. En combinant plusieurs outils, tu augmentes tes chances de tout détecter :

  • Trivy : polyvalent, rapide, très populaire ;
  • Grype : léger, bien intégré avec les SBOM ;
  • Dependency-Track : suivi centralisé dans le temps.

Que faire quand tu trouves des CVE ?

Pas de panique

Recevoir une liste de 50 CVE peut faire peur. Mais toutes ne nécessitent pas une action immédiate. Voici comment trier.

Étape 1 : Où se trouve le problème ?

ExpositionUrgence
Internet public🔴 Très haute
Réseau partenaires🟡 Haute
Réseau interne🟡 Moyenne
Environnement de test🟢 Basse

Une faille sur ton site web public est plus urgente que la même faille sur un serveur de développement.

Étape 2 : Regarde le score et l’exploitation

CVSSEPSSAction
Critique + exploité> 10%Corriger immédiatement
Critique + pas exploité< 1%Corriger cette semaine
Moyen + exploité> 20%Corriger cette semaine
Faible + pas exploité< 0.1%Planifier ou accepter

Étape 3 : Décide de l’action

Pour chaque CVE, tu as trois options :

  • Corriger : mettre à jour le composant vulnérable (solution idéale) ;
  • Contourner : ajouter des protections (pare-feu, restrictions d’accès) ;
  • Accepter : documenter pourquoi tu ne corriges pas (temporairement).

Bonnes pratiques : ce qu’il faut retenir

✅ À faire

  • Scanne régulièrement : pas juste une fois, mais à chaque déploiement ;
  • Priorise par contexte : exposition + score + exploitation ;
  • Centralise le suivi : un outil ou un tableau pour tout voir ;
  • Documente tes décisions : pourquoi tu corriges ou pas.

❌ À éviter

  • Viser « 0 CVE » à tout prix : tu vas tordre les rapports au lieu de réduire le risque ;
  • Croire que le score dit tout : un 9.8 isolé < un 6.0 exposé ;
  • Ignorer les CVE sans score : pas de score ≠ pas grave.

Pour aller plus loin

Maintenant que tu comprends les bases, passe à la pratique :

  • Scanner tes images : Trivy est l’outil que je recommande pour débuter.
  • Suivre tes vulnérabilités : Dependency-Track pour un tableau de bord centralisé.
  • Sécuriser ta chaîne de production : SLSA et Cosign pour garantir l’intégrité.
  • Auditer tes serveurs : Lynis pour les configurations Linux.

Ressources officielles

RessourceCe que c’estLien
CVE ProgramLe catalogue officiel des faillescve.org
NVDLes CVE enrichies avec les scoresnvd.nist.gov
EPSSLes probabilités d’exploitationfirst.org/epss

En résumé

  • CVE = un numéro unique pour identifier une faille connue ;
  • CVSS = un score de 0 à 10 indiquant la gravité théorique ;
  • EPSS = la probabilité que cette faille soit vraiment exploitée ;
  • 0 CVE ≠ 0 risque : les scanners ne voient pas tout ;
  • Priorise par contexte : où c’est ? C’est grave ? C’est exploité ?

Tu as maintenant les bases pour comprendre tes rapports de scan et prendre des décisions éclairées, sans paniquer ni ignorer les alertes.