Per completare il security assessment del veicolo dopo la fase iniziale di TARA, occorre eseguire un vulnerability assessment e un penetration test in ambito automotive che, insieme, consentono di strutturare la fase cosiddetta VAPT.
Indice degli argomenti
Penetration test in ambito automotive: lo scenario
La sempre maggiore attenzione agli aspetti della cyber security anche in ambito automotive è dovuta sicuramente alla massiccia introduzione delle funzionalità di sicurezza informatica nei componenti dei veicoli, ma anche al lavoro di molti ricercatori (a partire dal famoso hack del 2015) che hanno dimostrato e dimostrano tuttora continuamente che se un progetto non nasce con la security by design, sarà molto probabile che all’interno ci siano debolezze e vulnerabilità di vario tipo.
Una robusta analisi di sicurezza diventa oggi necessaria per far fronte all’aumento della superficie d’attacco nei veicoli che sta progressivamente esponendo la rete veicolare ad attacchi di hacking.
Esistono molti modi oggi in cui un veicolo si connette al mondo esterno e questi si suddividono in funzionalità di tipo V2V (vehicle-to-vehicle), funzionalità V2X (vehicle-to-everything), diagnostica remota fornita dagli OEM e altro ancora.
Esiste poi tutto un nuovo mercato di dispositivi after market che accedono alla rete CAN interna del veicolo. Questi dispositivi includono unità di test e cosiddetti dongles ovvero adattatori per connettere il proprio PC alla rete del veicolo, che permettono ad un utente esperto di interagire con i parametri interni del veicolo tramite Bluetooth, Wi-Fi o connettività cellulare.
Le metodologie di penetration test in ambito automotive
È evidente, dunque, come una procedura di penetration testing consente di individuare e identificare tutte le possibili vulnerabilità che potrebbero mettere a rischio la sicurezza del veicolo.
Esistono tre possibili approcci al penetration testing:
- modalità “Black Box”: in questa modalità, i tester non hanno informazioni sul funzionamento interno dei prodotti in prova (nessun documento o informazione forniti dal cliente). Il tester deve simulare un attaccante esterno. Questa modalità richiede molto tempo rispetto alle altre due;
- modalità “White Box”: in questa modalità, i tester hanno piena conoscenza della funzione interna del prodotto in esame. Il penetration tester agisce come uno sviluppatore del prodotto sotto test;
- modalità “Grey Box”: questa modalità è un mix delle due prime modalità (Black-Box e White-Box). Sfrutta i vantaggi di ciascuna, ma i tempi ed i costi dell’attività si riducono consentendo di ottenere risultati migliori. La modalità Gray-Box è il tipo di test che è di solito il più comune.
Come nel penetration testing in uso ormai da anni nel mondo Web o ICT tradizionale, anche per il settore automotive è consigliabile seguire la procedura di ethical hacking che si svolge con i seguenti passi:
- raccolta informazioni del target;
- vulnerability analyses;
- analisi del codice;
- tentativi di exploitation;
- eventuale rimozione delle tracce di attacco.
Il penetration test in ambito automotive: attacchi e attaccanti
La sicurezza di un prodotto risiede fondamentalmente nell’investimento che l’attaccante dovrà sostenere per riuscire nell’intento di hackerare il sistema:
- il tempo necessario a farlo;
- il grado di competenza richiesto;
- i tool disponibili oppure da costruire personalmente;
- l’opportunità nel portare a termine l’attacco.
Queste sono tutte le variabili in gioco che determinano o meno il successo di un attaccante rispetto alle difese messe in atto.
Il primo passo dunque è la modellizzazione dell’attacco.
Una volta riusciti ad identificare un modello corretto di attacco (con le variabili elencate prima), e dell’attaccante (profilo, motivazioni), si può passare alla fase successiva:
- studio della architettura dei dispositivi;
- tracciamento della superficie d’attacco;
- analisi delle potenziali minacce;
- individuazione delle potenziali vulnerabilità;
fino al vero e proprio penetration testing che deve dimostrare quanto le difese del veicolo e/o dei singoli componenti (le ECU del veicolo, cioè le numerose centraline presenti al suo interno) siano forti ed in grado di resistere ad attacchi determinati.
Le metodologie di penetration test in ambito automotive
La fattibilità tecnica dell’intrusione nella rete dei veicoli è stata ampiamente dimostrata attraverso articoli, pubblicazioni, conferenze, utilizzando tutti i possibili punti di accesso ai veicoli: porta OBDII, connessione cellulare ad Internet, WiFi, Bluetooth, USB sono solo le principali interfacce utilizzate durante l’attività di hacking.
Con l’arrivo poi della prossima generazione di reti 5G la superficie d’attacco non farà che aumentare, introducendo nuove minacce e nuovi vettori di attacco.
Il problema dell’accesso remoto e/o fisico alla rete veicolare può essere affrontato mediante Penetration testing anche sui singoli componenti, ad es. unità telematiche o unità di controllo (Head Units), HU.
L’obiettivo di questi test è misurare la capacità dell’unità di resistere ai tentativi di assumere il controllo degli assets del veicolo in modi non specificati dal costruttore, ad esempio attacchi diretti al HW.
Esempi tipici sono:
- dump della memoria e reverse engineering del codice;
- re-flashing della ECU che ignora i controlli di sicurezza (sfruttando i pin dei controller JTAG);
- attacchi sui protocolli di comunicazione Bluetooth / WiFi / 3G, CAN;
- accesso alle informazioni riservate del proprietario del veicolo e al tracciamento della posizione del veicolo.
Ogni interfaccia può subire un tentativo d’attacco anche le interfacce fisiche disponibili all’interno della ECU stessa: UART (seriale), SPI (bus di collegamento del microcontrollore), I2C (altro bus interno di collegamento) e ovviamente la più importante, almeno storicamente, la JTAG (interfaccia usata per debugging, ma che permette poi di prendere il controllo dell’unità).
Questi sono attacchi fisici, ovvero implicano la disponibilità della ECU da testare e almeno un accesso interno diretto o indiretto: un attaccante può ad esempio recuperare una centralina (ECU) del veicolo e spendere tempo e risorse nell’analizzarla in dettaglio, oppure incominciare una connessione sfruttando la porta di diagnostica OBDII per interagire con il mondo interno del veicolo (di solito tramite rete CAN).
Il Controller Area Network, noto anche come CAN-bus, è uno standard seriale (principalmente usato in ambiente Automotive), introdotto negli Anni 80 dalla Robert Bosch GmbH, per collegare diverse unità di controllo elettronico (ECU).
Il CAN è stato espressamente progettato per funzionare senza problemi anche in ambienti fortemente disturbati dalla presenza di onde elettromagnetiche ed è costituito da due fili di trasmissione della tensione (CAN H e CAN L) con una resistenza da 120Ohm collegata ad entrambe le estremità della rete.
Tutte le ECU a loro volta collegate su questa rete potranno inviare e ricevere messaggi e lo fanno sempre in modalità Broadcast, cioè tutti parlano con tutti.
Per gestire, quindi, conflitti di trasmissione (due ECU che trasmettono nello stesso istante) si instaura un arbitraggio: chi sta trasmettendo in un certo istante ritarda la trasmissione di tutti gli altri e chi poi interviene per primo sarà la ECU con un campo (chiamato identificativo) nella sua trama di trasmissione che sia di valore inferiore a quello delle altre ECU.
Sebbene inizialmente applicata in ambito automotive, come bus per autoveicoli, attualmente è usata in molte applicazioni industriali dove è richiesto un alto livello di immunità ai disturbi. Il bit rate può raggiungere 1 Mbit/s mentre velocità inferiori sono usate per raggiungere distanze maggiori (ad es. 125 kbit/s per 500 m). Il protocollo di comunicazione del CAN è standardizzato come ISO 11898-1. Questo standard descrive principalmente lo strato (layer) di scambio dati (data link layer), composto dallo strato sottostante (sublayer) “logico” (Logical Link Control, LLC) e dallo strato del Media Access Control, (MAC) e da alcuni aspetti dello strato “fisico” (physical layer)
Più recentemente si assiste all’introduzione delle rete CAN FD (CAN con velocità dati flessibile) che è un’estensione del protocollo CAN bus originale. Sviluppato nel 2011 e rilasciato nel 2012 CAN FD è stato originariamente creato in risposta alle richieste delle case automobilistiche per ottenere dati “in tempo reale” più accurati. Mentre il CAN originale aveva infatti solo 8Byte di dati per trama ora CAN FD ne ha 64, consentendo così una velocità di trasmissione molto più elevata.
Riguardo la rete CAN, si trovano online sicuramente ormai tantissime informazioni utili sui componenti interni del veicolo e delle stesse ECU che aiutano nel portare a termine l’impresa: cercare di raggiungere quel grado di conoscenza (hacking) di tutto il veicolo per poi elevare il livello d’attacco alla connessione da remoto.
Recenti ricerche mostrano la fattibilità dei cosiddetti Side Channels analyses (ovvero la possibilità di catturare informazioni importanti tramite l’osservazione di un comportamento elettrico/elettronico che apparentemente non avrebbe nulla a che fare con il vero intento dell’attaccante) oppure i Fault Injection attacks che sono oggi l’ultima frontiera per un attaccante determinato: riuscire cioè a dimostrare che tramite l’inserimento di un piccolissima ma veloce variazione di un segnale che comanda il funzionamento dei dispositivi stessi, si è in grado di provocare un glitch ovvero un cambiamento che permette durante l’esecuzione delle istruzioni del codice del processore interno al dispositivo, di bypassare una certa istruzione al momento giusto.
Tramite queste tecniche si riesce anche ad attaccare gli algoritmi crittografici interni. È dunque sempre una questione come dicevamo di tempi, competenze, tools, da cui l’importanza di eseguire nel modo migliore possibile un security assessment completo.
I tool per il penetration test in auto
Un esempio di tools disponibili facilmente in rete può essere uno delle tante toolchain per la ricerca sulla sicurezza dell’hardware tramite power-analyses. Rappresenta in sintesi una combinazione di software open source e hardware, per essere in grado di eseguire un attacco side-channel e può essere utile anche per monitorare le conseguenze di un attacco sul proprio prodotto, il tutto con costi abbastanza contenuti.
Una volta raggiunto un sufficiente grado di conoscenza del proprio target (veicolo), l’attaccante determinato si muoverà ad un livello superiore di competenze e conoscenze, cercando di fare le stesse azioni fisiche di prima, ma questa volta da remoto.
Ci saranno allora nuovi attacchi da cui difendersi, sia di tipo short range (Bluetooth, Wi-Fi) che long range (cellulari). Il penetration testing in questi casi prevede tools dedicati per potersi connettere al veicolo e dimostrare o meno la fattibilità di questi attacchi: antenne Bluetooth e Wi-Fi, SDR (Software Defined Radios), sono ormai nell’arsenale di qualunque pentester che voglia fare questa attività per scopi etici.
Una SDR, lo ricordiamo, è un tipo di ricetrasmettitore RF, in pratica una piattaforma di sviluppo open-source in grado di ricevere e trasmettere un segnale radio generico in un certo range di frequenze (es da 1 MHz a 8 GHz); il costo è di solito abbastanza contenuto, e tramite poi una connessione USB è controllabile con software di terze parti; può essere utile per interagire con i segnali cellulari del veicolo.
Anche il mondo software si sta evolvendo offrendo sempre più numerosi tools di comandi per la rete CAN ad esempio per i sistemi basati su Linux, come CANTools e via dicendo oltre ad altri tool invece di tipo professionale.
Questi strumenti sono costituiti da vari moduli diversi che possono essere collegati tra loro e utilizzati dai ricercatori di sicurezza e tester di sicurezza automobilistici per l’analisi gray-box di qualsiasi sistema basato sul CAN bus. È possibile utilizzare questi software per rilevamento ECU, test MiTM (man-in-the-middle), brute forcing, semplice scansione, sniffing di pacchetti CAN.
Altri tool sono invece dedicati ad analizzare il protocollo di diagnostica UDS (standard ISO 14229) che spesso rappresenta un vettore di attacco molto utilizzato, ad esempio per eseguire azioni di:
- scan delle ECUs che supportano diagnostica;
- scan dei servizi;
- reset di una ECU;
- forzare una sessione di una ECU.
Altri infine sono utili per eseguire il cosiddetto Fuzzing, ovvero test di robustezza sul protocollo CAN con il seguente intento:
- inviare messaggi casuali CAN;
- catturare e rinviare messaggi CAN modificati.
Rispetto al penetration testing dei sistemi IT tradizionali (infrastruttura ICT o anche mondo Web), i tool a disposizione sono sicuramente molto più limitati ed occorrono competenze non solo software ma anche hardware per portare a termine un attacco con successo.
Conclusioni
L’attività di penetration test in ambito automotive è ancora abbastanza confinata a pochi esperti ed appassionati, ma questo non deve fare abbassare la guardia.
In futuro assisteremo ad un incremento dei tentativi di attacco ai veicoli connessi, quindi anche le competenze dei professionisti che devono svolgere penetration testing devono crescere costantemente ed incessantemente.
Lo standard ISO 21434 di prossima pubblicazione che vedrà la luce come “Cybersecurity Engineering” dei veicoli, lista infatti il Penetration testing tra i passi da eseguire durante i test di integrazione dei sistemi automotive.