La modellizzazione delle minacce si può definire come una tecnica strutturata e sistematica per identificare minacce e vulnerabilità di un certo prodotto o applicazione e per aiutare in fase di Security-by-Design a prendere decisioni ingegneristiche sulla priorità delle protezioni da realizzare durante il ciclo di sviluppo sicuro (V-Cycle model). Considerando il classico modello del ciclo di sviluppo softwar declinato orizzontalmente, questa tecnica di modellizzazione si colloca all’interno della fase di design dove, come è evidente nella figura, abbiamo due concetti molto importanti: analisi minacce e superficie d’attacco. Per implementare sia il modello delle minacce che l’analisi della superficie d’attacco, viene in aiuto la tecnica nota come “STRIDE” (acronimo di Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privileges) che congiuntamente alla tecnica nota come “DREAD” (acronimo di Damage, Reproducibility, Exploitability, Affected Users, Discoverability) consente di effettuare in maniera veloce un calcolo dei rischi di cyber sicurezza associati a una certa applicazione o sistema/prodotto.
STRIDE, cos’è
STRIDE è una tecnica originariamente sviluppata da Microsoft, che consente di categorizzare le minacce potenziali derivanti da eventuali attacchi cyber.
Come detto in precedenza, STRIDE è un acronimo che ha il seguente significato:
Dove a ogni categoria corrisponde la seguente descrizione:
- Spoofing: impersonare un’altra persona o processo
- Tampering: effettuare modifiche non autorizzate
- Repudiation: negare azioni fatte
- Information Disclosure: esporre dati in modo non autorizzato
- Denial of Service: rendere indisponibile un processo/servizio
- Elevation of privileges: incrementare il livello di accesso non autorizzato
Come è evidente da questa breve descrizione, le categorie STRIDE corrispondono ai seguenti obiettivi di sicurezza:
- Spoofing -> Autenticazione
- Tampering -> Integrità dei dati
- Repudiation -> Non Repoudiation/Logging
- Information Disclosure -> Confidenzialità dei dati
- Denial of Service -> Disponibilità
- Elevation of privileges -> Autorizzazione.
Facciamo alcuni esempi di minacce alle categorie STRIDE:
- Spoofing: mascherare il proprio indirizzo IP con quello di una macchina “vittima”
- Tampering: modifica/cancellazione del file di Log
- Repudiation: lasciare il file di Log esposto ad attacchi
- Information Disclosure: rispondere a richieste Web con contenuti di un file protetto
- Denial of Service: esaurire le risorse di un sistema con un numero elevatissimo di richieste di connessione
- Elevation of Privilege: portare attacchi di tipo Command Injection o attacchi sulla memoria dei sistemi.
Il primo esercizio che dovrà essere fatto è dunque quello di pensare al proprio sistema/prodotto individuando le minacce che ricadono nella classificazione precedente.
Una volta completato questo esercizio, si passa alla fase di valutazione dell’importanza di ogni minaccia individuata, attraverso la tecnica nota come DREAD.
DREAD, cos’è
In origine DREAD ha il seguente significato:
Dove per ogni categoria corrisponde la seguente descrizione:
- Damage -> quale impatto può avere un eventuale exploit?
- Reproducibility -> con quale facilità posso ricreare l’attacco?
- Exploitability -> quale livello di competenza è richiesto per lanciare l’attacco?
- Affected Users – > quanti utenti saranno potenzialmente impattati?
- Discoverability -> con quale facilità è possibile trovare la vulnerabilità?
Di solito si cerca di rispondere a queste domande con un punteggio di 5 valori e quindi calcolando la media totale come (D+R+E+A+D) /5, dove ogni lettera precedente avrà un numero associato “N”.
Calcolare il rischio
A questo punto possiamo calcolare il rischio complessivo, raggruppando i valori DREAD in sottocategorie.
Ad esempio, indicherò un valore di rischio nel modo seguente
- Low -> se la media DREAD è nel range 5-7
- Medium -> se la media DREAD è nel range 8-11
- High -> se la media DREAD è nel range 12-15
Esempio di applicazioni di STRIDE in IoT e automotive
Nei settori come automotive, IoT in generale, ICS (Industrial Control Systems), ma anche railway e aerospace e ancora più in generale “Embedded products”, diventa sempre più importante eseguire un’analisi veloce dei rischi di cyber sicurezza utilizzando una tecnica semplice ma allo stesso tempo completa.
STRIDE è richiamato nel nuovo standard di cybersecurity per automotive (ISO 21434, Road vehicles — cybersecurity engineering), come un possibile framework da utilizzare in fase di analisi minacce.
Come esempio di applicazione di questa metodologia a un ambito di oggetti connessi, consideriamo proprio il settore automotive.
In questo settore le categorie STRIDE assumono questo significato:
Spoofing: ad esempio un attaccante realizza una stazione radio base finta (rogue) e finge di essere una cella radio legittima. Oppure realizza un Access Point WiFi finto, utilizzando in maniera illegittima il SSID di un AP originale che funziona di norma sulla HU (Head Unit) del veicolo tentando di fare sì che la TCU (Telematics Unit) si possa associare ad essa.
Tampering: come esempio si può pensare a una intercettazione SMS in cui un attaccante è nel mezzo della connessione, cattura e modifica il messaggio e lo inoltra alla TCU durante uno scambio OTA (Over The Air) tra veicolo e sistemi esterni di backend (cloud).
Repudiation: un esempio di attacco è quello di una TCU che non autentica i dati dal back-end e un utente malintenzionato lo sfrutta falsificando dati che pretendono di provenire dal back-end su OTA.
Information Disclosure: la divulgazione di informazioni può verificarsi quando la comunicazione sensibile tra host o dati inattivi non è crittografata e può essere vista da un individuo o processo non autorizzato.
Denial of Service: l’attaccante cerca di modificare la ARP cache di una TCU durante un attacco di tipo “Evil Twin” contro la HU, in modo che la TCU non possa più connettersi alla HU, fino a un restart delle unità.
Elevation of privileges: esempi di escalation di privilegi in un contesto automotive sarebbero quelli di un servizio su un HU che viene attaccato, permettendo all’attaccante di entrare nella shell di un utente normale, sfruttando poi una vulnerabilità locale di un servizio in esecuzione come root per aumentarne i privilegi.
Conclusioni
STRIDE è una metodologia di modellizzazione minacce semplice, ma completa, applicabile in svariati contesti, e di cui Microsoft ha messo anche a disposizione un tool che si può usare per avere in forma grafica queste tabelle di categorizzazione.
Viene richiamato in diversi standard, abbiamo citato la ISO 21434 del settore automotive, ma ad esempio anche IEC 62443-4-1 contiene un riferimento a STRIDE, per il settore ICS (Industrial Control Systems). Anche best practice come OWASP citano STRIDE come tecnica di analisi minacce.
DREAD invece aiuta nel rating delle minacce/vulnerabilità evidenziate con STRIDE e permette il calcolo finale del rischio. DREAD, sviluppato all’interno di Microsoft, è stato poi progressivamente abbandonato, ma di recente è stato proposta una versione 2.0 da parte di alcuni ricercatori, in cui si sono voluti meglio separare i concetti di impatto e probabilità.
In particolare, per l’impatto, si considerano i seguenti fattori:
- Confidentiality: a quali dati può avere accesso l’attaccante?
- Integrity: quali dati può modificare /cancellare l’attaccante?
- Availability: a quali dati/processi/servizi l’attaccante può causare una indisponibilità?
- Exposure: un certo attacco può causare altri attacchi ulteriori?
- Affected Users: quali e quanti utenti sono impattati da un attacco?
E per la probabilità, i seguenti altri valori:
- Skill: Quanto bravo deve essere l’attaccante per sfruttare la vulnerabilità?
- Complexity: quali condizioni sono necessarie per l’attacco?
- Discoverability: quanto facile è scoprire a vulnerabilità?
- Reproducibility: quanto facile è riprodurre l’attacco?
A valle dei calcoli di cui sopra, si procederà di nuovo alla valutazione del rischio finale.
Il rischio così stimato andrà infine sottoposto al “trattamento” in cui una opportuna strategia di mitigazione verrà concordata sulla base ad esempio dei seguenti casi:
- Non fare mitigazioni: di fatto si accetta il rischio
- Mitigare il rischio: si decidono opportune contromisure
- Trasferire il rischio: ad esempio attraverso una cyber insurance
- Accettare il rischio: se la valutazione d’impatto lo consente