Ogni rilievo di un report di penetration test riporta una riga come questa:
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
e accanto un numero. Nelle riunioni si cita il numero. È la riga che va letta, perché dice perché il numero è quello che è.
CVSS, il Common Vulnerability Scoring System, è pubblicato da FIRST. La versione 4.0 è stata rilasciata il 1º novembre 2023.
Che cosa misura il punteggio
CVSS misura la gravità di una vulnerabilità: quanto è facile sfruttarla e quanto danno causa lo sfruttamento. Non misura il rischio, che dipende anche da quanto vale per te il sistema interessato e dal fatto che qualcuno lo stia attaccando. Lo dice la specifica stessa, e la versione 4.0 ha reso visibile la distinzione nei nomi dei punteggi:
| Nome | Costruito da | Risponde a |
|---|---|---|
| CVSS-B | Metriche di base | Quanto è grave la vulnerabilità in sé? |
| CVSS-BT | Base e minaccia | Quanto è grave, visto ciò che gli attaccanti fanno oggi? |
| CVSS-BE | Base e ambiente | Quanto è grave nel nostro ambiente? |
| CVSS-BTE | Tutte e tre | Quanto è grave qui e ora? |
Il report di un penetration test di norma riporta CVSS-B, a volte CVSS-BE quando il tester conosce bene l’ambiente. I database di vulnerabilità pubblicano CVSS-B. Se dopo un punteggio non ci sono lettere, considera che sia B.
Le metriche di base
Le prime cinque descrivono come si svolge l’attacco.
| Metrica | Valori | Domanda |
|---|---|---|
| Attack Vector (AV) | Network, Adjacent, Local, Physical | Da dove può raggiungerla l’attaccante? |
| Attack Complexity (AC) | Low, High | L’attaccante deve superare una protezione già presente? |
| Attack Requirements (AT) | None, Present | L’attacco dipende da condizioni del deployment, come una race condition o una posizione nella rete? |
| Privileges Required (PR) | None, Low, High | Quale accesso deve avere l’attaccante già in partenza? |
| User Interaction (UI) | None, Passive, Active | Qualcun altro deve fare qualcosa? |
Attack Requirements è una novità della versione 4.0: separa le condizioni dell’ambiente dalle protezioni da superare. User Interaction ora ha tre valori: Passive indica un’azione ordinaria come aprire una pagina, Active indica che la vittima deve fare qualcosa di insolito.
Le sei successive descrivono il danno al sistema vulnerabile e ai sistemi successivi raggiungibili attraverso di esso:
| Metrica | Valori |
|---|---|
| Riservatezza: VC, SC | High, Low, None |
| Integrità: VI, SI | High, Low, None |
| Disponibilità: VA, SA | High, Low, None |
La versione 3.1 aveva una metrica chiamata Scope per l’effetto su altri sistemi. Era fonte di disaccordo tra chi assegnava i punteggi ed è stata sostituita dalle tre metriche esplicite per i sistemi successivi.
Leggiamo l’esempio
AV:N/AC:L/AT:N/PR:N/UI:N: raggiungibile via rete, nessuna protezione da superare, nessuna condizione particolare, nessun account necessario, nessuno deve cliccare nulla. VC:H/VI:H/VA:H: perdita totale di riservatezza, integrità e disponibilità del sistema vulnerabile. SC:N/SI:N/SA:N: nessun effetto oltre quel sistema.
Questo vettore vale 9.3, gravità critica. Se la stessa vulnerabilità desse anche il pieno controllo dei sistemi che stanno dietro, le ultime tre metriche sarebbero High e il punteggio sarebbe 10.0.
Basta cambiare una lettera e il significato cambia. PR:L al posto di PR:N dice che serve un account: per un servizio pubblico con registrazione libera cambia poco, per un sistema interno cambia molto. Il punteggio cambia molto meno del significato. Ecco perché vale la pena leggere il vettore.
La scala
| Livello | Punteggio |
|---|---|
| Nessuna | 0.0 |
| Bassa | 0.1 – 3.9 |
| Media | 4.0 – 6.9 |
| Alta | 7.0 – 8.9 |
| Critica | 9.0 – 10.0 |
Minaccia e ambiente
Exploit Maturity (E) è l’unica metrica di minaccia: Attacked, Proof-of-Concept o Unreported. Una vulnerabilità sfruttata in attacchi reali mantiene il suo punteggio; una per cui non è noto alcun exploit ottiene un punteggio più basso.
Le metriche ambientali ti permettono di ridefinire le metriche di base per il tuo deployment e di indicare quanto contano riservatezza, integrità e disponibilità per il sistema interessato. Una vulnerabilità critica in un sistema che non contiene nulla di valore ed è raggiungibile solo da una rete di test non è critica per te, e il punteggio ambientale può mostrarlo.
La versione 4.0 aggiunge anche le metriche supplementari, come Safety, Automatable e Recovery. Descrivono ulteriormente la vulnerabilità e non modificano il punteggio.
Che cosa il punteggio non ti dice
- Se sarà attaccata. Per le vulnerabilità note, EPSS stima la probabilità di sfruttamento. Gravità e probabilità insieme dicono più di ciascuna delle due da sola.
- Quanto vale il sistema. Un rilievo di gravità media nel sistema di pagamento può contare più di uno di gravità critica nella copia di staging di una pagina promozionale.
- Che cosa produce la catena. Tre rilievi di gravità media che, combinati, portano alla presa di controllo di un account sono riportati come tre rilievi di gravità media e come un unico percorso di attacco. Leggi entrambe le cose.
Come usarlo
Ordina prima per punteggio, poi correggi con ciò che sai: il valore dell’asset, l’esposizione a internet, lo sfruttamento noto, le catene descritte nel report. Quando la priorità a cui arrivi è diversa dal punteggio, annota il perché. Un buon report fa lo stesso: riporta il punteggio, il vettore e, dove il tester non è d’accordo con il numero, il motivo.
Come valutiamo e gestiamo i rilievi è descritto nella metodologia.