Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Comprendre les CVE, CVSS et EPSS pour prioriser

Par mis à jour le

Améliorer cette page

Un scanner remonte une liste de CVE assortie de scores comme 9.8 Critical ou 5.5 Medium, et la question tombe aussitôt : par où commencer ? Cette leçon donne les trois repères qui permettent de trier : la CVE, identifiant public d'une faille, le CVSS, qui en estime la gravité, et l'EPSS, qui estime la probabilité qu'elle soit exploitée, complété par le catalogue KEV des failles exploitées pour de bon. Elle s'adresse à un DevOps ou un développeur qui lit des rapports de scan. Les valeurs citées ont été relevées le 1er octobre 2026 auprès de FIRST, de la NVD et de la CISA.

  • Décoder un identifiant CVE et savoir ce qu'il contient, et ce qu'il ne contient pas
  • Interpréter un score CVSS et reconnaître ses limites
  • Interroger l'EPSS et le catalogue KEV d'une vulnérabilité
  • Prioriser une liste de CVE en croisant gravité, exploitation et exposition
  • Expliquer pourquoi « 0 CVE » ne veut pas dire « 0 risque »
  • Rattacher ce tri aux exigences SOCLE-VLN-INV-2 et SOCLE-VLN-VEX-2 du référentiel SOCLE

Une CVE (Common Vulnerabilities and Exposures) est l'identifiant public d'une vulnérabilité connue, attribué par le programme CVE. Avant ce catalogue, chaque éditeur nommait la même faille à sa façon, et deux alertes pouvaient parler du même problème sans que personne le sache. Avec la CVE, un scanner, un avis d'éditeur et un ticket désignent la même faille par le même identifiant, ce qui permet de chercher le correctif et de comparer les outils.

Un identifiant suit la forme CVE-ANNÉE-NUMÉRO, par exemple CVE-2024-3094, la porte dérobée découverte dans la bibliothèque de compression xz. Contrairement à une idée répandue, l'année est celle où l'identifiant a été attribué, pas forcément celle de la découverte ni de la publication, et le numéro est une simple séquence, sans signification de gravité ni d'ordre chronologique fin. CVE-2024-3094 a été publiée à la NVD le 29 mars 2024.

Ce qu'une CVE contient, et ce qu'elle ne contient pas

Section intitulée « Ce qu'une CVE contient, et ce qu'elle ne contient pas »

Une fiche CVE porte un identifiant, une description courte du problème et des références (avis d'éditeur, correctifs). Elle ne porte pas forcément de score : celui-ci est ajouté ensuite, par la NVD ou par l'éditeur. Elle ne dit pas non plus si la faille est exploitée dans la nature, ni si un correctif existe pour votre version. Ces trois informations viennent d'autres sources, décrites ci-dessous.

Le CVSS (Common Vulnerability Scoring System), maintenu par FIRST, note la gravité théorique d'une faille de 0 à 10. Le score se calcule à partir d'un vecteur qui répond à quelques questions : par quel accès attaque-t-on (réseau, local, physique), l'attaque est-elle complexe, faut-il des droits préalables ou une action de l'utilisateur, et quel est l'impact sur la confidentialité, l'intégrité et la disponibilité.

ScoreNiveau
0Aucun
0.1 à 3.9Faible (Low)
4.0 à 6.9Moyen (Medium)
7.0 à 8.9Élevé (High)
9.0 à 10Critique (Critical)

Le vecteur se lit et explique le score. Mesuré à la NVD : CVE-2024-3094 (xz) obtient 10.0 avec le vecteur CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H : attaque réseau, peu complexe, sans droit ni action de l'utilisateur, impact maximal. CVE-2021-23337, la faille de lodash rencontrée dans la leçon SCA, obtient 7.2 : son vecteur porte PR:H, l'attaquant doit déjà disposer de privilèges élevés, ce qui abaisse la note. La version 4.0 du CVSS existe depuis fin 2023, mais ces deux fiches ne portent qu'un score en version 3.1 : vérifiez toujours la version du score que vous comparez.

L'EPSS (Exploit Prediction Scoring System), publié lui aussi par FIRST, répond à une autre question : quelle est la probabilité qu'une faille soit exploitée dans les 30 prochains jours ? Il est recalculé chaque jour à partir d'observations réelles d'activité malveillante et des caractéristiques de la faille. Il complète le CVSS au lieu de le remplacer : une faille grave rarement attaquée et une faille moyenne très attaquée ne se traitent pas dans le même ordre.

L'API publique de FIRST répond sans compte, en JSON. Voici la réponse relevée pour CVE-2024-3094 :

Fenêtre de terminal
curl -s "https://api.first.org/data/v1/epss?cve=CVE-2024-3094"
{
"status": "OK",
"status-code": 200,
"version": "1.0",
"access": "public",
"total": 1,
"offset": 0,
"limit": 100,
"data": [
{
"cve": "CVE-2024-3094",
"epss": "0.859740000",
"percentile": "0.997240000",
"date": "2026-09-29"
}
]
}

Deux champs se lisent ensemble. epss est une probabilité entre 0 et 1 : 0.859740000 se lit environ 86 %, et non 0,86 %. percentile situe la faille par rapport à toutes les autres : 0.997240000 signifie qu'elle est plus probablement exploitée que 99,7 % des CVE notées. Le champ date rappelle que le score change chaque jour : un score relevé il y a six mois ne décrit plus la situation.

Le catalogue KEV (Known Exploited Vulnerabilities) de la CISA, l'agence américaine de cybersécurité, liste les failles dont l'exploitation est confirmée, et non plus seulement probable. Mesuré le 1er octobre 2026 : il compte 1 730 entrées. Il contient CVE-2021-44228 (Log4Shell, ajoutée le 10 décembre 2021) et CVE-2023-44487 (HTTP/2 Rapid Reset), mais pas CVE-2024-3094 : malgré son CVSS de 10.0 et son EPSS de 0,86, la porte dérobée de xz a été repérée avant d'être exploitée à grande échelle. KEV et EPSS ne disent donc pas la même chose, et c'est pourquoi on consulte les deux.

Tous les scanners ne remontent pas ces informations. Mesuré sur l'image node:14, une ancienne image Node.js qui accumule les vulnérabilités : Grype 0.119.0 ajoute à chaque correspondance un champ epss et un marqueur knownExploited issu du KEV, et sait trier par probabilité d'exploitation. Trivy 0.74.0 ne porte aucun champ EPSS dans son rapport JSON. Voici un extrait de la sortie de Grype, trié par EPSS :

Fenêtre de terminal
grype node:14@sha256:2cafa3fbb0b6529ee4726b4f599ec27ee557ea3dea7019182323b3779959927f --sort-by epss
NAME INSTALLED FIXED IN TYPE VULNERABILITY SEVERITY EPSS RISK
libnghttp2-14 1.36.0-2+deb10u1 1.36.0-2+deb10u2 deb CVE-2023-44487 High 100.0% (99th) 78.8 (kev)
node 14.21.3 *18.18.2, 20.8.1 binary CVE-2023-44487 High 100.0% (99th) 78.8 (kev)
libsystemd0 241-7~deb10u9 (won't fix) deb CVE-2023-50387 High 100.0% (99th) 75.0
libwebp6 0.6.1-2+deb10u1 0.6.1-2+deb10u3 deb CVE-2023-4863 High 100.0% (99th) 85.6 (kev)

La colonne EPSS donne la probabilité et le percentile, (kev) signale une exploitation confirmée, et RISK est un score propre à Grype, dont la formule lui appartient : servez-vous-en pour trier, pas comme une mesure absolue. Notez la ligne (won't fix) : l'éditeur de la distribution ne corrigera pas ce paquet, et la seule issue est de changer d'image de base.

Aucun des trois repères ne suffit seul. Le CVSS dit la gravité si l'attaque réussit, l'EPSS dit la probabilité qu'elle soit tentée, le KEV dit qu'elle l'a déjà été. Il manque un quatrième repère, que seul vous connaissez : l'exposition du composant. Le tableau suivant donne une politique de départ, à ajuster à votre contexte.

SituationRepèresAction
Exploitation confirméeprésente dans le KEVCorriger immédiatement
Grave et probablement exploitéeCVSS ≥ 9 et EPSS élevéCorriger immédiatement
Grave, peu exploitéeCVSS ≥ 9, EPSS faibleCorriger cette semaine
Moyenne mais très exploitéeCVSS 4 à 6, EPSS élevéCorriger cette semaine
Faible et peu exploitéeCVSS < 4, EPSS faiblePlanifier ou accepter

L'exposition module chaque ligne : la même faille passe devant les autres sur une API publique et derrière elles sur un environnement de test isolé. Le référentiel SOCLE en fait une exigence : SOCLE-VLN-VEX-2 demande une priorisation contextuelle, plutôt que fondée sur le CVSS seul.

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

Section intitulée « Pourquoi « 0 CVE » ne veut pas dire « 0 risque » »

Un rapport « 0 CVE » signifie seulement : parmi les failles connues et répertoriées dans la base du scanner, aucune ne correspond aux composants qu'il a su détecter. Il ne couvre ni les failles encore inconnues (0-day), ni les composants que le scanner n'a pas vus, comme un binaire copié à la main dans l'image, ni les failles publiées mais pas encore analysées par la base qu'il consulte.

Les deux scanners mesurés sur node:14 l'illustrent : Grype y trouve 2 032 correspondances, et Trivy en relève 1 455. Ils ne lisent ni les mêmes bases, ni les composants de la même façon. Croiser deux outils réduit les angles morts, sans les supprimer.

Surtout, une grande partie du risque n'a pas de CVE du tout. Une base de données accessible sans mot de passe, une clé d'API publiée par erreur ou l'absence de sauvegarde ne sont pas des vulnérabilités de logiciel, et aucun scanner de CVE ne les trouve. Elles relèvent d'autres contrôles : audit de configuration avec Lynis, détection de secrets avec Gitleaks, revue d'architecture.

RisqueExempleCVE ?
Mauvaise configurationBase de données ouverte sans mot de passeNon
Erreur humaineClé d'API publiée sur GitHubNon
Architecture faiblePas de sauvegarde, pas de supervisionNon
Faille inconnue0-day découverte demainPas encore

Une liste de cinquante CVE ne demande pas cinquante actions immédiates. Le tri se fait en trois questions, dans cet ordre, et chacune réduit la liste avant la suivante.

  1. Où est le composant ? Exposé sur internet, accessible aux partenaires, interne, ou cantonné à un environnement de test.
  2. Que disent les repères ? Présence dans le KEV, EPSS, CVSS, dans cet ordre de poids.
  3. Quelle action ? Corriger, atténuer ou accepter.

Les trois actions ne se valent pas. Corriger, c'est mettre à jour le composant, la seule issue qui supprime le risque. Atténuer, c'est réduire l'exposition en attendant le correctif, par un filtrage réseau ou une restriction d'accès. Accepter, c'est documenter pourquoi on ne corrige pas, pour une durée limitée. Le schéma ci-dessous résume ce tri, de la liste brute à l'une des trois actions.

Tri d'une liste de CVE : on part de la liste remontée par le scanner, on regarde d'abord l'exposition du composant (internet, interne, test), puis les repères KEV, EPSS et CVSS dans cet ordre, pour aboutir à l'une des trois actions : corriger par une mise à jour, atténuer en attendant le correctif, ou accepter de façon documentée et avec une expiration.Liste de CVEremontée par le scannerExposition :internet, interne, testRepères :KEV, puis EPSS, puis CVSSCorriger :mettre à jourAtténuer en attendantle correctifAccepter : documenté,avec expiration
Source · SVG
Échap pour fermer, + et − pour zoomer, défilement pour se déplacer. 100 %

Sur un parc de serveurs, le même tri s'applique à grande échelle : le plugin CVE de Rudder détecte les vulnérabilités sur chaque nœud et pilote les campagnes de mise à jour.

  1. Une CVE est un identifiant public ; son année est celle de l'attribution, pas forcément de la découverte.
  2. Le CVSS mesure la gravité si l'attaque réussit ; son vecteur explique la note.
  3. L'EPSS estime la probabilité d'exploitation à 30 jours ; 0.86 se lit 86 %, et il change chaque jour.
  4. Le KEV liste les exploitations confirmées : CVE-2024-3094, CVSS 10.0, n'y figure pas.
  5. Grype affiche l'EPSS et le KEV ; Trivy 0.74.0 ne porte pas l'EPSS.
  6. « 0 CVE » ne couvre ni les 0-day, ni les composants non vus, ni les risques sans CVE.
  7. On trie par exposition, puis KEV, EPSS et CVSS ; une acceptation se documente et expire.
  8. Preuves attendues par SOCLE-VLN-INV-2 et VEX-2 : un inventaire enrichi par KEV et EPSS, et une priorisation contextuelle.

Vérifiez que l'essentiel de cette leçon est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

Les quatre sources de cette leçon sont publiques et consultables sans compte.

RessourceCe que c'estLien
CVE ProgramLe catalogue officiel des identifiantscve.org
NVDLes CVE enrichies de leurs scores CVSSnvd.nist.gov
EPSSLes probabilités d'exploitation de FIRSTfirst.org/epss
KEVLes exploitations confirmées, par la CISAcisa.gov/known-exploited-vulnerabilities-catalog

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn