Durante la prima settimana del 2018 il mondo IT è stato invaso dalla notizie della scoperta di due nuovi tipi di vulnerabilità chiamate Spectre e Meltdown, problematiche rilevate nelle CPU Intel, AMD (nel caso di Spectre) e in alcuni SoC ARM. Si tratta di uno dei peggiori casi di vulnerabilità software della storia del mercato High Tech, ma fortunatamente non tutti i sistemi ne sono colpiti.
Ad esempio i Soc ARM delle Raspberry Pi non sono vulnerabili a Spectre e Meltdown. In questo articolo andremo a spiegarne il motivo nel dettaglio.
Spectre e Meltdown
Spectre consente di bypassare i controlli software così da poter leggere i dati presenti nel sistema e in un determinato address space. Meltdown, invece, permette ai di leggere i dati presenti sull'operating system kernel address space che, di norma, dovrebbe essere completamente inaccessibile ai programmi dell'utente. Si tratta nel dettaglio di attacchi side-channel, ovvero azioni malevole basate su informazioni prelevate direttamente da implementazioni fisiche di sistemi crittografici, spesso tramite brute force o sfruttando debolezze presenti negli algoritmi.
Spectre e Meltdown si occupano di dedurre il contesto di una memory location, tale elemento è presente nella cache delle CPU che è uno dei target dell'attacco. Una volta ottenuti questi dati è possibile risalire alla posizione delle informazioni sensibili all'interno del sistema operativo.
Speculative execution
I due vulnerabilities exploit descritti sono possibili grazie a delle feature, caching e speculative execution che sono molto comuni sulle CPU moderne, mentre i SoC utilizzati dal progetto Raspberry Pi non ne sono interessati, ciò grazie all'assenza di speculative execution nei SoC ARM1176, Cortex-A7 e Cortex-A53 utilizzati per assemblare le board.
Come anticipato, le CPU più moderne possono sfruttare la speculative execution, ma a cosa serve? In informatica, si chiama esecuzione speculativa l'esecuzione di codice il cui risultato potrebbe non essere utilizzato. Questo tipo di esecuzione viene ritenuta un ottimo trade-off per ottenere un boost delle performance.
Branch Prediction
Ma per assicurare prestazioni ottimali il team del Raspberry Pi ha scelto di utilizzare SoC che sfruttano la predizione delle diramazioni (branch prediction). Questo avviene tramite una componente della CPU (Branch Prediction Unit) che cerca di prevedere l'esito di un'operazione su cui si basa l'accettazione di una istruzione di salto condizionato, evitando rallentamenti che possono essere molto evidenti in una architettura con pipeline.
Gli attacchi Spectre e Meltdown consentono dunque di sfruttare i dati della cache e delle esecuzioni speculative per avere accesso a dati sensibili. Tuttavia dato che le SoC ARM utilizzate da Respberry Pi non sfruttano la tecnica di esecuzione speculativa, questo elimina la base d'attacco rendendo di fatto il device immune da tali vulnerabilità.
Via Raspberry Pi