Meltdown e Spectre, cosa sono e come sfruttano la vulnerabilità dell‘esecuzione speculativa nelle CPU ARM e Intel

Recentemente i ricercatori hanno scoperto due problemi di sicurezza noti come Meltdown e Spectre che sfruttano vulnerabilità proprie di tutti i moderni processori (CPU ARM e Intel, ma si parla anche di processori prodotti nell’ultima ventina di anni!) e che, di conseguenza, interessano quasi tutti i dispositivi informatici e i sistemi operativi; per intenderci sono interessati tutti i sistemi Mac e i dispositivi iOS, così come tutti i sistemi Microsoft e Android.
Si tratta di un bel grattacapo per il quale tutte le grandi aziende (Microsoft, Intel, Apple ecc) stanno rilasciando soluzioni di protezione e aggiornamenti di sicurezza, ma che sembra non avere una soluzione definitiva… proprio per questo riteniamo sia giusto approfondire l’argomento e capire di cosa si parli e come difendersi.

Come funziona e cos’è l’esecuzione speculativa

Meltdown e Spectre sfruttano una caratteristica delle prestazioni delle CPU denominata “esecuzione speculativa”. L’esecuzione speculativa aumenta la velocità agendo su più istruzioni contemporaneamente, anche in ordine diverso rispetto a quello di immissione nella CPU. Per migliorare le prestazioni, la CPU prevede quale percorso di una diramazione ha maggiori probabilità di essere seguito e continua l’esecuzione in “modalità speculativa” lungo tale percorso, anche prima che la diramazione venga completata. Se la previsione si rivela errata, l’esecuzione speculativa viene annullata in un modo progettato per essere invisibile al software.

Come viene sfruttata l’esecuzione speculativa da Meltdown e Spectre?

Le tecniche di exploit di Meltdown e Spectre utilizzano in modo improprio l’esecuzione speculativa per accedere alla memoria privilegiata, inclusa quella del kernel, da un processo utente con meno privilegi (come ad esempio un’app dannosa in esecuzione su un dispositivo).
In particolare, Meltdown identifica una tecnica di exploit che permette il caricamento fraudolento cache di dati, nota come CVE-2017-5754 o “rogue data cache load”. In pratica, Meltdown può consentire a un processo utente di leggere la memoria del kernel e sembra essere la tecnica più facilmente sfruttabile.
Spectre, invece, identifica ben due diverse tecniche di exploit, una sfrutta il superamento del controllo dei limiti (tecnica nota come CVE-2017-5753 o “bounds check bypass” e l’altra l’inserimento nella diramazione di destinazione (nota come CVE-2017-5715 o “branch target injection”). Entrambe le tecniche sono in grado di rendere gli elementi nella memoria del kernel disponibili per i processi utente, sfruttando un ritardo nel tempo necessario alla CPU per controllare la validità di una chiamata di accesso alla memoria.
Queste tecniche (sebbene sembra siano estremamente difficili da sfruttare persino da un’app in esecuzione in locale su un Mac o un dispositivo iOS) potrebbero consentire exploit in JavaScript all’interno di un browser web.

Come possiamo difenderci da Meltdown e Spectre?

Come già detto, tutte le grandi società sono impegnate a sviluppare soluzioni di protezione e stanno rilasciando aggiornamenti di sicurezza, di conseguenza il primo consiglio è proprio quello di tenere aggiornati i propri dispositivi e i software e le applicazioni su di essi installate. Il secondo, dato che in genere lo sfruttamento di queste vulnerabilità richiede il caricamento di un’app dannosa, è quello di scaricare applicazioni e software solo da fonti affidabili.