AMD ha confermato la potenziale vulnerabilità delle CPU AMD Zen 3 all'attacco Spectre-STL

AMD ha pubblicato un rapporto che analizza la sicurezza della tecnologia di ottimizzazione PSF (Predictive Store Forwarding) implementata nei processori della serie Zen 3. Lo studio ha confermato teoricamente l'applicabilità del metodo di attacco Spectre-STL (Spectre-v4), identificato nel maggio 2018, a PSF, ma in pratica non è stato ancora trovato alcun modello di codice in grado di provocare un attacco e il pericolo complessivo è valutato insignificante.

Ricordiamo che l'attacco Spectre-v4 (Speculative Store Bypass) si basa sul ripristino dei dati che si sono depositati nella cache del processore dopo aver scartato il risultato dell'esecuzione speculativa delle operazioni durante l'elaborazione di operazioni di scrittura e lettura alternate utilizzando l'indirizzamento indiretto. Quando un'operazione di lettura segue un'operazione di scrittura (ad esempio, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), l'offset dell'indirizzo di lettura potrebbe essere già noto a causa di operazioni simili eseguite (le operazioni di lettura sono eseguita molto più frequentemente e le letture possono essere eseguite dalla cache) e il processore può speculativamente eseguire letture prima delle scritture senza attendere il calcolo dell'offset indiretto della scrittura.

Questa funzionalità consente a un'istruzione di lettura di accedere a un vecchio valore in un indirizzo mentre l'operazione di memorizzazione non è ancora completata. Se si verifica un errore di previsione, l'operazione speculativa non riuscita verrà scartata, ma tracce della sua esecuzione rimarranno nella cache del processore e potranno essere recuperate con uno dei metodi per determinare il contenuto della cache in base all'analisi delle modifiche nell'accesso tempo per i dati memorizzati nella cache e non nella cache.

Aggiunto ai processori AMD Zen 3, PSF ottimizza STLF (Store-To-Load-Forwarding), che esegue operazioni di lettura in modo speculativo prevedendo la relazione tra operazioni di lettura e scrittura. Quando si utilizza il classico STLF, il processore esegue un'operazione di "caricamento" sui dati direttamente inoltrati dal precedente comando "store", senza attendere che il risultato venga effettivamente scritto in memoria, ma assicurandosi che gli indirizzi utilizzati nel "caricamento" e i comandi "memorizza" corrispondono. L'ottimizzazione PSF rende speculativo il controllo degli indirizzi ed esegue un'operazione di "caricamento" prima che le informazioni sull'indirizzo siano state calcolate se è stata precedentemente eseguita una coppia di memorizzazione/caricamento che manipola un singolo indirizzo. Se la previsione fallisce, viene eseguito il rollback dello stato, ma i dati rimangono nella cache.

Un attacco a PSF è possibile solo nell'ambito di un livello di privilegi, copre solo il contesto del processo attuale e viene bloccato tramite metodi di isolamento dello spazio degli indirizzi o meccanismi sandbox hardware. In questo caso, i metodi di sandboxing del software nei processi possono essere potenzialmente interessati dal problema. L'attacco rappresenta una minaccia per sistemi come browser, macchine virtuali di esecuzione codice e JIT che eseguono codice di terze parti all'interno di un singolo processo (l'attacco potrebbe consentire al codice sandbox non attendibile di accedere ad altri dati di processo).

AMD ha fornito una serie di metodi per disabilitare completamente o selettivamente PSF, ma dato il rischio trascurabile per la maggior parte delle applicazioni, ha raccomandato di non disabilitare questa ottimizzazione per impostazione predefinita. Per proteggere selettivamente i processi che isolano quelli che eseguono codice non affidabile, si propone di disabilitare PSF impostando i bit MSR “SSBD” e “PSFD”, anche per i singoli thread. Sono state preparate patch per il kernel Linux con l'implementazione delle opzioni della riga di comando “psfd” e “nopsfd” che controllano il modo in cui PSF viene attivato e disattivato.

Fonte: opennet.ru

Aggiungi un commento