Catégorie :

Vulnérabilité

Ce que nous allons voir dans cet article :


La CVE

Une CVE c’est quoi ?

Une CVE (Common Vulnerabilities and Exposures) est une liste de toutes les vulnérabilités publiques connues liées à la cybersécurité. Cette liste est tenue par l’organisation publique américaine MITRE.

Toutes les CVE ont la même forme : CVE-AAAA-NNNN (où les A représentent l’année de publication et les N sont l’identifiant de la vulnérabilité).
Au moment de l’écriture de cet article (27 juin 2020), 138 016 CVE ont été répertoriées sur le site de MITRE.

Tout au long de cet article on va se baser sur une CVE spécifique pour que vous puissiez vous aussi expérimenter en même temps. La CVE est la suivante : CVE-2013-4454
Pour rechercher les détails d’une CVE il suffit de chercher directement sa référence sur Google ou bien passer par un site qui répertorie la liste des CVE existantes (par exemple depuis le site de MITRE on peut rechercher la vulnérabilité. Cependant on ne nous donne pas beaucoup d’informations. En effet, on ne voit pas son score par exemple. Il y a tout de même un lien qui nous redirige vers le site de NIST qui lui propose des informations plus complètes).

Exemple d’une recherche google pour la CVE-2013-4454 :

Détails de la CVE pour la version 2 du CVSS :


Le CVSS

Le CVSS c’est quoi ?

Le CVSS est un système qui permet d’attribuer un score à une vulnérabilité.
Le score est une métrique allant de 0 à 10. Un score de 0 étant une vulnérabilité “inofensive” tandis qu’un score de 10 correspond à une vulnérabilité critique.

Attention le score d’une CVE est basée sur le score base que l’on verra par la suite. On précise bien que toute cette partie se repose sur la version 2 du CVSS. Il existe une version améliorée appelée CVSS v3 mais on ne s’attardera pas dessus puisque son fonctionnement est le même. Un CVSS n’est basé que sur une seule vulnérabilité. Le score ne pend pas en compte l’intervention d’autres vulnérabilités par rapport à celle étudiée (du moins pour la v2).

L’évaluation est basée sur 3 grands groupes de métriques.
Chaque groupe est lui même composé de sous-métriques.
Et chaque sous métrique peut prendre différentes valeurs en fonction de la criticité.

Rassurez-vous, ça paraît compliqué au premier abord mais c’est super simple.

1) Métrique de base

Elle représente les caractéristiques fondamentales d’une vulnérabilité, elles sont constantes dans le temps et invariables à l’environnement utilisé.

Ces trois premières sous-métriquent représentent la métrique d’exploitation.

Une fois que toutes les valeurs (on en parlera plus loin dans l’article) ont été remplies il nous suffit d’appliquer les fonctions suivantes pour calculer le score pour la métrique de base de la version 2 :

2) Métrique temporelle

Cette métrique représente les caractéristiques d’une vulnérabilité qui change au cours du temps mais pas en fonction de l’environnement.

Voici la fonction qui permet de calculer le score pour la métrique temporelle de la version 2 :

3) Métrique environnementale

Cette métrique représente les caractéristiques d’une vulnérabilité qui sont pertinentes dans un environnement particulier mais peuvent changer dans d’autres.

On retrouve le même type de fonction pour calculer le score de la métrique environnementale :


Pour chaque vulnérabilité on peut représenter leurs valeurs de façon textuelle et compressée. On appelle ça un vecteur de vulnérabilité et voici à quoi il ressemble si on prend pour exemple la CVE-2013-4454 :

Vector : (AV:N/AC:L/Au:N/C:P/I:P/A:N)

Voici comment il faut le lire :

Et ainsi de suite. On voit bien ici que le vecteur ne contient que les informations nécessaires pour calculer le score base.
C’est sur celui-ci qu’on va se baser pour calculer le CVSS.

Vous pouvez retrouver toute la documentation avec des informations plus détaillées ici.

Calcul du CVSS

Il est possible d’utiliser un outil mis à disposition par la NIST pour calculer de façon automatique le score d’une CVE.

Mais parce qu’on veut s’amuser, on va tout calculer à la main et on pourra vérifier à la fin avec leur outil.

Si on reprend le vecteur de vulnérabilité donné pour la CVE-2013-4454 ainsi que les fonctions précédentes pour calculer le CVSS v2 et qu’on remplacer chaque terme par les valeurs présentes dans le vecteur voici ce qu’on obtient :

Rappel de la valeur du vecteur : (AV:N/AC:L/Au:N/C:P/I:P/A:N)
De la fonction à utiliser :

Les valeurs peuvent être trouvées directement sur Wikipedia ou sur le site du NIST

Exploitability = 20 x 1.0 x 0.71 x 0.704 = 9.9968
Impact = 10.41 x (1 - (1 - 0.275) x (1 - 0.275) x (1 - 0)) = 4.93824375
f(Impact) = 1.176 puisque Impact n’est pas = 0
BaseScore = roundTo1Decimal(((0.6 x 4.93824375) + (0.4 x 9,9968) - 1.5) x 1.176) = 
BaseScore = (2.96294625 + 3.99872 - 1.5 ) x 1.176 = 6.42291951

On arrondi à 6.4 car on ne veut qu’une décimale après la virgule et on obtient notre score base. On peut maintenant vérifier avec l’outil du NIST :

Notre calcul était correct. Nous venons donc de calculer notre premier CVSS !

On est d’accord que recalculer le CVSS d’une CVE déjà existante ne sert à rien en soit. Mais si jamais un jour il vous arrive de trouver une vulnérabilité qui n’est pas encore listée vous pourrez avoir une idée de la criticité de celle-ci. Il est également toujours intéressant de connaître la façon dont les CVE sont référencées, classées et comment elles sont notées.

Voici comment est définie la sévérité d’une vulnérabilité en fonction de son Score Base :

Avec ce tableau on peut donc définir que la CVE-2013-4454 (avec un score de 6.4) a une sévérité moyenne lorsqu’on utilise la version 2 de CVSS.

Si on regarde maintenant le score de la version 3 la différence est impressionnante et on passe d’une vulnérabilité moyennement dangereuse à une vulnérabilité critique :

Comment cela est-il possible ?

Différences entre version 2 et version 3

La version 3 implémente de nouvelles sous-métriques. Certaines ont été supprimées, d’autres modifiées, etc …
De ce fait, ces modifications reflètent mieux la réalité et donc le score de base est plus précis sur la v3.

Par exemple concernant le score de base, pour la sous-métrique Attack Vector (AV) une nouvelle valeur est ajoutée : Physical. Celle-ci correspond à une attaque physique qui n’était pas présente dans la v2.
De même la sous-métrique User Interaction (UI) a été ajoutée. Elle prend en compte le fait que l’utilisateur doit avoir une interaction pour que la compromission soit effective (par exemple en cliquant sur un lien).

On peut comparer les deux versions en regardant ici et ici.

Pour finir, vous pouvez également retrouver ici la liste des potentielles futures améliorations pour la version 4 de CVSS.

Sources :

https://fr.wikipedia.org/wiki/Common_Vulnerability_Scoring_System

https://fr.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures

https://cve.mitre.org/

https://fr.wikipedia.org/wiki/Confidentialit%C3%A9

https://fr.wikipedia.org/wiki/Int%C3%A9grit%C3%A9_(cryptographie)

https://fr.wikipedia.org/wiki/Disponibilit%C3%A9

https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator

https://nvd.nist.gov/vuln-metrics/cvss

https://www.first.org/cvss/

https://www.acunetix.com/blog/articles/whats-new-in-cvss-version-3/