Intel, nuovi attacchi: Foreshadow e Foreshadow-NG
Già in un articolo precedente avevamo parlato di Spectre e Meltdown, due nomi che identificano un tipo di vulnerabilità comparso ad inizio anno e che ha colpito in particolare quasi ogni chip Intel costruito negli ultimi 20 anni.
In questo caso parliamo di due nuove vulnerabilità chiamate Foreshadow e Foreshadow-NG. Due attacchi che possono portare un malintenzionato a sottrarre informazioni sensibili dai pc o dal cloud.
Il “foreshadowing” è una tecnica narrativa che prevede l’anticipazione di alcuni elementi della trama che non si sono ancora verificati, così da aggiungere tensione e da far intuire gli avvenimenti futuri nella narrazione. Il nome dell’attacco deriva quindi da tale tecnica, poiché dà indicazioni su ciò che ci sarà senza svelare in pieno la trama.
Prima del particolare, il generale.
Prima di parlare di Foreshadow, ricordiamo in breve che cosa fa l’esecuzione speculativa sui microprocessori. Si tratta di un metodo per migliorare le prestazioni, in quanto il chip fa alcuni calcoli in anticipo, facendo ipotesi sulle richieste successive di un software per completare una data operazione. Se tali ipotesi sono corrette la CPU termina l’operazione più rapidamente. In caso d’errore, le previsioni scorrette sono semplicemente scartate.
Tale modus operandi finora si è rivelato utilissimo ai fini prestazionali, ma non del tutto sicuro per quanto concerne le informazioni contenute all’interno delle diverse aree del microprocessore. Da qui sono nati una serie di attacchi che nei mesi precedenti è stata mitigata da Intel e anche ad altri produttori di CPU, come AMD o ARM, sebbene Intel appaia la più colpita.
Cosa sono Foreshadow e Foreshadow-NG?
Passiamo ora a parlare di Foreshadow. L’ultimo bug Intel si presenta in due versioni. Da un lato l’attacco riguarda i processori che supportano la tecnologia SGX, da Skylake e Kaby Lake in poi, e prende il nome di Foreshadow. Si presenta come un attacco base (CVE-2018-3615) progettato per estrarre dati dalle enclavi SGX (Software Guard Extensions). Dall’altro riguarda anche altri modelli fin dalla generazione di CPU Core (oltre che CPU a 32/45nm).
Si presenta in due tipologie che permettono di leggere liberamente (o quasi) la cache L1. Prende il nome di Foreshadow-NG – Next-Generation (CVE-2018-3620 e CVE-2018-3646) – e riguarda macchine virtuali (VM), hypervisor (VMM), la memoria del kernel del sistema operativo e memoria System Management Mode (SMM).
Questo video mostra brevemente le varianti in cui si presenta Foreshadow.
Come funziona Foreshadow e la tecnologia SGX.
SGX è una tecnologia che permette la codifica di blocchi di memoria affinché malware che potrebbero aver infettato il sistema operativo non arrivino a dati sensibili archiviati in aree sicure, dette enclavi, create proprio da SGX. Solo i processi autorizzati possono accedere. Questo significa che nemmeno i processi operanti in kernel mode o a livelli di privilegio ancora superiori (ring 0, -1, -2) possono accedere a tali porzioni di memoria.
Ciò permette quindi di escludere un accesso ai dati anche in caso di attacco che comprometta integralmente il sistema e ne dia pieno controllo all’attaccante, garantendo teoricamente la massima sicurezza. Il processore stesso convalida l’integrità delle enclavi, quindi finché il processore è affidabile, anche le enclavi si possono ritenere attendibili.
L’attacco Foreshadow ha tuttavia trovato un modo per aggirare le protezioni SGX, che di norma non consentono a malintenzionati di penetrare nelle enclavi con attacchi all’esecuzione speculativa. Quest’ultima, però, può essere utilizzata per ottenere informazioni. È infatti possibile estrarre la chiave di cifratura che identifica e protegge l’enclave (chiave di attestazione o attestation key) e accedere quindi ai suoi contenuti e modificarli.
Ecco come funziona un attacco Foreshadow:
Secondo i ricercatori che hanno scovato la falla, un malintenzionato può creare copie ombra di un dato protetto nell’enclave e poi leggere i contenuti di quelle copie. Successivamente possono poi ingannare gli utenti, portandoli a inviare i loro dati privati verso nuove enclavi fasulle.
L’unico rimedio per questo attacco è una patch sia al livello del kernel che del microcodice. Per ragioni di sicurezza non sono ancora stati rilasciati proof-of-concept. Linux ha già emanato delle patch per coprire il problema per i kernel 4.18, 4.17, 4.9 e 4.4. Microsoft ha incluso le patch nell’ultimo Patch Tuesday.
Come funziona Foreshadow-NG.
Come detto però ci sono altri due attacchi collegati, scoperti dalla stessa Intel, che consentono di leggere qualsiasi contenuto della cache L1 della CPU. Questo è il motivo per cui Intel chiama questa nuova serie di falle “L1 Terminal Fault” o L1TF. Un attacco Foreshadow-NG potrebbe consentire a un software maligno di leggere la memoria del kernel, a una macchina virtuale guest di leggere la memoria dell’hypervisor o la memoria di un’altra VM guest (cosa di particolare pericolosità in uno scenario cloud/web hosting), oppure consentire a sistemi operativi infetti di leggere la memoria protetta dall’SMM.
Foreshadow non utilizzato per attacchi reali
Tuttavia, secondo Intel la vulnerabilità non è stata mai usata per compiere attacchi reali a danno dei computer. Esiste, sarebbe possibile utilizzarla, ma non è mai stato fatto.
“Non siamo a conoscenza di notizie che questi metodi di attacco siano stati utilizzati in exploit del mondo reale, ma ciò sottolinea ulteriormente la necessità per tutti di aderire alle migliori pratiche di sicurezza.”
Cosa vengono colpiti?
L’attacco Foreshadow originale riguarda solamente i chip con tecnologia SGX, quindi la generazione Skylake e quelle successive fino ai giorni nostri. Le varianti Foreshadow-NG interessano invece un insieme di CPU più ampio: processori Core i3/i5/i7/M (45nm e 32nm), Core 2nd/3rd/4th/5th/6th/7th/8th generation, Core X-series su piattaforme X99 e X299, Xeon serie 3400/3600/5500/5600/6500/7500, Xeon Processor E3 v1/v2/v3/v4/v5/v6, Xeon Processor E5 v1/v2/v3/v4, Xeon Processor E7 v1/v2/v3/v4, Xeon Processor Scalable e Xeon Processor D (1500, 2100).
Sul sito ufficiale della Intel potete vedere una lista completa dei chip coinvolti.
Contromisure
Intel ha dichiarato in un post sul suo blog che, se si sono gli istallati gli aggiornamenti rilasciati per i bug Spectre e Meltdown (rilasciati ad inizio anno) uniti agli aggiornamenti dei sistemi operativi e degli Hypervisor rilasciati in questi giorni, si dovrebbe essere protetti, almeno nella maggior parte dei casi.
“L1 Terminal Fault è stato affrontato con aggiornamenti del microcode rilasciati all’inizio di quest’anno, accoppiati ad aggiornamenti corrispondenti per sistemi operativi e software hypervisor che sono disponibili a partire da oggi. Abbiamo pubblicato più informazioni sul nostro sito e continuiamo a incoraggiare tutti a mantenere i propri sistemi aggiornati, in quanto è uno dei migliori modi per rimanere protetti”.
Correttivi a livello hardware per L1TF (a cui si sommeranno quelli per altre vulnerabilità emerse da Spectre e Meltdown in avanti) saranno implementati nei futuri Xeon Scalable (nome in codice Cascade Lake) e nei microprocessori client in arrivo nei prossimi mesi.