Virtual Machine Escape in un attacco Spectre v2

Un nuovo studio dimostra come è possibile sfruttare le complesse vulnerabilità delle CPU nei principali attacchi ai sistemi basati su cloud.

Un team di ricercatori del Swiss Federal Institute of Technology di Zurigo (ETH Zurich) ha pubblicato uno studio che dimostra come un attacco Spectre v2 può essere utilizzato per una fuga di dati dalla sandbox in un ambiente virtualizzato. Con l’accesso a una sola macchina virtuale isolata, i ricercatori sono stati in grado di sottrarre dati preziosi normalmente accessibili solo all’amministratore del server. I server basati sulle CPU AMD (inclusa la più recente, dotata di architettura Zen 5) o Coffee Lake di Intel possono essere prese di mira da questo tipo di attacco.

Il pericolo degli attacchi Spectre per gli ambienti virtuali

Scriviamo regolarmente di vulnerabilità della CPU che utilizzano l’esecuzione speculativa, in cui le funzionalità hardware standard vengono sfruttate per sottrarre informazioni riservate. I nostri post precedenti sull’argomento, disponibili qui, qui e qui, descrivono in dettaglio i principi generali di questi attacchi.

Sebbene questo tipo di vulnerabilità sia stato scoperto per la prima volta nel 2018, prima di questo studio i ricercatori non avevano mai dimostrato l’effettiva possibilità di un attacco. Tutte le ricerche condotte in precedenza avevano permesso di concludere che, almeno in teoria, un attacco tipo Spectre sofisticato e mirato era fattibile. Inoltre, nella maggior parte di questi studi, i ricercatori si sono limitati allo scenario di attacco più elementare: installare un malware su un computer, quindi utilizzare la vulnerabilità dell’hardware della CPU per sottrarre informazioni riservate. Il punto debole di questo approccio è che se per l’autore dell’attacco fosse possibile installare un malware in un PC, potrebbe rubare i dati con numerosi altri metodi molto più semplici. Per questo motivo, è improbabile che Spectre e attacchi simili rappresentino mai una minaccia per i dispositivi degli utenti finali. Tuttavia, quando si tratta di ambienti cloud, non si dovrebbe ignorare Spectre.

Immaginiamo un provider che noleggia server virtuali a organizzazioni o privati. A ogni cliente viene assegnata una macchina virtuale, che consente di eseguire il software desiderato. Nello stesso server possono essere in esecuzione i sistemi virtuali di altri clienti. In questa situazione è fondamentale separare i privilegi di accesso ai dati. È necessario impedire a un utente malintenzionato che ha ottenuto l’accesso a una macchina virtuale di leggere i dati riservati di un altro sistema adiacente o di compromettere l’infrastruttura del provider accedendo ai dati dell’host. È proprio in questo scenario che gli attacchi Spectre iniziano a presentarsi come una minaccia notevolmente più pericolosa.

VMScape: uno sguardo da vicino a un attacco Spectre v2

In precedenti ricerche sulla fattibilità dell’attacco Spectre, i ricercatori non hanno approfondito uno scenario di attacco realistico. Per uno studio accademico, si tratta di una cosa normale. Un proof-of-concept teorico per una fuga di dati è in genere sufficiente per convincere i produttori di CPU e gli sviluppatori software a rafforzare le difese e sviluppare contromisure.

Gli autori del nuovo studio di ETH Zurich colmano direttamente questa lacuna, sottolineando che gli scenari precedentemente esaminati per gli attacchi agli ambienti virtualizzati (come quelli in questo documento, sempre di ETH Zurich) partivano da un’ipotesi estremamente vaga: che gli autori degli attacchi fossero già riusciti a installare il malware nell’host. Proprio come con gli attacchi ai normali computer desktop, a livello pratico questo non ha molto senso. Se il server è già compromesso, il danno è già stato fatto.

Il nuovo attacco preso in esame nello studio, soprannominato VMScape, utilizza lo stesso meccanismo branch target injection di quello trovato in tutti gli attacchi a partire da Spectre v2. Ne abbiamo parlato diverse volte in precedenti articoli, ma ecco un breve riassunto.

Il branch target injection è un modo per addestrare il sistema di previsione dei branch di una CPU, che accelera i programmi utilizzando l’esecuzione speculativa. Ciò significa che la CPU tenta di eseguire il set di comandi successivo prima ancora di conoscere i risultati dei calcoli precedenti. Se riesce a indovinare la giusta direzione (branch) che verrà presa dal software, le prestazioni aumenteranno notevolmente. Se l’ipotesi si rivela errata, i risultati vengono semplicemente scartati.

Il branch target injection è un attacco durante il quale un utente malintenzionato può indurre la CPU ad accedere a dati riservati e spostarli nella cache durante l’esecuzione speculativa. L’autore dell’attacco può quindi recuperare questi dati indirettamente tramite un canale laterale.

I ricercatori hanno scoperto che la separazione dei privilegi tra i sistemi operativi host e guest durante l’esecuzione speculativa non è perfetta. Questo consente di creare una nuova versione dell’attacco branch target injection, denominata “Virtualization-based Spectre-BTI” o vBTI.

In questo modo, i ricercatori sono stati in grado di leggere dati arbitrari dalla memoria dell’host avendo accesso solo a una macchina virtuale con le impostazioni predefinite. La velocità di lettura dei dati era di 32 byte al secondo su una CPU AMD Zen 4, con quasi il 100% di affidabilità. È abbastanza veloce da rubare elementi come le chiavi di criptaggio dei dati, il che apre la strada al furto di informazioni dalle macchine virtuali adiacenti.

VMScape rappresenta una minaccia nel mondo reale?

Le CPU AMD con architettura Zen dalla prima all’ultima (quinta) generazione si sono dimostrate vulnerabili a questo attacco. Ciò è dovuto alle sottili differenze nelle modalità con cui queste CPU implementano le protezioni dagli attacchi Spectre, nonché al modo unico di operare delle primitive vBTI degli autori. Per le CPU Intel, questo attacco è possibile solo nei server con CPU Coffee Lake meno recenti a partire dal 2017. Le architetture Intel più recenti hanno protezioni migliorate che rendono impossibile la versione attuale dell’attacco VMScape.

I ricercatori sono così riusciti a progettare il primo attacco Spectre v2 in assoluto in un ambiente virtuale simile alle condizioni del mondo reale. Non si basa su presupposti eccessivamente permissivi o strumenti di supporto come software dannoso a livello di hypervisor. L’attacco VMscape è efficace. Aggira molte misure di sicurezza standard, incluso KASLR, e ruba un prezioso segreto: una chiave di criptaggio.

Fortunatamente, subito dopo aver progettato l’attacco, i ricercatori hanno proposto anche una correzione. Il problema, a cui è stato assegnato l’identificatore di vulnerabilità CVE-2025-40300, è stato corretto nel kernel Linux. Questa particolare patch non riduce in modo significativo le prestazioni di calcolo, che spesso rappresentano un problema con le protezioni basate su software dagli attacchi Spectre.

I metodi per proteggere i dati riservati negli ambienti virtuali esistono da tempo. AMD dispone di una tecnologia denominata “Secure Encrypted Virtualization” e del relativo sottotipo, SEV-SNP, mentre Intel dispone di Trusted Domain Extensions (TDX). Queste tecnologie criptano le informazioni riservate, rendendo inutili i tentativi di rubarle direttamente. I ricercatori hanno confermato che SEV fornisce una protezione aggiuntiva contro l’attacco VMscape alle CPU AMD. In altre parole, un attacco VMScape contro i server moderni è improbabile nel mondo reale. Tuttavia, con ogni nuovo studio, gli attacchi Spectre sembrano sempre più realistici.

Nonostante la natura accademica della ricerca, gli attacchi che sfruttano l’esecuzione speculativa nelle moderne CPU continuano a rappresentare una possibilità significativa. Gli operatori di ambienti virtualizzati dovrebbero continuare a tenere presenti queste vulnerabilità e i potenziali attacchi nei propri modelli di minaccia.

Consigli