Home / News / Nuova vulnerabilità nell’esecuzione speculativa dei processori aggira le protezioni contro Spectre

Nuova vulnerabilità nell’esecuzione speculativa dei processori aggira le protezioni contro Spectre

Ricercatori del MIT CSAIL hanno scoperto una nuova tecnica di attacco, denominata TONTOU, che sfrutta brevi finestre temporali inevitabili nelle difese contro la vulnerabilità Spectre. Manipolando gli interrupt di sistema con timer di precisione, sono riusciti a compromettere processori Intel e AMD, dimostrando l’exploit sottraendo il file delle password da un sistema Linux.

Nuova vulnerabilità nell'esecuzione speculativa dei processori aggira le protezioni contro Spectre

Il team, guidato dal dottorando Daniël Trujillo e dalla professoressa assistente Mengjia Yan, ha individuato una nuova classe di attacchi contro l’esecuzione speculativa dei processori. Questa tecnica è in grado di aggirare le protezioni introdotte a seguito della divulgazione della vulnerabilità Spectre nel 2018.

I processori moderni ottengono gran parte delle loro prestazioni grazie all’esecuzione speculativa: invece di attendere la conferma del ramo di codice che un programma seguirà, il chip anticipa l’opzione più probabile e inizia ad elaborarla in anticipo. Se l’ipotesi è corretta, si guadagna tempo; se errata, il lavoro svolto viene scartato, ma lascia tracce misurabili nella microarchitettura.

Dalla divulgazione di Spectre, è noto che queste tracce possono essere sfruttate per estrarre dati sensibili dalla memoria a cui un programma non dovrebbe avere accesso. Da allora, produttori di chip e sviluppatori di sistemi operativi hanno introdotto contromisure basate sul principio comune di azzerare o isolare i meccanismi di predizione del processore prima che possano essere utilizzati da codice non autorizzato.

Lo studio del CSAIL dimostra però che questa strategia si basa su un presupposto fragile. La pulizia della macchina predittiva e il momento in cui le previsioni vengono effettivamente utilizzate non possono coincidere perfettamente: esiste sempre un intervallo, talvolta ampio quanto poche istruzioni, durante il quale qualsiasi codice eseguito può “sporcare” nuovamente i meccanismi appena ripuliti.

I ricercatori hanno battezzato questa categoria di attacchi “TONTOU”. Hanno studiato un modo per far funzionare codice ostile proprio in quella finestra critica. I computer interrompono continuamente l’esecuzione corrente per gestire eventi di routine, come timer, traffico di rete o segnali hardware.

Poiché un programma ordinario può impostare i propri timer, Trujillo e Yan sono riusciti a calibrarli con precisione sufficiente da costringere il processore a deviare l’esecuzione esattamente nell’istante sbagliato, lasciando che sia l’interrupt stesso a compromettere i dati di predizione. Gli autori hanno definito questa tecnica “interrupt injection”.

Il team ha testato quattro generazioni di processori Intel e AMD, ottenendo predizioni errate sfruttabili su entrambe le architetture. Nello specifico, i test sono stati svolti su: Zen 2 (Ryzen 7 4700G), Zen 4 (EPYC 9124), Intel Cascade Lake Refresh (Xeon Gold 5220R) e Intel Arrow Lake (Ultra 9 285H).

Su Intel, l’attacco ha aggirato due protezioni distinte: una implementata via software sui modelli più datati, l’altra implementata direttamente nel silicio dei chip più recenti. È emerso un dato interessante: la protezione hardware più moderna ha retto su una generazione di processori ma è risultata vulnerabile su un’altra, segno che produttori diversi – o anche generazioni diverse dello stesso produttore – implementano la stessa contromisura in modi sostanzialmente differenti.

Su AMD, la difesa denominata “saferet” ripulisce i meccanismi predittivi immediatamente prima di ogni utilizzo, lasciando una finestra vulnerabile ampia appena due istruzioni, eseguite tipicamente in decine di nanosecondi. I ricercatori sono comunque riusciti a colpirla, rallentando artificialmente il processore proprio in quel punto per rendere il bersaglio più facile da centrare.

Per dimostrare la concretezza della minaccia, il team ha costruito un exploit funzionante su un sistema AMD con un kernel Linux aggiornato. In una prima fase è stata neutralizzata la randomizzazione dell’indirizzamento di memoria del sistema operativo, riuscendo in tutti i 10 tentativi effettuati, ciascuno richiedente circa nove minuti.

Questo passaggio ha permesso di leggere memoria protetta a una velocità di circa 5 byte al secondo – lenta, ma sufficiente a individuare e copiare il file “/etc/shadow”, che contiene l’hash della password di root, riuscendo nell’operazione in metà dei tentativi complessivi.

Lo studio propone come rimedio una seconda pulizia dei meccanismi predittivi al termine dell’interrupt. Questa soluzione appare praticabile su AMD, ma potrebbe rivelarsi controproducente su Intel: poiché l’attacco si basa sul fatto che l’interrupt lasci uno stato coerente, più che uno stato specifico, la correzione standard rischierebbe di rendere l’attacco più affidabile anziché neutralizzarlo.

I processori Intel più recenti dispongono invece di un’istruzione dedicata che sembra offrire una mitigazione efficace. L’alternativa, ovvero bloccare gli interrupt durante la finestra vulnerabile, comporterebbe probabilmente un costo prestazionale troppo elevato per essere adottata su larga scala.

I ricercatori hanno notificato la vulnerabilità ad AMD e Intel all’inizio di febbraio, coinvolgendo poi i manutentori del kernel Linux a marzo e coordinandosi con AMD per allertare i fornitori di servizi cloud e altri clienti a valle. AMD ha successivamente rilasciato una patch che mitiga l’attacco, ottenibile tramite aggiornamento del sistema operativo. Il codice utilizzato dal team per gli esperimenti è stato reso pubblico.

* Contenuto realizzato con l’ausilio di sistemi di intelligenza artificiale.