Per i processori Intel è stata segnalata una nuova vulnerabilità, battezzata
TLBleed, analoga
a Spectre e Meltdown. Anche TLBleed è infatti una
vulnerabilità side-channel, che permette cioè di violare un software non sfruttando i bug o le caratteristiche del suo codice ma
analizzando il comportamento del processore, e di altri componenti hardware, durante l'esecuzione del codice stesso.
Spectre e Meltdown sfruttano il modo in cui i processori pianificano la sequenza delle istruzioni da eseguire (la cosiddetta
speculative execution). TLBleed si basa invece sull'analisi del
Translation Lookaside Buffer (TLB, appunto), una memoria cache che viene usata nella conversione degli indirizzi della memoria virtuale "vista" da un processo in quelli della memoria RAM fisica del computer bersaglio.
TLBleed è stato identificato da alcuni ricercatori della Vrije Universiteit di Amsterdam. La vulnerabilità è stata dimostrata facendo in modo che un processo-malware
"carpisse" le chiavi di cifratura usate da un secondo processo eseguito dallo stesso processore. I test sono stati eseguiti su vari processori Intel di diverse generazioni e le chiavi di encryption sono state "rubate"
in oltre il 98,6% delle prove.
TLBleed è collegata al funzionamento del
multithreading simultaneo, una funzione che le CPU - Intel
e non solo - usano per eseguire più processi (thread, di solito due) allo stesso tempo con un singolo core del processore.
Con il multithreading, ciascun thread "pensa" di avere a disposizione tutta la memoria del sistema ma ovviamente non è così. La CPU usa costantemente - e quindi conserva -
tabelle di conversione che "mappano" la memoria virtuale vista dai thread sulle locazioni effettivamente disponibili della memoria RAM fisica.
Il TLB è una memoria cache molto veloce, a più livelli, che conserva una certa quantità di mappature fra memoria virtuale e fisica, di norma
quelle effettuate più di recente dalla CPU. In questo modo se un thread deve accedere a dati che ha già elaborato - quindi a una locazione di memoria che ha già usato - il processore definisce molto velocemente l'indirizzo di memoria fisica che gli serve. Man mano che il codice di un thread viene eseguito, la CPU
cambia i contenuti del TLB di conseguenza. Due thread eseguiti da un medesimo core
condividono il suo TLB.
Questo sistema permette in teoria un attacco side-channel in cui un thread eseguito da un core della CPU
osserva come variano i contenuti della TLB quando è in esecuzione un altro thread. Analizzando queste informazioni, il thread "ostile" può arrivare a
capire cosa sta facendo il thread-bersaglio e persino a carpire le sue informazioni ipotizzando le zone di memoria a cui accede.
Non è un compito semplice e infatti il codice di test che hanno prodotto i ricercatori dell'Università di Amsterdam usa
funzioni di intelligenza artificiale per capire, in base al comportamento del TLB, quando il thread bersaglio sta compiendo operazioni importanti. Avendo una certa conoscenza del codice eseguito dal thread-bersaglio - nel caso dei test olandesi era una libreria crittografica -
si possono dedurre informazioni anche critiche, sino a ricomporre le chiavi di cifratura usate dalla libreria.
Intel è al corrente dell'esistenza di TLBleed ma
non lo considera un grave pericolo. Per sfruttare questa vulnerabilità un attaccante deve essere collegato al sistema bersaglio e comunque l'operazione non è affatto semplice, come si intuisce dal suo funzionamento. L'opinione di Intel è inoltre che le librerie crittografiche più evolute siano già
scritte in modo da essere immuni da TLBleed: gli attacchi side-channel sono noti da tempo e alcuni software già gestiscono le memorie cache in modo da non dare indicazioni ad eventuali attaccanti.
Per alcuni esperti di sicurezza la questione non si risolve così velocemente. I test di Amsterdam comunque dimostrano che la vulnerabilità esiste e non è possibile indicare a priori se un software ne è immune o no. Il multithreading oltretutto
non è presente solo nelle CPU Intel. Non a caso la distribuzione Linux OpenBSD, particolarmente attenta alla sicurezza, è stata aggiornata disabilitando del tutto il multithreading, una scelta drastica che non è stata presa alla leggera.