LVI — una nuova classe di attacchi al meccanismo di esecuzione speculativa nella CPU

Reso pubblico le informazioni su una nuova classe di attacchi LVI (Load Value Injection, CVE-2020-0551) al meccanismo di esecuzione speculativa nella CPU Intel, che possono essere utilizzate per organizzare la fuga di chiavi e dati riservati dagli enclave Intel SGX e da altri processi.

La nuova classe di attacchi si basa su manipolazioni delle stesse strutture microarchitetturali utilizzate negli attacchi MDS (Microarchitectural Data Sampling), Spectre e Meltdown. Tuttavia, i nuovi attacchi non vengono bloccati dai metodi di protezione esistenti contro Meltdown, Spectre, MDS e altri attacchi simili. Per garantire una protezione efficace contro l'LVI è necessario apportare modifiche hardware alla CPU. Quando si organizza la protezione tramite software, aggiungendo istruzioni LFENCE dal compilatore dopo ogni operazione di caricamento dalla memoria e sostituendo l'istruzione RET con POP, LFENCE e JMP, si registrano costi di overhead eccessivi: secondo le stime dei ricercatori, la protezione software completa porterà a una riduzione delle prestazioni da 2 a 19 volte.

In parte, la difficoltà di bloccare il problema è compensata dal fatto che attualmente l'attacco ha un carattere più teorico che pratico (l'attacco è teoricamente possibile, ma molto difficile da realizzare e riproducibile solo in test sintetici).
Azienda Intel ha assegnato un livello moderato di pericolo al problema (5.6 su 10) e ha rilasciato un aggiornamento del firmware e SDK per l'ambiente SGX, in cui ha tentato di bloccare il tentativo di attacco. I metodi d'attacco proposti sono attualmente applicabili solo ai processori Intel, ma non si esclude la possibilità di adattare l'LVI anche ad altri processori sui quali si possono applicare attacchi della classe Meltdown.

Il problema è stato individuato nell'aprile dello scorso anno dal ricercatore Jo Van Bulck dell'Università di Leuven, dopodiché, con la partecipazione di 9 ricercatori di altre università, sono stati sviluppati cinque metodi di attacco di base, ognuno dei quali ammette l'esistenza di varianti più specifiche varianti. Indipendentemente, a febbraio di quest'anno i ricercatori della Bitdefender hanno anche sono stati scoperti una delle varianti di attacco LVI e ne hanno riferito in Intel. Le varianti di attacco si differenziano per l'uso di diverse strutture microarchitettoniche, come buffer di memorizzazione (SB, Store Buffer), buffer di riempimento (LFB, Line Fill Buffer), buffer di cambio contesto FPU e cache di primo livello (L1D), precedentemente utilizzate in attacchi come ZombieLoad, RIDL, Fallout, LazyFP, Foreshadow e Meltdown.

LVI - nuova classe di attacchi al meccanismo di esecuzione speculativa nella CPU

La principale differenza tra LVI e gli attacchi MDS è che MDS manipola la definizione del contenuto delle strutture microarchitettoniche che rimangono nella cache dopo l'elaborazione speculativa delle eccezioni (fault) o delle operazioni di caricamento e memorizzazione, mentre
gli attacchi LVI consentono di ottenere la sostituzione dei dati dell'attaccante nelle strutture microarchitettoniche per influenzare l'esecuzione speculativa successiva del codice della vittima. Attraverso queste manipolazioni, l'attaccante può estrarre il contenuto delle strutture dati riservate in altri processi durante l'esecuzione di un determinato codice sul nucleo CPU target.

LVI - nuova classe di attacchi al meccanismo di esecuzione speculativa nella CPU

Per sfruttamento del problema nel codice del processo vittima devono presentarsi sequences di codice speciali (gadgets), in cui viene caricato un valore controllato dall'attaccante, e il caricamento di questo valore porta a generare eccezioni (fault, abort o assist) che scartano il risultato e rieseguono l'istruzione. Durante la gestione delle eccezioni, si verifica una finestra speculativa in cui avviene la fuga dei dati elaborati nel gadget. In particolare, il processore inizia a eseguire in modalità speculativa un pezzo di codice (gadget), poi determina che la previsione non è stata confermata e annulla le operazioni nello stato iniziale, ma i dati elaborati durante l'esecuzione speculativa rimangono nella cache L1D e nei buffer microarchitettonici e sono accessibili per l'estrazione utilizzando i noti metodi di determinazione dei dati residui tramite canali laterali.

L'eccezione «assist», a differenza di «fault», è gestita all'interno del processore senza l'intervento di gestori di eccezioni software. L'assist può verificarsi, ad esempio, quando è necessario aggiornare il bit A (Accessed) o D (Dirty) nella tabella delle pagine della memoria. La principale difficoltà nell'eseguire un attacco ad altri processi è come innescare l'assist manipolando il processo vittima. Attualmente non esistono modi affidabili per farlo, ma in futuro potrebbe non essere esclusa la loro scoperta. La possibilità di eseguire attacchi è attualmente confermata solo per gli enclave Intel SGX; gli altri scenari sono teorici o riproducibili in condizioni sintetiche (è necessario aggiungere determinati gadget al codice).

LVI - nuova classe di attacchi al meccanismo di esecuzione speculativa nella CPU

LVI - nuova classe di attacchi al meccanismo di esecuzione speculativa nella CPU

Vettori di attacco possibili:

  • Fuga di dati dalle strutture del kernel al processo a livello utente. La protezione esistente nel kernel Linux contro gli attacchi della classe Spectre 1, così come il meccanismo di protezione SMAP (Supervisor Mode Access Prevention), riducono significativamente la probabilità di un attacco LVI. Potrebbe essere necessaria un'ulteriore protezione nel kernel se in futuro si rivelassero metodi più semplici per eseguire attacchi LVI.
  • Fuga di dati tra diversi processi. Per l'attacco è necessaria la presenza di determinati frammenti di codice nell'applicazione e la definizione del metodo di innesco dell'eccezione nel processo target.
  • Fuga di dati dall'ambiente host nel sistema guest. L'attacco è classificato come troppo complesso, richiedendo l'esecuzione di vari passaggi difficili da realizzare e previsioni sull'attività nel sistema.
  • Fuga di dati tra processi in diversi sistemi guest. Il vettore d'attacco è simile a un'organizzazione di fuga di dati tra diversi processi, ma richiede ulteriori operazioni complesse per aggirare l'isolamento tra sistemi guest.

I ricercatori hanno pubblicato alcune prototipi con dimostrazione dei principi di esecuzione dell'attacco, ma non sono ancora utilizzabili per effettuare attacchi reali. Il primo esempio consente di reindirizzare l'esecuzione speculativa del codice nel processo vittima, analogamente alla programmazione orientata al ritorno (ROP, il Return-Oriented Programming). In questo esempio, la vittima è un processo appositamente preparato, contenente i gadget necessari (l'applicazione dell'attacco a processi third-party reali è difficile). Il secondo esempio consente di infiltrarsi nei calcoli durante la cifratura AES all'interno dell'enclave Intel SGX e organizzare una fuga di dati durante l'esecuzione speculativa delle istruzioni per recuperare il valore utilizzato per cifrare la chiave.


Guarda il video

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster