Nuovo attacco alle strutture microarchitettoniche dei processori Intel e AMD

Un gruppo di ricercatori dell'Università della Virginia e dell'Università della California ha presentato un nuovo tipo di attacco alle strutture microarchitettoniche dei processori Intel e AMD, identificato durante il reverse engineering di capacità della CPU non documentate. Il metodo di attacco proposto prevede l'uso di una cache micro-op intermedia nei processori, che può essere utilizzata per recuperare le informazioni accumulate durante l'esecuzione speculativa delle istruzioni.

Ai fini dell'ottimizzazione, il processore inizia ad eseguire alcune istruzioni in modalità speculativa, senza attendere il completamento dei calcoli precedenti, e se poi determina che la previsione non era giustificata, ripristina l'operazione allo stato originale, ma i dati elaborati durante l'esecuzione speculativa viene depositata in una cache, il cui contenuto può essere determinato.

Si noti che il nuovo metodo supera significativamente l'attacco Spectre v1, rende l'attacco difficile da rilevare e non viene bloccato dai metodi esistenti di protezione contro gli attacchi side-channel progettati per bloccare le vulnerabilità causate dall'esecuzione speculativa di istruzioni (ad esempio, l'uso dell'istruzione LFENCE blocca le perdite nelle ultime fasi dell'esecuzione speculativa, ma non protegge dalle perdite attraverso le strutture microarchitettoniche).

Il metodo riguarda i modelli di processori Intel e AMD rilasciati a partire dal 2011, comprese le serie Intel Skylake e AMD Zen. Le moderne CPU suddividono le complesse istruzioni del processore in microoperazioni più semplici simili a RISC, che vengono memorizzate nella cache in una cache separata. Questa cache è fondamentalmente diversa dalle cache di livello superiore, non è direttamente accessibile e funge da buffer di flusso per un rapido accesso ai risultati della decodifica delle istruzioni CISC in microistruzioni RISC. Tuttavia, i ricercatori hanno trovato un modo per creare le condizioni che si verificano quando l'accesso alla cache è in conflitto e consentire di giudicare il contenuto della cache delle micro-operazioni analizzando le differenze nel tempo di esecuzione di determinate azioni.

Nuovo attacco alle strutture microarchitettoniche dei processori Intel e AMD

La cache delle microoperazioni nei processori Intel è segmentata in relazione ai thread della CPU (Hyper-Threading), mentre i processori AMD Zen utilizzano una cache condivisa, che crea le condizioni per la perdita di dati non solo all'interno di un thread di esecuzione, ma anche tra diversi thread in SMT (possibile perdita di dati tra codice in esecuzione su diversi core logici della CPU).

I ricercatori hanno proposto un metodo di base per rilevare cambiamenti nella cache delle micro-operazioni e diversi scenari di attacco che consentono di creare canali di trasmissione dati nascosti e di utilizzare codice vulnerabile per divulgare dati riservati, sia all'interno di un singolo processo (ad esempio, per divulgare dati di processo durante l'esecuzione codice di terze parti nei motori con JIT e nelle macchine virtuali) e tra il kernel e i processi nello spazio utente.

Organizzando una variante dell'attacco Spectre utilizzando una cache di micro-operazioni, i ricercatori sono stati in grado di raggiungere prestazioni di 965.59 Kbps con un tasso di errore dello 0.22% e 785.56 Kbps utilizzando la correzione degli errori, nel caso di organizzazione di una fuga di notizie all'interno dello stesso indirizzo livello di spazio e privilegio. Con una perdita che abbracciava diversi livelli di privilegio (tra kernel e spazio utente), le prestazioni erano di 85.2 Kbps con l'aggiunta della correzione degli errori e di 110.96 Kbps con un tasso di errore del 4%. Quando si attaccano i processori AMD Zen, creando una perdita tra diversi core logici della CPU, le prestazioni sono state di 250 Kbps con un tasso di errore del 5.59% e 168.58 Kbps con correzione errori. Rispetto al metodo classico Spectre v1, il nuovo attacco è stato 2.6 volte più veloce.

Si prevede che la protezione contro un attacco alla cache micro-op richiederà modifiche che ridurranno le prestazioni in misura maggiore rispetto a quando si abilita la protezione contro gli attacchi Spectre. Come compromesso ottimale, si propone di bloccare tali attacchi non disabilitando la memorizzazione nella cache, ma monitorando le anomalie e identificando gli stati della cache tipici degli attacchi.

Come negli attacchi Spectre, l'organizzazione di una fuga di dati dal kernel o da altri processi richiede l'esecuzione di una determinata sequenza di comandi (gadget) da parte dei processi vittima, portando all'esecuzione speculativa delle istruzioni. Nel kernel Linux sono stati trovati circa 100 gadget simili, che verranno rimossi, ma periodicamente vengono trovate soluzioni alternative per la loro generazione, ad esempio relative all'esecuzione di programmi BPF appositamente progettati nel kernel.

Fonte: opennet.ru

Aggiungi un commento