Si sente parlare spesso di attacchi informatici che sfruttano vulnerabilità di sicurezza conosciute oppure problemi zero-day che sono noti soltanto ai criminali informatici. In questo secondo caso gli aggressori possono causare gravi danni in quanto hanno la possibilità di sferrare attacchi mirati contro soggetti specifici, ad esempio aziende di elevato profilo o noti professionisti, prima ancora che sia disponibile una patch correttiva.
Gli attacchi side-channel (letteralmente “attacchi laterali“) sono un tipo di attacco informatico che sfrutta le informazioni sul comportamento di un sistema raccolte durante il suo funzionamento. Anziché lanciare un attacco diretto, frontale, la logica dei side-channel attack mira a forzare il sistema con una violazione che inizia “di lato”, attraverso un canale secondario.
Spesso si usano canali di comunicazione o informazioni inserite nel sistema dagli sviluppatori o dai produttori in modo non intenzionale: premendo “i tasti” giusti, è possibile guadagnare l’accesso a risorse che non dovrebbero essere in alcun modo esposte.
Gli attacchi side-channel sui processori possono essere utilizzati per estrarre informazioni sensibili, come ad esempio le chiavi crittografiche o i dati di autenticazione degli utenti. Un esempio di aggressione di questo tipo si basa sull’analisi del tempo di esecuzione di determinate operazioni. È possibile fare leva su questo tipo di attacco per identificare le informazioni riservate da utilizzare poi nelle fasi successive dell’aggressione.
Alcuni esempi di attacchi side-channel
Meltdown e Spectre sono universalmente considerati come i capostipiti degli attacchi side-channel: è stato il lavoro svolto inizialmente con queste due tipologie di aggressione a spingere i ricercatori, in tempi successivi, ad approfondire e a individuare nuove lacune nei processori, passate inosservate in precedenza.
In mancanza delle patch correttive, un aggressore che interagisce con i meccanismi di branch prediction della CPU o misura il tempo di esecuzione delle istruzioni, può recuperare dati personali e informazioni riservate, comprese password e chiavi di decodifica.
Meltdown sfrutta una caratteristica del processore che consente ai programmi di accedere alla memoria del kernel del sistema operativo, che è di solito protetta e isolata dal resto del sistema. Utilizzando una tecnica di side-channel chiamata “out-of-order execution“, Meltdown forza il processore ad eseguire le istruzioni del programma in modo non sequenziale, aprendo all’accesso ad aree di memoria che avrebbero dovuto restare off-limits.
Spectre, invece, sfrutta una vulnerabilità nei meccanismi di predizione dei salti (branch prediction) seguiti dal processore durante l’esecuzione delle varie istruzioni. La tecnica branch target injection viene usata per “convincere” il processore ad eseguire le istruzioni del programma in modo differente rispetto a quanto previsto: in questo modo l’aggressore può accedere al contenuto della memoria usata dal sistema e dai programmi in esecuzione.
Con il tempo sono state scoperte ulteriori vulnerabilità nei processori come ZombieLoad, PortSmash che si basa sull’analisi del tempo di esecuzione delle istruzioni, PowerHammer, un attacco basato sull’analisi del consumo di energia, CacheOut, Retbleed che mina alla base le difese implementate contro Spectre.
Ad aprile 2023 un nuovo tipo di attacco side-channel ha avuto successo nei confronti delle CPU Intel: questa volta viene preso di mira il registro EFLAGS (abbiamo parlato dei registri nell’articolo su come funziona un processore). Anche in questo caso viene sfruttata una falla nella transient execution ovvero nella tecnica utilizzata dai processori per ottimizzare le prestazioni e che prevede l’esecuzione in parallelo di più istruzioni allo stesso tempo. Questo consente di accelerare l’esecuzione dei programmi, ma può anche creare delle vulnerabilità di sicurezza, in quanto l’esecuzione di un’istruzione può influenzare in modo imprevedibile lo stato interno del processore.
Troppa attenzione intorno agli attacchi side-channel?
Quando a inizio 2018 fu diffusa la notizia della scoperta delle vulnerabilità alla base di Meltdown e Spectre sembrò aprirsi improvvisamente una voragine in termini di sicurezza. In realtà, a ben vedere, gli attacchi side-channel a livello di CPU hanno portato a un numero di attacchi estremamente ridotto: ciò è dovuto al fatto che si tratta di attacchi difficili da eseguire perché richiedono una conoscenza molto approfondita dell’architettura e del funzionamento del processore, nonché una serie di strumenti e tecniche sofisticate per raccogliere e analizzare i dati necessari.
In generale, inoltre, gli attacchi side-channel richiedono anche l’accesso fisico o privilegiato al sistema attaccato, il che significa che non sono sempre applicabili in tutte le situazioni. Ad esempio, un attacco side-channel potrebbe richiedere l’installazione di un software malevolo sul sistema bersaglio, l’accesso fisico alla macchina o la manipolazione del firmware della CPU.
Infine, gli attacchi side-channel sono spesso “rumorosi”, ovvero generano un grande volume di dati che devono essere analizzati e interpretati per ottenere informazioni utili. Per questo motivo, a parte la valenza teorica e il grande valore delle scoperte condotte dai ricercatori, gli aggressori preferiscono agli attacchi side-channel altre forme di attacco, molto più efficaci e “sicure”: una tra tutte, lo sfruttamento di vulnerabilità di sicurezza del sistema operativo, del browser Web e delle applicazioni installate, in special modo quelle che scambiano dati in rete.
Le vulnerabilità alla base degli attacchi side-channel nelle CPU sono anche non solo difficili da sfruttare ma anche complesse da risolvere per diverse ragioni. In primo luogo, queste vulnerabilità spesso sono il risultato di compromessi di design fatti a fini prestazionali: la correzione delle vulnerabilità o comunque l’applicazione dei cosiddetti workaround può comportare un calo significativo delle performance del processore.
Per secondo, eventuali soluzioni per risolvere queste vulnerabilità spesso richiedono cambiamenti a livello di architettura del processore o di software con un processo lungo e costoso per le aziende produttrici di CPU. Da ultimo, i problemi di tipo side-channel possono coinvolgere non solo il processore ma anche altri componenti del sistema, come la memoria, il controller di memoria e i dispositivi di I/O: ciò rende più difficile individuare e risolvere queste vulnerabilità in modo efficace.
Le patch a risoluzione delle vulnerabilità che favoriscono attacchi side-channel possono non essere indispensabili: la loro effettiva applicazione dipende molto anche dal contesto in cui il sistema viene utilizzato. Sui PC e sulle workstation degli utenti finali i rischi sono minimi mentre una maggiore attenzione dovrebbe essere sempre riposta in ambito server e a livello di data center.
Ad oggi non è emersa una modalità chiara ed efficace per sfruttare lacune side-channel in modalità remota, ad esempio da browser Web, come avviene invece per altre tipologie di attacchi. O meglio, nel 2018 dicevamo che Spectre avrebbe potuto essere sfruttata da browser Web tramite JavaScript. All’epoca era certamente vero e quella novità suonò come un campanello d’allarme.
Tuttavia, i browser moderni hanno implementato mitigazioni per le vulnerabilità di tipo side-channel, come l’uso dell’isolamento del processo, che impedisce a un singolo processo di accedere a informazioni riservate in altre parti del sistema: è ovviamente sempre essenziale mantenere aggiornato il browser in uso per proteggere il sistema da eventuali attacchi.