immagine-preview

Gen 4, 2018

Meltdown e Spectre, due vulnerabilità nel cuore delle CPU

Svelate due minacce molto concrete alla sicurezza di PC, server, smartphone e ogni altro dispositivo analogo

Immaginate di aver costruito un castello poderoso per proteggere i vostri segreti dagli sguardi dei vostri avversari: mura alte e merlate, un profondo fossato, avete pure le sentinelle di ronda che pattugliano 24 ore al giorno il perimetro. Poi, improvvisamente, scoprite di aver costruito il vostro castello su una botola: e quella botola conduce direttamente dall’esterno al cuore del castello, senza chiave e senza che ci sia modo di impedire a chiunque di entrare senza controllo a dare un’occhiata a cosa custodite nella vostra fortezza. Questo è quanto hanno scoperto i ricercatori che hanno svelato le due vulnerabilità Meltdown e Spectre.

 

Cosa sono Meltdown e Spectre

Le due vulnerabilità svelate in queste ore, con qualche giorno di anticipo rispetto alla data stabilita dalle parti a causa di un crescente fermento di indiscrezioni e parziali rivelazioni, riguardano l’hardware: il modo stesso in cui sono progettate e costruite le CPU, i processori che fanno funzionare i dispositivi elettronici come PC desktop, laptop e pure smartphone e tablet, fa sì che nel loro stesso cuore si annidi un potenziale rischio enorme per la sicurezza.

 

Tramite alcuni escamotage che inducono il computer a concedere accesso ad aree di memoria arbitrarie, si può scavare nelle informazioni gestite dal software e prelevare informazioni di ogni tipo: password, informazioni archiviate nei documenti, qualsiasi cosa che sia residente in memoria è potenzialmente accessibile. In entrambi i casi, sia per Meltdown che per Spectre, quello che può succedere nella realtà è che un’app (magari modificata ad hoc) abbia accesso a informazioni che dovrebbero restare ad appannaggio di altro software, il tutto senza lasciare tracce: e la cosa avviene a un livello così profondo che arginare o almeno mitigare gli effetti non è una questione banale.

 

La differenza tra Meltdown e Spectre è il campo di applicazione: la prima, Meltdown, al momento è una vulnerabilità che riguarda quasi tutte le CPU prodotte da Intel dal 1995 in avanti. Per Meltdown esistono delle patch che sono in via di rilascio in queste ore e che agiscono a livello di sistema operativo (Apple ha silenziosamente già agito a inizio dicembre con una prima tornata di patch), ma esistono pareri fin qui discordi sul loro impatto: dovrebbero essere efficaci, ma soprattutto nei sistemi virtualizzati potrebbero creare un rallentamento nelle operazioni che penalizzerebbe le prestazioni.

Spectre colpisce di fatto tutti i processori in circolazione nell’elettronica di consumo: AMD, ARM e Intel sono tutti interessati, in modo leggermente diverso l’uno dall’altro ma con lo stesso risultato. Per Spectre l’elaborazione di una patch definitiva presenta qualche difficoltà in più, e la risoluzione di questa faccenda richiederà tempi più lunghi.

Cosa fare per mettersi al sicuro

Nel caso di Meltdown è molto importante scaricare e installare al più presto le patch che i diversi vendor metteranno a disposizione. Microsoft lo sta facendo in queste ore, Apple altrettanto anche se lo ha già fatto in parte, Google ha già rilasciato una patch per Android ma è importante che i vari OEM la adottino rapidamente per i propri smartphone, così come devono farlo i cloud vendor. Spectre al momento non potrà ricevere lo stesso trattamento: più avanti spiegheremo perché, ma potrebbe anche darsi che alcune architetture rimangano molto a lungo e magari per sempre non-sicure, a meno di non adottare soluzioni software che potrebbero però danneggiare le prestazioni.

 

Non c’è un responsabile unico di questa situazione: anche se Linus Torvalds, creatore di Linux, al solito usa toni molto duri scagliandosi contro Intel, in questo caso il problema è più generale. Fa bene Torvalds a ribadire come tutto ciò non vada sottovalutato: il problema è che per anni, parliamo di almeno tre decadi ma anche di più, si è insegnato nelle università e si è lavorato nei centri di ricerca&sviluppo per mettere in piedi delle architetture che garantissero un certo tipo di prestazioni basandosi su alcuni assunti relativi alla gestione della memoria.

Oggi scopriamo che quegli assunti altro non erano che delle ipotesi, alla luce dei fatti confutate. Ciò avrà delle conseguenze, immediate e a lungo termine: dovremo probabilmente rinunciare a un po’ di prestazioni per un po’, in attesa di capire come aggirare queste vulnerabilità, e anche rivedere l’approccio generale alla progettazione di hardware e software. Una trattazione approfondita di queste tematiche, con molti dettagli tecnici, l’ha fatta Google sul blog del programma Project Zero.

Come funziona Meltdown

Esiste, o a questo punto bisogna dire esisteva, un concetto di base nell’architettura dei PC: i registri di indirizzamento del kernel sono inaccessibili all’utente. Detta così suona incomprensibile, ma diciamo che si potrebbe sintetizzare la questione in questo modo: esiste una sorta di isolamento tra ciò che fa la CPU e ciò che fa il sistema operativo che lavora sulla macchina in cui è installata quella specifica CPU, e su questo isolamento si basa (basava?) gran parte delle misure di sicurezza che servono ad esempio a tenere al sicuro le password da occhi indiscreti.

Meltdown ha dimostrato che questo isolamento è aggirabile: tramite l’esecuzione di istruzioni out-of-order, ovvero la richiesta alla CPU di svolgere un compito imprevisto per far fronte a una richiesta improvvisa e urgente di un dato elaborato, si può forzare le protezioni e avere accesso a specifiche aree di memoria che custodiscono un dato ritenuto interessante. La portata di Meltdown è tale che di fatto, senza dover conoscere lo specifico software in esecuzione, l’attacco potrebbe consegnare una copia completa della memoria a chiunque sfrutti la vulnerabilità: sintetizzando, si approfitta del modo in cui è stata progettata una CPU per violare l’intero sistema.

 

Va fatta la seguente precisazione: tranne alcuni specifici processori, i test svolti dai ricercatori hanno sin qui dimostrato che le CPU Intel prodotte dal 2011 a oggi sono tutte vulnerabili a Meltdown. Basandosi sul fatto che l’architettura di alcune parti del processore è rimasta concettualmente invariata dal 1995, si potrebbe tornare indietro fino ad allora: è improbabile che una CPU del 1995 sia ancora in circolazione, ma è pur sempre possibile. Non è possibile neppure escludere che lo stesso problema riguardi anche l’hardware prodotto da altri marchi: AMD e ARM, tanto per fare due nomi, sfruttano tecnologie simili ma al momento mancano conferme in tal senso.

 

Non ci sono, per ora, informazioni riguardanti attacchi perpetrati a mezzo Meltdown: se pure ci fossero stati, non avrebbero lasciato tracce. Dunque è prioritario che tutti installino le patch distribuite in queste ore per mettere al sicuro PC personali, server e pure le architetture cloud.

La differenza di Spectre

Il funzionamento di Spectre è simile ma non identico a quello appena descritto: anche in questo caso si approfitta di alcuni concetti alla base della progettazione delle CPU e dei sistemi operativi moderni, come l’elaborazione predittiva o speculativa e la separazione dei processi a livello di OS, per convincere l’hardware a eseguire operazioni che non dovrebbe e concedere accesso ad aree di memoria che dovrebbero risultare protette o comunque inaccessibili.

 

Spectre è a tutti gli effetti un side-channel attack: sfrutta gli effetti collaterali di alcune operazioni per ottenere informazioni, ed è particolarmente pericoloso per gli smartphone vista l’inclinazione di questi ultimi a eseguire codice ottenuto da fonte remota. Anche in questo caso l’attacco si insinua in un assunto che a posteriori possiamo ritenere errato: poiché in caso di elaborazione predittiva la CPU è in grado di ritornare allo stato iniziale se il dato elaborato si rivela inutile, si è sempre pensato che questo ciclo non presentasse rischi sul piano sicurezza. La dimostrazione fornita dimostra invece come in questo passaggio si possono estrarre informazioni all’insaputa dell’utente.

Spectre funziona con codice nativo, quindi con un programma installato in locale, ma può essere sfruttato anche in altro modo: per esempio a mezzo JavaScript, codice che viene scaricato da una pagina web ed eseguito in locale, anche aggirando il principio del sandboxing che dovrebbe isolare i dati archiviati nel proprio dispositivo da quelli a cui ha accesso il browser.

 

Il problema è che non c’è un modo diretto di impedire a Spectre di agire sul proprio hardware: come le CPU sono state immaginate, progettate e realizzate, come i sistemi operativi sono stati scritti per sfruttare le CPU e le loro capacità, come il software che gira sui sistemi operativi è concepito, sono tutti elementi di un mosaico che ha gettato le basi per la nascita di Spectre. L’isolamento di specifiche aree di memoria che tanto software dà per scontato oggi scopriamo che di fatto non è efficace quanto pensavamo.

 

In questo caso potrebbe essere necessario non solo rilasciare delle patch per sistemi operativi e programmi, che magari modifichino il modo in cui il software opera sull’hardware, ma anche rivedere completamente il modo in cui l’hardware viene progettato e che tipo di compiti può svolgere e come. Il risultato finale potrebbe essere un cambio significativo nelle prestazioni delle CPU: fare a meno di elaborazione predittiva o speculativa ridurrebbe la capacità computazionale, pertanto occorrerà trovare nuovi modi di gestire questo tipo di funzioni.

Rimani sempre aggiornato sui
temi di StartupItalia!
iscriviti alla newsletter