Meltdown e Spectre i nemici del 2018
Informatica

Meltdown e Spectre i nemici del 2018

Il 2018 è iniziato da pochi giorni e già abbiamo avuto il primo terremoto nel settore dell’informatica. Meltodown e spectre i nomi di queste minacce: analizziamole!

Il 2018 è iniziato da pochi giorni e già abbiamo avuto il primo terremoto nel settore dell’informatica. Alcuni ricercatori di varie università internazionali coordinate dal gruppo Project Zero di Google hanno trovato delle vulnerabilità nei processori, le unità di elaborazione dei nostri devices. Meltdown e Spectre sono i nomi di queste falle che si trovano in alcune funzionalità dei processori; sono problemi di tipo hardware, difficili da trovare e da sistemare. Sono coinvolti i processori prodotti da Intel, Amd e dell’architettura ARM quindi si spazia dai pc desktop e portatili a tutti i dispositivi mobile, come smartphone e tablet, toccando anche i dispositivi per IoT.

 

Per comprendere bene dove si evidenziano le problematiche occorre introdurre brevemente alcuni concetti sulla programmazione e sulla struttura dei moderni processori.

Programmazione - I programmi sono costituiti da un insieme ordinato di righe di codice che poi vengono eseguiti, generalmente, in maniera sequenziale dal processore.
Secondo l’infomatica teorica un qualsiasi programma si può esprimere attraverso cicli e diramazioni. I cicli sono parti di programma che vengono eseguite diverse volte in base all’esigenza, le diramazioni sono parti di codice che vengono eseguiti in mutua esclusione in base a delle condizioni all’imbocco dei “bivi”:
if(condizione)
then (istruzioni)
else (istruzioni)

Inoltre, di nostro interesse, esistono delle istruzioni che premettono di interfacciarsi con il Sistema Operativo per fargli compiere azioni che riguardano gli input/output o le risorse “esterne” al programma (per es. la “lettura” di un tasto premuto, la stampa a video di una finestra, l’apertura di un file ecc.)

Il processore - Il processore è comunemente definito come l’unità di elaborazione delle istruzioni; in realtà è un sistema estremamente complesso, ingegnerizzato e ottimizzato. In esso sono presenti innumerevoli accorgimenti per migliorare le prestazioni e l’efficienza, anche se talvolta possono creare problemi. Le vulnerabilità si trovano negli accorgimenti riguardanti il “settore” sicurezza e l’ottimizzazione.

La sicurezza vista dal processore - Il processore, per ragioni di sicurezza, ha due modalità di esecuzione dei programmi -User e Super- che richiamano la sua visione della memoria (memoria di esecuzione dei programmi cache L1,L2,L3 e RAM).  Infatti, per il processore la memoria, da un punto di vista logico, è divisa in due: una parte riservata all’utente, la seconda al sistema operativo.

Nella prima parte sono mappati tutti i dati e le istruzioni riguradanti il programma dell’utente che è in esecuzione, nella seconda sono mappate le istruzioni del sistema operativo. Un programma User può usare i programmi System attraverso delle interfacce come accennato prima, ovviamente il primo programma non può accedere direttamente alla memoria riservata per i secondi. Infatti quando un programma di tipo User invoca un programma di tipo System il processore blocca l’esecuzione delle istruzioni del primo, passa da una modalità User ad una Super, esegue le istruzioni del secondo accedendo allo System Space ed infine ritorna in modalità User. Un giro complesso User->Super->User per non permettere a programmi malevoli l’accesso a risorse sensibili.

L'ottimizzazione - L’ottimizzazione è la parte più affascinante nella progettazione dei processori dove sono state usate le soluzioni più geniali. Le strategie di ottimizzazione che sono state coinvolte dalle vulnerabilità sono l’ Out-of-Order execution e la Preemption execution

Out-of-Order - L’Out-of-Order execution prevede l’esecuzione di alcune istruzioni di un programma fuori dall’ordine con cui sono state scritte dal programmatore. Se durante l’esecuzione di un programma si giunge ad una istruzione che richiede un dato presente in memoria fisica (hard disk), siccome per recuperarlo serve molto tempo, allora il processore esegue delle istruzioni che formano un blocco slegato dal resto del programma; una volta che l’informazione è giunta il processore ricomincia l’esecuzione secondo l’ordine sequenziale. Il tutto per risparmiare tempo.

Preemption execution - La Preemption execution, invece, prevede la scelta arbitraria di un percorso di fronte ai bivi citati prima. Se il processore si trova a un bivio in cui la condizione di controllo dipende da un dato presente nella memoria principale allora su base statistica sceglie di eseguire uno dei due percorsi possibili senza aspettare di effettuare il controllo. Una volta giunto il dato allora il processore esegue il controllo, se la sua previsione era giusta si continua normalmente, se era sbagliata ricomincia ad eseguire le istruzioni del pattern corretto.

Finalmente dopo questa lunga anteprima possiamo parlare di Meltdown e Spectre

 

Meltdown - Meltdown è una vulnerabilità che affligge per lo più i processori Intel dovuta all’Out-of-Order execution e che coinvolge le modalità di esecuzione del processore. Infatti, i ricercatori hanno scoperto che se tra quelle istruzioni eseguite fuori dall’ordine vi sono alcune da eseguire in modalità Super, il processore vi entra, ma al termine non ritorna in modalità User. Quindi, in queste condizioni il processore continuerà ad eseguire il programma User con i privilegi di Super dandogli l’accesso alla memoria System!  

Spectre - Spectre è, invece, la vulnerabilità che affligge i processori di tutti i produttori poichè si basano tutte sulla stessa architettura. Essa è dovuta alla Preemption execution. Infatti quando il processore, secondo questa tecnica di ottimizzazione, esegue il percorso sbagliato e carica dei dati in memoria (possono essere di qualsiasi tipo dalle password a il numero di pagine di un libro) questi ultimi vi rimangono anche dopo che si è tornati ad eseguire le istruzioni corrette finchè non vengono sovrascritte. Ciò permetterebbe ad un attaccante di leggere questi dati. 

Entrambe le vulnerabilità non sono facili da sfruttare, in quanto, soprattutto per Spectre, richiede la conoscenza all’attaccante degli indirizzi di memoria su cui vi sono i dati da estrapolare, cosa possibile solo grazie ad una conoscenza approfondita del pc della vittima Infatti, non si sono registrati attacchi attraverso queste falle. 

 

La soluzione - In ogni caso i fornitori dei sistemi operativi, in questi giorni, stanno rilasciando degli aggiornamenti per i propri utenti sviluppati durante il 2017 (già da questa estate nel mondo del cybersec si parlava di queste criticità). Purtroppo essendo vulnerabilità di tipo hardware queste non si possono sistemare alla radice, ma solo grazie a un espediente via software. Probabilmente la soluzione adottata dagli ingegneri sarà quella di disabilitare queste tecniche di ottimizzazione, infatti si parla di una riduzione delle prestazioni del 30%. Se tutto sembra concludersi nel migliore dei modi, ciò che mi preoccupa maggiormente è il mondo dell’IoT. Infatti tutti i dispositivi dedicati all’internet delle cose sono dotati di processori ad architettura ARM e, al contrario di pc, smartphone e tablet, non esistono sistemi operativi comuni e soprattutto non tutti hanno funzioni di aggiornamento automatico. Infatti, i produttori di questi dispositivi anche se rilasciassero degli aggiornamenti essi verebbero installati solo sui dispositivi in fase di sviluppo, mentre quelli già in servizio andrebbero spenti e aggiornati manualmente uno ad uno comportando malfunzionamenti e costi nei sistemi in cui operano.

Utiliziamo cookie tecnici e di terze parti per fornire i nostri servizi e gestire le statstiche. Utilizzando il sito (quindi navigando o scrollando), accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Utilizziamo cookie tecnici per fornire i nostri servizi. Tali cookie sono essenziali per la corretta visualizzazione del sito e non possono essere disabilitati. Maggiori informazioni sulla documentazione ufficiale.

Utilizziamo cookie di terze parti per gestire i commenti, appoggiandoci alla piattaforma Disqus. Maggiori informazioni nella documentazione ufficiale.

Utilizziamo cookie di terze parti e di profilazione per gestire le statistiche, appoggiandoci alla piattaforma Google Analytics. Maggiori informazioni nella documentazione ufficiale.

L'Utente puo' disabilitare i cookie modificando le impostazioni del browser, o utilizzando strumenti di gestione online come YourOnlineChioices. Si ricorda tuttavia che disabilitare del tutto o in parte i cookie potrebbe avere un impatto negativo sulla visualizzazione e sulla fruibilita' del sito.

Chiudi