Vous êtes sur le site public du Cert-IST
La nouvelle version (3.0) du système d'évaluation des vulnérabilités CVSS

Date :07 Juillet 2015

Publication: Article

Avant propos

CVSS (Common Vulnerability Scoring System) est un système permettant de calculer une note évaluant la criticité d'une vulnérabilité, et de construire une chaine de caractères (un vecteur) présentant les caractéristiques de cette vulnérabilité, et les critères utilisés pour ce calcul.

La première version de CVSS a vu le jour en février 2005, et CVSS version 2.0 a été lancée officiellement en juin 2007.
La version 3.0 de CVSS est disponible depuis le 28 mai 2015.

Le Cert-IST évalue la dangerosité des vulnérabilités selon la métrique EISPP depuis 2003 et a mis en place en 2007 des passerelles entre les métriques EISPP et CVSS permettant d'inclure dans sa base de vulnérabilités la notation CVSS.

Nous avons déjà publié plusieurs articles sur ce système d’évaluation des vulnérabilités (en avril 2005 et juin 2005 sur CVSS v1.0, et en février 2008 sur CVSS v2.0) et le but de celui-ci n’est pas de faire une présentation complète de ce système, mais de présenter les évolutions de la version 3.0 par rapport à la version 2.0.

Caractéristiques générales

Les notes et vecteurs CVSS sont toujours le résultat de trois groupes de critères d'évaluation ("Base", "Temporal" et "Environnemental") ayant chacun leur note ainsi que leur vecteur :

  • Le groupe des critères de "Base" évalue l'impact maximum théorique de la vulnérabilité.
  • Le groupe des critères "Temporel" (Temporal) pondère le groupe "Base" en prenant en compte  l'évolution dans le temps de la menace liée à la vulnérabilité  (par exemple, l'existence d'un programme d’exploitation ou d'un correctif).
  • Le groupe des critères "Environnemental" (Environmental) pondère le groupe "Temporel" en prenant en compte les caractéristiques de la vulnérabilité pour un Système d'Information donné.

Chaque critère peut prendre certaines valeurs prédéfinies permettant de calculer la note numérique associée à la criticité de la vulnérabilité.

Il n’y a pas de changement sur ces caractéristiques générales.

Nota : Le Cert-IST évalue uniquement le groupe de base et le groupe temporel. Le groupe environnemental ne peut être évalué lors de l'émission d'avis, car il est lié à une organisation propre (un système d'information donné). Cet article s’intéresse donc uniquement aux deux premiers groupes de CVSS : le groupe de Base et le groupe Temporel.

Evolution des critères du groupe de base

Attack Vector

Le critère "Access Vector" (AV) a été rebaptisé "Attack vector". Il mesure toujours « l’éloignement » de l’attaquant par rapport au composant vulnérable, avec l’idée que plus l’attaquant peut exploiter la vulnérabilité en étant éloigné, plus la vulnérabilité est critique.
Pour ce critère, CVSS v3.0 reprend les mêmes valeurs possibles que la v2.0 (Network, Adjacent Network,Local), mais en ajoute une quatrième : Physical(P).
Elle permet de distinguer les attaques locales nécessitant un accès au système local de celles nécessitant un accès physique.

Attack Complexity & User Interaction

Le critère "Access Complexity" (AC) a été séparé en deux critères :

  • "Attack Complexity" (AC) mesure la complexité en fonction des conditions (matérielles, logicielles, réseau) qui doivent être remplies pour pouvoir exploiter la vulnérabilité.
    Les valeurs possibles de ce critère sont Low (L) ou High (H).
  •  "User Interaction" (UI) prend en compte la nécessité d’une action d’un utilisateur, autre que l’attaquant, pour pouvoir exploiter la vulnérabilité.

Les valeurs possibles de ce critère sont None (N) ou Required (R).

Authentication

Le critère "Authentication" (A) a été remplacé par "Privilèges Required" (PR). L’idée est de prendre en compte le niveau d’authentification (aucun, faible, élevé) nécessaire pour exploiter la vulnérabilité, plutôt que le nombre d’authentification nécessaire.
Les valeurs possibles de ce critère sont None (N), Low (L), High (H).

Scope

Un nouveau critère a été ajouté afin de prendre en compte les cas où la vulnérabilité d’un composant logiciel a un impact sur des ressources situées au delà du périmètre de ce composant.
Ce critère est le « Scope » (S) et ses valeurs possibles sont Changed (C) et Unchanged (U).
Des cas typiques de changement de scope sont :

  • Le cas d’une vulnérabilité d’un système virtualisé, invité, qui a un impact sur le système hôte.
  • Le cas d’une vulnérabilité d’un logiciel s’exécutant dans un environnement restreint dont l’impact est en dehors de cet environnement.
  • Le cas d’un Cross-site scripting permettant d’utiliser un système vulnérable comme rebond pour attaquer un autre système.

Ce critère permet d’attribuer un score plus élevé à une vulnérabilité permettant de sortir du scope du composant vulnérable (intuitivement il parait normal qu’une action malveillante sur un système hôte soit plus critique que la même action sur un système invité).

Impacts

Les critères relatifs à l'impact des vulnérabilités, "Confidentiality Impact" (C), "Integrity Impact" (I) et "Availability Impact" (A) ont été légèrement modifiés.
Les valeurs possibles de ces trois critères, qui étaient None (N), Partial (P), Complete (C) ont été remplacées par None (N), Low (L), High (H).
L’idée est d’estimer le degré de gravité d’une attaque plutôt que le "pourcentage“ impacté du système.
Par exemple, une vulnérabilité permettant d’obtenir des données d’identification, pouvait avoir un critère de confidentialité à "Partial" avec CVSS v2, alors qu’il sera plutôt à "High" avec CVSS v3.

Evolution des critères du groupe de temporel

Ce groupe de critère a été très peu modifié. Le critère "Exploitability" a été renommé "Exploit code maturity" afin de mieux représenter ce que ce critère mesure.

L’influence de ce groupe de critères sur le calcul du score temporel a cependant été réduite dans la version 3 de CVSS : les coefficients associés à ces critères pour le calcul du score temporel sont plus proches de 1, assurant une valeur de ce score plus proche du score de base.
Concrètement cela revient à donner moins d’influence à l’existence de programme d’exploitation fonctionnels, ou à l’absence de correctifs.

Niveau de risque

Certains utilisateurs avaient créé une correspondance entre le score de base de CVSS v2.0 et des niveaux de risque.

CVSS v3.0 fournit le tableau de correspondance suivant entre un score numérique et un niveau de risque :

Score

Risque

0.0

None / Nul

0.1 – 3.9

Low / Faible

4.0 – 6.9

Medium / Moyen

7.0 – 8.9

High / Elevé

9.0 – 10.0

Critical / Critique

 

 

Ce tableau peut s’appliquer au trois score CVSS v3.0 (Base, Temporal, Environmental).

L’utilisation de ces niveaux de risque est optionnelle et leur présence n’est pas obligatoire lors de la publication d’un score CVSS.
Ce niveau est affiché dans le résultat présenté par le calculateur CVSS officiel du FIRST.

Evaluation du risque lié à plusieurs vulnérabilités

CVSS est conçu pour évaluer des vulnérabilités indépendamment les unes des autres. Un score ou un vecteur CVSS est associé à une vulnérabilité unique.
Il peut être cependant intéressant d’évaluer le risque lié à une attaque enchainant l’exploitation de plusieurs vulnérabilités.

Prenons l’exemple, du cas de deux vulnérabilités A et B.

La vulnérabilité A permet à un utilisateur authentifié d’obtenir illégalement les privilèges d’administration du système sur lequel il est identifié.
Le vecteur et le score CVSS de A sont les suivants :
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - 7.8 (High)


La vulnérabilité B permet à un attaquant distant non authentifié d’exécuter du code arbitraire sur un système vulnérable, avec des privilèges limités (privilège de l’utilisateur connecté).
Le vecteur et le score CVSS de B sont les suivants :
AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L – 6.3 (Medium)

Contrairement  aux versions précédentes de CVSS la version 3.0 permet d’associer une note et un vecteur, à l’attaque qui enchainerait l’exploitation de la vulnérabilité B (exécution de code sans authentification), puis l’exploitation de la vulnérabilité A (élévation de privilège).
Cette attaque permettrait à un attaquant distant, non authentifie de prendre le contrôle du système vulnérable :
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H – 8.8 (High)

CVSS v3.0 autorise donc l’évaluation d’attaques basées sur l’exploitation de plusieurs vulnérabilités (Vulnerability Chaining).
Cette nouvelle version ne fournit pas une métrique formelle, mais plutôt des conseils  pour analyser  le risque lié à de telles attaques.

Conclusion sur les apports de CVSS v3.0

Deux nouveaux critères d’évaluations permettent de prendre en compte des aspects significatifs qui n’avaient aucun impact dans les versions précédentes de CVSS :

  • Le critère Scope permet de nuancer l’évaluation entre par exemple une prise de contrôle d’un système invité, et une prise de contrôle du système hôte.
  • Le critère "User Interaction" permet de nuancer l’évaluation d’une vulnérabilité nécessitant l’action d’une victime.

L’ajout de la valeur "Physical" au critère "Access Vector" permet de distinguer les cas d’attaque nécessitant un accès local de celle nécessitant un accès physique.

L’authentification est évaluée en termes de niveau de privilèges et non plus en termes de nombre d’authentification.

Les impacts sont évalués en termes de risque et non plus de pourcentage de système impacté.

Des niveaux de risques sont définis, et une correspondance est établie entre les scores CVSS et ces niveaux.

L’évaluation de risques liés à une attaque enchainant l’exploitation de plusieurs vulnérabilités est autorisée.

L’influence des critères "temporal" a été réduite.

Documentation

Guide utilisateur de CVSS v3.0 :
https://www.first.org/cvss/user-guide

Spécifications de CVSS v3.0 :
https://www.first.org/cvss/specification-document

Calculatrice CVSS v3 :
 https://www.first.org/cvss/calculator/3.0