Il Common Vulnerabilities and Exposures, o CVE (in italiano Vulnerabilità ed esposizioni comuni), è un dizionario di vulnerabilità e falle di sicurezza note pubblicamente. È mantenuto dalla MITRE Corporation ed è finanziato dalla National Cybersecurity FFRDC del Dipartimento della Sicurezza interna degli Stati Uniti.[1] Il CVE è utilizzato dal Security Content Automation Protocol (SCAP) e le vulnerabilità, identificate da un identificatore univoco, sono elencate nel sistema MITRE e nel National Vulnerability Database americano. L'identificazione univoca delle CVE permette una maggiore comunicazione nel mondo della sicurezza e aiuta nella valutazione della diffusione di servizi e strumenti.[2]
Gli identificatori CVE (CVE identifiers), chiamati anche "nomi CVE", "numeri CVE" o "ID CVE", identificano in modo univoco le vulnerabilità note al pubblico di sicurezza informatica. Questi identificatori possono avere lo status di voci ("entry") o di candidati ("candidates"), a seconda che siano stati accettati nell'elenco del CVE oppure siano sotto verifica per l'inclusione nella lista. L'assegnamento di un identificatore non garantisce che la vulnerabilità diventerà una voce ufficiale del CVE (ad esempio, un ID CVE può duplicare una voce già esistente).
Gli ID CVE possono essere assegnati in tre modi:
Dalla MITRE corporation, CNA primaria
Dalle CNA riguardo ai propri prodotti (ad esempio Apple, Oracle, Microsoft)
Da terze parti quali il CERT Coordination Center che può assegnare identificatori per prodotti non coperti dalle altre CNA
I numeri CVE possono non risultare nel National Vulnerability Database o nei database del MITRE per diverso tempo (da giorni ad anni) a causa di problemi relativi alla loro divulgazione (la loro catalogazione è stata approvata ma non sono stati resi pubblici). Informazioni su come ottenere ID CVE relativi a progetti Open Source sono disponibili sul sito di Red Hat.[4]
Le CVE riguardano software pubblicamente rilasciati, incluse le versioni beta, quelle in pre-ordine (se largamente diffuse) e i programmi commerciali. Tra le categorie a cui non vengono assegnate CVE troviamo sistemi custom non distribuiti e servizi addizionali (ad esempio provider di posta web-based con criticità quali il Cross-site scripting) a meno che il problema non sia presente in un software sottostante pubblicamente distribuito.
Campi dati CVE
Ci sono diversi campi all'interno di un database CVE anche se alcuni non sono più utilizzati. Tra i campi non più utilizzati troviamo indicazioni sulla fase in cui sono le CVE (voci o candidati), sui voti (per decidere se trasformare i candidati in voci i membri votavano), i commenti e le proposte.
Descrizione
È la descrizione di un numero CVE, un esempio tipico è:" ** RESERVED **"; ovvero, l'identificativo è stato riservato dal MITRE o da una CNA (di solito li richiedono a blocchi) e quindi resterà così marcato anche se non verrà assegnato veramente a una vulnerabilità per un po' di tempo.
Riferimenti
Presenta la lista di informazioni e URL associate alla CVE.
Data Creazione
È la data in cui è stata creata la voce. Per un ID CVE assegnato direttamente dal MITRE, questa è la data vera e propria in cui è stata creata la voce, per una CVE assegnata da una CNA invece la data di creazione si riferisce a quando il MITRE ha riservato la voce, non la CNA. Così, nel caso in cui una CNA richieda un certo numero di CVE in anticipo queste voci avranno tutte la stessa data di creazione, ovvero quando sono state assegnate. La CVE assegnata poi potrebbe non venire utilizzata anche per anni (possono essere utilizzate per vecchi problemi di sicurezza legati a software Open Source per i quali non sono ancora stati assegnati ID CVE).
Modifiche sintassi ID CVE
Fin dall'introduzione del CVE, nel 1999, la sintassi relativa agli ID CVE era del tipo CVE-YYYY-NNNN: supportava un massimo di 9999 identificatori unici all'anno. Negli ultimi anni la crescita del numero di vulnerabilità da registrare ha portato alla modifica di questa sintassi, entrata in vigore il 13 Gennaio 2015. [5]
La nuova formula prevede una lunghezza variabile e include:
Prefisso CVE - anno - cifre arbitrarie
La lunghezza del campo “cifre arbitrarie” è variabile ma deve contenere almeno quattro (4) caratteri, perciò la sintassi è retrocompatibile.
CVE SPLIT e MERGE
Il CVE tenta di assegnare una voce per ogni problema di sicurezza, ma a volte questo risulta impossibile a causa del numero troppo elevato che ne risulta (ad esempio solo per le vulnerabilità di tipo cross-site scripting trovate nelle applicazioni PHP ne andrebbero scritte dozzine). Per gestire questa situazione ci sono linee-guida per la divisione (splitting) e riunione (merging) dei problemi in distinti CVE ID. Quando alcune vulnerabilità vengono considerate unificabili, vengono divise per tipo (ad esempio buffer overflow/stack overflow), poi per versione del software che colpiscono e infine in base al soggetto che le riporta (se viene riportata da due soggetti diversi verrà fatto uno SPLIT e registrata con due CVE ID diversi). Ad esempio, se Alice segnala una vulnerabilità nella creazione di un file /tmp nelle versioni precedenti alla 1.2.3 del browser web ExampleSoft e, oltre a questa, vengono trovate altre vulnerabilità nella creazione di file /tmp, in molti casi questa viene considerata come due segnalazioni distinte (questo genererà due identificativi CVE separati, se Alice lavora per ExampleSoft e un team interno a ExampleSoft trova le altre vulnerabilità allora i due CVE possono essere unificati). Al contrario se, ad esempio, Bob trovasse 145 vulnerabilità XSS in ExamplePlugin per ExampleFramework indipendentemente dalle versioni colpite, esse potrebbero essere unificate in un'unica voce (MERGE)[6].
«CVE’s common identifiers enable data exchange between security products and provide a baseline index point for evaluating coverage of tools and services.»