Spectre (vulnerabilità di sicurezza)

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search
Logo della vulnerabilità

Spectre è una vulnerabilità hardware nell'implementazione della predizione delle diramazioni nei moderni microprocessori con esecuzione speculativa[1], che consente ai processi dannosi di accedere al contenuto della memoria mappata di altri programmi. Sono stati pubblicati due ID CVE relativi a Spectre: CVE-2017-5753 e CVE-2017-5715.[2][3]

Storia[modifica | modifica wikitesto]

Spectre è stato scoperto indipendentemente dai ricercatori di Project Zero di Google e da altri ricercatori che hanno collaborato con Paul Kocher. È stato reso pubblico insieme a un'altra vulnerabilità, Meltdown, il 3 gennaio 2018.[4]

Impatto[modifica | modifica wikitesto]

Nel 2018, quasi tutti i computer sono colpiti da Spectre, inclusi desktop, laptop e dispositivi mobili. Spectre è presente, infatti, sia in processori Intel che AMD e ARM.[5][6] Intel ha risposto alle segnalazione delle vulnerabilità con un comunicato ufficiale.[7] Secondo un comunicato di AMD, la vulnerabilità di una variante di Spectre non affligge i processori AMD e porrebbe un rischio quasi nullo a causa delle differenze architetturali dei suoi processori.

Sebbene più difficile da sfruttare di Meltdown, Spectre potrebbe essere più difficile da correggere. L'analisi originale ipotizza che potrebbero essere richieste modifiche significative nell'architettura dei processori per risolvere il problema in maniera definitiva.

Inoltre, l'impatto di Spectre nel cloud computing potrebbe essere maggiore di Meltdown. Mentre Meltdown permette ad applicazioni non autorizzate di leggere da memoria privilegiata risiedente nello stesso server, Spectre può servirsi di un hypervisor per trasmettere i dati al sistema in esecuzione su di esso.[8]

Funzionamento[modifica | modifica wikitesto]

Spectre è una vulnerabilità che forza i programmi in esecuzione ad accedere a locazioni di memoria che in teoria dovrebbero essere inaccessibili al programma.

I moderni processori al fine di fornire prestazioni elevate sono dotati di una serie di unità di calcolo che lavorano in parallelo. Per poter utilizzare al meglio queste unità di calcolo a volte i processori fanno delle ipotesi sulle istruzioni da eseguire (esecuzione speculativa) basandosi su quello che è successo nel passato. Quando le ipotesi sono corrette il processore ha già eseguito una parte del lavoro e questo velocizza l'esecuzione dei programmi; quando le ipotesi invece si rivelano errate, il processore provvede ad eliminare le istruzioni eseguite per errore, annullandole. L'esecuzione di queste istruzioni non necessarie modifica tutta una serie di stati interni del processore, ma questo, quando annulla le istruzioni non corregge tutti gli stati interni alterati ma solo quelli che possono influenzare direttamente l'esecuzione del programma. Spectre mostra che utilizzando questi stati interni "non corretti" sia possibile estrarre informazioni riservate dalla CPU.

Invece di essere una singola vulnerabilità l'articolo che descrive Spectre[9] discute di un'intera classe[10] di possibili vulnerabilità.

Tutte queste vulnerabilità sono basate sull'utilizzo di un effetto collaterale dell'esecuzione speculativa, una tecnica comunemente utilizzata dai processori per ridurre/mascherare la latenza della memoria del computer e quindi fornire prestazioni migliori. In particolare Spectre si concentra sulla predizione delle diramazioni, una tecnica di esecuzione speculativa. A differenza della vulnerabilità Meltdown, Spectre non si basa su una caratteristica tecnica di un singolo processore o di una famiglia di processori ma è un'idea generale che può essere applicata a un ambito molto ampio e che potenzialmente può essere utilizzato in diversi modi.

Il punto di partenza dell'articolo è l'attacco laterale basato sui tempi di accesso alla memoria[11] applicato alla predizione delle diramazioni dei moderni processori che implementano l'esecuzione fuori ordine delle istruzioni. A livello architetturale i processori implementano dei meccanismi che eliminano i dati elaborati per errore quando i processori eseguono delle predizioni sulle diramazioni errate. Queste predizioni errate però portano degli effetti collaterali non funzionali (come il caricamento nella memoria cache della CPU di dati non necessari) che comunque alterano lo stato interno del processore. Queste alterazioni possono in seguito modificare l'esecuzione delle istruzioni successive in modo non funzionale (quindi la correttezza dei risultati delle operazioni non viene influenzata, ma aspetti non funzionali come per esempio i tempi di esecuzione delle operazioni possono variare). Se le modifiche non funzionali sono visibili dai programmi, potenzialmente un programma malevolo potremmo utilizzare queste alterazioni non funzionali per desumere dati riservati, dati che il programma malevolo non dovrebbe poter determinare. Questo succede nonostante i meccanismi di protezioni dei dati e di compartimentazione della memoria funzionino come da specifica.

L'articolo Spectre è suddiviso in quattro fasi:

  1. La prima fase discute come funziona il meccanismo di predizione delle diramazioni nei moderni processori e come un programma opportunamente progettato può addestrare l'unità di predizione delle diramazioni a individuare in modo corretto o no una certa diramazione. In questo modo si può indurre a comando un successo o fallimento della predizione.
  2. La seconda fase descrive come sia possibile definire in modo affidabile se uno specifico dato è presente o no all'interno della cache del processore. In questo modo una caratteristica non funzionale (la cache è un componente che dovrebbe essere trasparente al funzionamento dei programmi) diviene una caratteristica che può essere utilizzato da un programma per estrarre dalla CPU delle informazioni interne, informazioni che un programma non dovrebbe poter desumere.
  3. La terza fase utilizzando degli esempi di codice JavaScript mostra come sia possibile scrivere un programma che eseguito all'interno della sandbox del browser riesca a leggere dei dati esterni alla sandbox e che in teoria non dovrebbero essere accessibili. Il codice sfrutta l'esecuzione speculativa e la capacità di definire se i dati sono memorizzati nella cache della CPU oppure no. L'idea generale è che il programma malevolo tramite un ciclo o un altro frammento di codice sia in grado di indurre una predizione delle diramazioni errata e che questa forzi il processore ad accedere ad aree di memoria che in teoria non dovrebbero essere accessibili. In un certo momento, il processore individuerà la predizione errata e provvederà ad annullare le istruzioni eseguite, ma comunque il processore avrà già letto i dati riservati e avrà provveduto a salvare questi nella cache. In seguito, i dati (presenti nella cache del processore) vengono estratti con opportuni attacchi, come quello descritto dalla vulnerabilità Meltdown.
  4. L'ultima parte dell'articolo generalizza il concetto mostrando come sia possibile utilizzare anche altri stati non funzionali del processore e descrive esempi non ovvi come i tempi di arbitraggio dei bus.

La differenza principale tra Meltdown e Spectre è che Meltdown sfrutta una specificità architetturale dei processori Intel mentre Spectre è molto più generico e quindi può potenzialmente colpire qualsiasi processore moderno. Meltdown sfrutta il fatto che le CPU Intel eseguono dei controlli a posteriori sui privilegi di accesso delle istruzioni alla memoria e che quindi la CPU può essere forzato ad accedere a locazioni non consentite. Durante l'esecuzione di un istruzioni che richiede dei dati in memoria il processore avvia la verifica sui privilegi di accesso e in parallelo legge il dato dalla memoria. Se l'istruzione non ha i privilegi corretti per accedere alla memoria il processore blocca l'istruzione ma comunque l'accesso alla memoria è stato già eseguito e i dati sono stati salvati nella cache. Una volta presenti nella cache questi possono essere estratti tramite un altro attacco. Spectre invece mostra come utilizzando la predizione delle diramazioni si può forzare il processore ad accedere ad aree di memoria riservate e una volta che queste sono state copiate in cache queste possono essere estratte tramite lo stesso attacco utilizzato da Meltdown. L'attacco Spectre richiede solo che il processore abbia una cache e una unità di predizione delle diramazione, due condizioni molto comuni nelle CPU moderne; inoltre mentre l'attacco Meltdown può essere bloccato utilizzando la tecnica KAISER l'attacco Spectre non ha una soluzione singola che consenta di eliminare il problema.[12]

Patch[modifica | modifica wikitesto]

Un Chart che dimostra la disponibilità di aggiornamenti contro Spectre e Meltdown per dispositivi Android & iOS.
Questo Chart dimostra la disponibilità di aggiornamenti contro Spectre e Meltdown per dispositivi Android & iOS.

PC, MacOS e Linux[modifica | modifica wikitesto]

Dato che Spectre copre una vasta serie di vulnerabilità, con buona probabilità non potrà essere corretto con una singola patch. Sebbene si stia già lavorando per correggere alcuni specifici casi della vulnerabilità, il sito originale dedicato a Spectre e Meltdown dichiara che Spectre non è facile da correggere, dovremo averci a che fare per molto tempo.

Smartphones[modifica | modifica wikitesto]

Mentre Apple ha pubblicato aggiornamenti che mitigano il problema su tutti i modelli dall’iPhone 5S e successivi, vari produttori di dispositivi che montano Android, non pubblicheranno update per modelli più vecchi di 24 mesi.[13]

Note[modifica | modifica wikitesto]

  1. ^ (EN) A Critical Intel Flaw Breaks Basic Security for Most Computers, in WIRED. URL consultato il 5 gennaio 2018.
  2. ^ (EN) Cade Metz e Nicole Perlroth, Researchers Discover Two Major Flaws in the World’s Computers, in The New York Times, 2018. URL consultato il 5 gennaio 2018.
  3. ^ Intel’s processors have a security bug and the fix could slow down PCs, in The Verge. URL consultato il 5 gennaio 2018.
  4. ^ (EN) Meltdown and Spectre, su spectreattack.com. URL consultato il 5 gennaio 2018.
  5. ^ (EN) Meltdown and Spectre, su spectreattack.com. URL consultato il 5 gennaio 2018.
  6. ^ Security flaws put virtually all phones, computers at risk, in Reuters, Thu Jan 04 11:52:36 UTC 2018. URL consultato il 5 gennaio 2018.
  7. ^ newsroom.intel.com, https://newsroom.intel.com/news/intel-responds-to-security-research-findings/.
  8. ^ (EN) Thomas Fox-Brewster, Massive Intel Vulnerabilities Just Landed -- And Every PC User On The Planet May Need To Update, in Forbes. URL consultato il 5 gennaio 2018.
  9. ^ Spectre Attacks: Exploiting Speculative Execution (PDF), su spectreattack.com, 2018 (archiviato il 3 gennaio 2018).
  10. ^ Reading privileged memory with a side-channel, su googleprojectzero.blogspot.fi, 2018 (archiviato il 4 gennaio 2018).
  11. ^ Mitigations landing for new class of timing attack, su blog.mozilla.org, 2018 (archiviato il 4 gennaio 2018).
  12. ^ Meltdown (PDF), su meltdownattack.com, 2018 (archiviato il 4 gennaio 2018).
  13. ^ Oltre 50% degli smartphone Italiani non sono sicuri per l’Online Banking, su ricompro.it.

Voci correlate[modifica | modifica wikitesto]

  • Meltdown – una vulnerabilità hardware nei microprocessori Intel che permette a processi non autorizzati l'accesso a memoria privilegiata.

Collegamenti esterni[modifica | modifica wikitesto]

Sicurezza informatica Portale Sicurezza informatica: accedi alle voci di Wikipedia che trattano di sicurezza informatica