Logo Knock Knock startup cyber Intelligence Artificielle

COMPRENDRE LES CVE ET LEUR SCORE CVSS

Les CVE, qu’est-ce que c’est ?

CVE est l’acronyme anglais de Common Vulnerabilities and Exposures, il s’agit d’une liste de failles de sécurité informatique. Mais, lorsque l’on parle d’une CVE, on fait plus généralement référence à une faille de sécurité en particulier. Les CVE se voient attribuer un score de criticité (CVSS) permettant de hiérarchiser les vulnérabilités et ainsi prioriser les chantiers de sécurisation des SI.

Comment les CVE sont-elles répertoriées ?

Chaque CVE a un identifiant unique, attribué par l’organisation MITRE. Intéressons-nous à la manière dont celui-ci fonctionne avec l’exemple suivant : CVE-2019-0708.

Le terme CVE nous indique donc qu’il s’agit d’une CVE (plutôt cohérent pour l’instant 😅). La première suite de chiffres nous indique ensuite l’année de publication de la CVE et enfin une dernière série de 4, 5 ou 7 chiffres afin de rendre l’identifiant unique.


Voici des exemples de CVE connues :

👉 CVE-2011-2523 : vsftpd 2.3.4

👉 CVE-2017-0144 : WannaCry

Ainsi, on peut savoir que la première CVE a été listée en 2011 et la seconde en 2017.

Mais comment peut-on hiérarchiser ces CVE ?

Grâce au score CVSS ! En effet, chaque CVE se voit attribuer un score allant de 0 à 10 qui désigne le niveau de gravité de la vulnérabilité. Une CVE de niveau 9.8 serait  – on dit bien serait au conditionnel et vous en connaîtrez la raison dans la suite de ce billet – donc prioritaire dans un chantier de sécurisation face à une CVE de niveau 3.5.

Une CVE peut être composée de 3 scores CVSS (score de base, temporel et environnemental). Le score de base est l’indicateur le plus utilisé et permet d’évaluer la criticité maximale théorique de la vulnérabilité. 

Diagramme de Farmer des CVE

Criticité = Probabilité d’occurrence X Gravité de la CVE

 

Ce score est calculé selon différents critères :

Interface d'un tableau CVSS

La simplicité d’exploitation de la vulnérabilité :

Plus la vulnérabilité est simple à exploiter, plus elle est susceptible d’être utilisée par un attaquant et contribue à la probabilité d’occurrence.

👉 Vecteur d’attaque (Network, Adjacent, Local, Physical)

        Il est plus simple d’exploiter une faille si elle est accessible depuis Internet, environnement vaste et hostile par définition, que s’il faut s’introduire dans un bureau pour obtenir un accès physique.

👉 Complexité d’attaque (Low, High)

        Si l’outil d’exploitation existe et qu’il ne nécessite pas de compétence particulière, l’exploitation de la faille est à la portée de n’importe qui (ou presque !)

👉 Besoin de privilèges (None, Low, High)

        Si l’attaque nécessite de disposer de privilèges administrateurs (High), elle sera plus compliquée à réaliser.

👉 La nécessité d’interactions (None, Required)

        Est-ce que l’attaque dépend d’une réaction d’un utilisateur ? Typiquement, dans le cas d’une authentification à deux facteurs où l’utilisateur doit valider une connexion sur son téléphone, la vulnérabilité est plus complexe à exploiter.

👉 Le périmètre (Changed, Unchanged)

        Ce critère indique la possibilité grâce à l’exploitation d’une faille d’obtenir des privilèges sur un périmètre plus important que celui initialement visé, par exemple en attaquant un système d’exploitation ou de supervision, qui a accès à un ensemble d’applications.

L’impact (ou la Gravité) :

👉 La confidentialité (None, Low, High) : est-ce que l’exploitation permet d’accéder en lecture à des données ?

👉 L’intégrité (None, Low, High) : est-ce que l’exploitation permet d’endommager ou de corrompre le système attaqué ?

👉 La disponibilité (None, Low, High) : est-ce que l’exploitation entraîne une indisponibilité du système ou du service attaqué ?

 

Prenons l’exemple de la CVE-2021-44228 connue sous le nom de Log4Shell et décortiquons-la :

Analyse d'un vecteur CVSS et de ses composants

On se rend alors compte que :

👉 L’attaque est simple à effectuer

👉 Elle s’exécute à distance

👉 Elle ne nécessite ni interaction d’utilisateur, ni privilèges

👉 Les impacts sur la confidentialité, l’intégrité et l’accessibilité sont importants

 

On en déduit alors que son score CVSS est très élevé, et c’est le cas… cette CVE possède un score de 10/10 !

On peut alors s’amuser à imaginer que si l’attaque nécessitait un accès physique ou bien s’il était nécessaire de disposer de privilèges, le score serait bien plus faible…

 

Mais un score CVSS élevé est-ce forcément une catastrophe ?
Non, pas forcément…

L’importance d’évaluer la contribution métier

Le score CVSS est une analyse technique : il prend en compte la facilité d’exploitation et l’impact sur la confidentialité, l’intégrité ou la disponibilité d’une machine (endpoint ou serveur).

En l’occurrence si la contribution métier de la machine est faible, c’est-à-dire qu’elle ne présente pas d’information confidentielle, ou n’est pas essentielle à la poursuite de l’activité de l’entreprise (ex : un écran digital d’affichage des actualités du comité d’entreprise), une CVE ayant un score CVSS de 10 n’est finalement pas si prioritaire.

 

Une priorité à donner en fonction de la position sur la chaîne d’attaque

La ressource impactée par une vulnérabilité se retrouve sur un chemin d’attaque, et ce en fonction du point de départ de l’attaquant. Sa visibilité depuis un ou plusieurs environnements hostiles, le niveau de turn-over dans les équipes amenées à utiliser cette ressource (que ce soit un poste de travail ou un serveur), sa proximité avec un poste d’administration du système d’information, sa position ou pas dans une zone “sacrifiable”, une DMZ par exemple, la distance “réseau” qui la sépare du “bien valeur”, des données sensibles convoitées par l’attaquant, les données de renseignement sur la menace (ou CTI Cyber Threat Intelligence), les techniques, tactiques et procédures adoptées par les attaquants ciblant l’organisation… sont autant de facteurs à prendre en compte, bien au-delà du seul score CVSS.

Chaîne de cubes représentant une chaîne d'attaque.

Représentation d’une chaîne d’attaque

Le CVSS, une analyse technique transparente et pertinente mais partielle

Pour conclure, nous avons pu voir ce qu’est une CVE et comprendre comment un score CVSS lui est attribué. Bien que ce calcul de base soit très utilisé pour hiérarchiser les différentes CVE, il ne faut pas oublier qu’il reste un indicateur de la criticité maximale théorique de la vulnérabilité, sans prise en compte du contexte, des aspects métier, du renseignement sur la menace…

Cette analyse est donc partielle, et il est intéressant de prendre du recul et d’analyser non pas juste une faille mais les différents périmètres et environnements dans lesquels elle se trouve.