CVSS (Common Vulnerability Scoring System)

CVSS est un framework public permettant d'évaluer la sévérité d'une vulnérabilité quelque soit l'éditeur de l'application.

Historique

Le score CVSS a été crée en 2005 par NIAC (US National Infrastructure Assurance Council), puis reprit par l'organisation international Forum for Incident Response and Security Teams (FIRST).

Historiquement, chaque éditeur avait sa propre méthode de scoring. Il était difficile pour les administrateurs de prioriser les corrections.

L'objectif initial était d'adresser ce problème pour uniformiser simplement l'évaluation des vulnérabilités en fonction de la sévérité et l'impact sur un environnement IT spécifique

Cette organisation regroupe diverses entreprises et individus qui aide à promouvoir et améliorer le framework

Version

CVSS2 en 2007 améliore la précédente version

CVSS3 en juin 2015 qui a apporté d'important changement pour refléter la réalité comme les privileges nécessaires à l'exploitation de la vulnérabilité.

CVSS 3.1 de juin 2019

Métrique de vulnérabilités

  • Base score
  • Temporal score (optionnel)
  • Environnemental score (optionnel)

Métrique de Base (Base metrics) (Obligatoire)

Définit les caractéristiques de la vulnérabilité, qui ne change pas au cours du temps, de l'environnement

Composé de 2 ensemble de métriques

Métriques d'exploitabilité:

  • Attack vector (AV)
  • Attack complexity (AC)
  • Privileges required (PR)
  • User interaction (UI)

Métriques d'impacts

  • Scope (S)
  • Confidentiality impact (C)
  • Integrity impact (I)
  • Availability impact (A)

Score_de_base

Ces métriques de base sont utilisés dans les activités de bugbounty pour qualifier une vulnérabilité.

Exemple de notation :

Base Score: 6.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N

Score_de_base

Details des metriques de base:

  • Attack Vector

AV

  • Attack Complexity

AC

  • User Interactivity

AV

  • Priviledge Required

PR

  • Scope

Scope

  • Confidentiality

Confidentiality

  • Integrity

Integrity

  • Availability

Availabilty

Métriques temporelles (Optionnelle)

Mesure l'aspect de la vulnérabilité suivant sa connaissance, sa fiabilité et les changements temporelles, comme la diffusion d'un patch officiel.

Pondère le score de base si un patch ou un contournement est possible, si elle est validé par l'éditeur.

  • Exploit code maturity
  • Remediation level
  • Report confidence

Métriques environnementales (Optionnelle)

Permet aux organisations de redéfinir le score de base (Base score)

  • Collateral damage potential
  • Target distribution
  • Confidentiality requirement
  • Integrity requirement
  • Availability requirement

Synthèse

Synthèse des métriques CVSS3.1

Fonctionnement du scoring

Un score CVSS est compris entre 0.0 et 10.0 ( 10.0 est le score le plus élevé)

Classement générique à destination de personnes non techniques,

0.0 = None

0.1-3.9 = Low

4.0-6.9 = Medium

7.0-8.9 = High

9.0 - 10.0 = Critical

CVSS vs. CVE

CVE (Common Vulnerabilities and Exposures) est un identifiant unique pour chaque vulnérabilité listée par le NIST NVD (National Vulnerability Database).

Format: CVE-[4 Digit Year]-[Sequential Identifier].

Exemple: Heartbleed --> CVE-2014-0160.

Cependant CVE utilise CVSS pour fournir une indication de sévérité pour chaque CVE

Calculette CVSS

Les services de calcul CVSS en ligne publique n'indique que les scores de base, et ne concerne que la sévérité de la vulnérabilité sans prendre en compte un environnement spécifique

(Ex: Immuniweb)

Pour prendre en compte les scores temporels et environnementals, il est nécessaire d'utiliser une calculette appropriée

Calculette cvss3.1 : https://www.first.org/cvss/calculator/3.1

(Service FIRST, CISCO et NIST)

Exemple

MySQL Stored SQL Injection (CVE-2013-0375)

Vulnérabilités:

Une vulnérabilité dans la base de donnée MySql permet à un attaquant distant authentifié d'injecter du code qui s'exécute avec des privilèges sur une base de donnée distante.

Le code distant peut lire ou modifié des données.

La vulnérabilité est dû à une validation insuffisante des données fournies par l'utilisateur lors de leur réplication sur des instances distantes MySQL.

Attaques:

L'attaquant a besoin d'un compte sur la cible ( base Mysql) avec les droits permettant de modifier les droits des utilisateurs (table names).

Le compte de replication doit être dans cette table L'attaque consiste a modifier l'identifiant de cette utilisateur ( de replication) avec des caractères entre guillemets et un fragment de code SQL malveillant (Injection SQL).

Cette requête SQL est répliqué et s'exécute sur les autres instances SQL avec des privileges élevés.

Le succès de l'attaque permet de faire des updates, insertion ou suppression sur toutes les instances Mysql accessible, y compris les bases accessibles en lecture seul.

Security-Database Scoring CVSS v3

Cvss vector : CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N

Overall CVSS Score 6.4

Descriptionvaleur
Base Score6.4
Environmental Score6.4
Temporal Score6.4
Attack VectorNetwork
Attack ComplexityLow
Privileges RequiredLow
User InteractionNone
ScopeChanged
Confidentiality ImpactLow
Integrity ImpactLow
Availability ImpactNone

MetricValueComments
Attack VectorNetworkThe attacker connects to the exploitable MySQL database over a network.
Attack ComplexityLowReplication must be enabled on the target database. Following the guidance in Section 2.1.2 of the Specification Document that was added in CVSS v3.1, we assume the system is configured in this way.
User InteractionNoneNo user interaction is required as replication happens automatically.
ScopeChangedThe vulnerable component is the MySQL server database that the attacker logs into to perform the attack. The impacted component is a remote MySQL server database (or databases) that this database replicates to.
ConfidentialityLowThe injected SQL runs with high privilege and can access information the attacker should not have access to. Although this runs on a remote database (or databases), it may be possible to exfiltrate the information as part of the SQL statement. The malicious SQL is injected into SQL statements that are part of the replication functionality, preventing the attacker from executing arbitrary SQL statements.
IntegrityLowThe injected SQL runs with high privilege and can modify information the attacker should not have access to. The malicious SQL is injected into SQL statements that are part of the replication functionality, preventing the attacker from executing arbitrary SQL statements.
AvailabilityNoneAlthough injected code is run with high privilege, the nature of this attack prevents arbitrary SQL statements being run that could affect the availability of MySQL databases.