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-3094Ce 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 :
| Score | Niveau | Ce que ça veut dire |
|---|---|---|
| 0 | Aucun | Pas vraiment une faille |
| 0.1 – 3.9 | Faible | Peu d’impact, difficile à exploiter |
| 4.0 – 6.9 | Moyen | Impact modéré ou exploitation complexe |
| 7.0 – 8.9 | Élevé | Impact important, exploitation possible |
| 9.0 – 10 | Critique | Impact 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 :
| CVE | Score | Où ? | Urgence réelle |
|---|---|---|---|
| CVE-A | 9.8 Critical | Serveur de test interne | Moyenne (personne n’y accède) |
| CVE-B | 6.5 Medium | API publique de ton site | Haute (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)
# Récupérer l'EPSS d'une CVE spécifiquecurl -s "https://api.first.org/data/v1/epss?cve=CVE-2024-3094" | jqRé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
| Site | URL | Avantage |
|---|---|---|
| FIRST EPSS | first.org/epss ↗ | Source officielle |
| NVD | nvd.nist.gov ↗ | CVSS + liens EPSS |
| CVE Details | cvedetails.com ↗ | Vue 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 :
# Scanner une image et trier par probabilité d'exploitationgrype node:14 --sort-by epssRésultat (extrait) :
NAME INSTALLED FIXED IN VULNERABILITY SEVERITY EPSS RISKlibnghttp2-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.8libssl1.1 1.1.1n-0+deb10u4 1.1.1n-0+deb10u5 CVE-2023-2650 Medium 91.9% (99th) 52.8git 1:2.20.1-2+deb10u8 CVE-2024-32002 Critical 80.1% (99th) 72.1Ce 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
| Situation | CVSS | EPSS | Que faire ? |
|---|---|---|---|
| Faille grave ET exploitée | 9.0+ | > 30% | 🔴 Urgence absolue |
| Faille grave mais pas exploitée | 9.0+ | < 1% | 🟡 Planifier rapidement |
| Faille moyenne mais très exploitée | 5.0 | > 40% | 🔴 Priorité haute |
| Faille faible et non exploitée | 3.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 :
| Risque | Exemple | CVE ? |
|---|---|---|
| Mauvaise configuration | Base de données accessible sans mot de passe | ❌ Non |
| Erreur humaine | Clé API publiée sur GitHub par erreur | ❌ Non |
| Architecture faible | Pas de sauvegarde, pas de supervision | ❌ Non |
| Faille inconnue | Zero-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) →- Le scanner liste tous les composants (paquets, bibliothèques…) ;
- Il compare cette liste avec des bases de CVE connues ;
- 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 ?
| Exposition | Urgence |
|---|---|
| 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
| CVSS | EPSS | Action |
|---|---|---|
| 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
| Ressource | Ce que c’est | Lien |
|---|---|---|
| CVE Program | Le catalogue officiel des failles | cve.org ↗ |
| NVD | Les CVE enrichies avec les scores | nvd.nist.gov ↗ |
| EPSS | Les probabilités d’exploitation | first.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.