Spectre, spiegata come se i computer fossero banche

Ho appena visto su Twitter il Professor Clay Shirky dare una bella spiegazione di come e perché il cosiddetto difetto “Spectre” che affligge molti microprocessori è un grosso problema per tutti noi (e credo che sia valida, in senso lato, anche per l’altro problema informatico del momento, Meltdown (1). Col permesso del Prof. Shirky, ho riformattato in Inglese, e poi tradotto, l’intera spiegazione, in modo che sia facilmente leggibile e accessibile anche fuori da Twitter (il grassetto nel testo che segue è aggiunto da me)

Spectre, spiegata come se i computer fossero banche /img/spectre-and-meltdown.jpg

Professor Clay Shirky: cercherò di spiegare l’attacco Spectre con un’analogia: immaginatevi una banca con tante cassette di sicurezza stivate in un caveau. Ogni suo cliente ha un suo numero di conto, grazie al quale può anche avere diverse di quelle cassette, che può farsi portare dal caveau ogni volta che vuole.

Ovviamente, la banca tiene moltissimo alla sicurezza. Ogni cliente deve mostrare un documento d’identità per accedere alle sue cassette, e non può assolutamente portarsi fuori dalla banca il contenuto delle cassette degli altri clienti. Il problema è che nel caveau ci sono tantissime cassette, e i clienti hanno tutti una gran fretta. Per questo nel caveau ci sono tanti commessi che, a volte, per servire i clienti più velocemente, tirano a indovinare quali cassette verranno richieste, per portarle più in fretta ai clienti.

Per poter svolgere questo “prelievo preventivo” delle cassette, i commessi non controllano se il loro contenuto vi serve davvero o no, finchè non ve le hanno effettivamente portate. A volte ci azzeccano, cioè vi portano la cassetta che volevate prima ancora di averla chiesta, a volte no, ma che problema c’è? Se vi portano una cassetta che non vi serve, la lasciate lì e loro la rimetteranno a posto.

E qui c’è il problema. Perché le procedure con cui la banca controlla chi siete, e impedisce che chiunque possa portarsi via il contenuto delle cassette di altri clienti sono sicure. Ma quella per decidere quali cassette tirare fuori dal caveau per portarle ai clienti non lo è, perché è ottimizzata per essere veloce, non sicura.

Nel senso che, una volta verificato, grazie ai vostri documenti, che voi siete davvero chi dite di essere, i commessi si fidano e quindi aprono e vi portano qualsiasi cassetta gli chiediate, prima di controllare se è vostra o no. Di conseguenza, anche se non potete portarvi via nulla, nè alterarlo in alcun modo, potete vedere, cosa c’è nelle cassette di sicurezza degli altri.

E potete farlo quante volte volete, fino a sapere cosa c’è in tutte le cassette della banca.

Spectre funziona allo stesso modo. La banca è la CPU (2), le vostre richieste di farvi portare qualsiasi cassetta sono istruzioni di un programma software, e le singole cassette sono dati nella memoria del computer. Perché una volta autorizzato a girare, nelle CPU moderne un programma può richiedere dalla memoria qualsiasi dato vuole, e gli verrà mostrato prima di verificare se la richiesta era accettabile o no.

Questa situazione è ancora più pericolosa quando si usano servizi di “cloud computing”, cioè quando il programma che gestisce i vostri dati gira su computer insieme a quelli di tante altre persone di cui non sapete niente. Chiunque possa far girare Spectre su quel computer (cioè, nell’analogia, chiunque riesca ad aprire un conto corrente nella vostra stessa banca), può vedere i dati vostri e di tutti gli altri utenti di quel computer.

In un certo senso, questo è sempre “fishing”, cioè un attacco informatico volto a rubare password e altri dati sensibili di qualcuno. Il problema è che è fishing a strascico, su scala industriale. E Spectre non si basa su qualche caratteristica secondaria delle CPU moderne, ma su un principio fondamentale del loro funzionamento, cioè appunto l’estrazione preventiva, ad alta velocità, di dati e istruzioni (i dettagli tecnici li trovate qui.

Note da Marco:

  1. come ho già detto, l’ipotesi che questa analogia sia valida, anche se in senso lato, anche per l’attacco Meltdown è solo mia, non di Shirky, e potrebbe essere totalmente sbagliata perché non sono certo un esperto di sicurezza informatica. Se ho sbagliato, fatemelo sapere, grazie
  2. CPU significa “Central Processing Unit”, cioè il microprocessore o circuito integrato centrale che è il cuore di qualsiasi computer, laptop, tablet, smartphone… perché è il componente che effettivamente fa tutto il lavoro di esecuzione dei vari programmi software. Sempre se ho capito bene, la maggior parte delle CPU di oggi sono vulnerabili con Spectre e/o Meltdown