Attacco a Intel SGX, che consente di estrarre dati riservati o eseguire codice all'interno dell'enclave

I ricercatori della Università di Scienza e Tecnologia della Difesa dell'Esercito Popolare Cinese, dell'Università Nazionale di Singapore e del Politecnico Federale di Zurigo hanno sviluppato un nuovo metodo di attacco agli enclave isolate di Intel SGX (Software Guard eXtensions). L'attacco è stato denominato SmashEx e deriva da problemi di ri-entrabilità nella gestione delle eccezioni durante il funzionamento dei componenti runtime per Intel SGX. Il metodo di attacco proposto consente, in presenza di controllo del sistema operativo, di identificare i dati riservati memorizzati nell'enclave o di organizzare la copia del proprio codice in memoria dell'enclave per la sua esecuzione.

I prototipi degli exploit sono stati preparati per enclave con runtime basato su Intel SGX SDK (CVE-2021-0186) e Microsoft Open Enclave (CVE-2021-33767). Nel primo caso, è stata dimostrata la possibilità di estrazione della chiave RSA utilizzata su un server web per HTTPS, mentre nel secondo è stato possibile determinare il contenuto ottenuto dall'utilità cURL eseguita all'interno dell'enclave. La vulnerabilità è già stata risolta tramite aggiornamenti nei rilasci di Intel SGX SDK 2.13 e Open Enclave 0.17.1. Oltre ai pacchetti Intel SGX SDK e Microsoft Open Enclave, la vulnerabilità si manifesta anche nell'SDK Google Asylo, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX e Veracruz.

Ricordiamo che la tecnologia SGX (Software Guard Extensions) è stata introdotta nei processori Intel Core di sesta generazione (Skylake) e offre una serie di istruzioni che consentono di riservare aree di memoria protette per le applicazioni a livello utente — enclave, il cui contenuto non può essere letto o modificato nemmeno dal kernel e dal codice in esecuzione nelle modalità ring0, SMM e VMM. Passare il controllo al codice all'interno dell'enclave non è possibile con le funzioni di transizione tradizionali e con le manipolazioni di registri e stack — per trasferire il controllo nell'enclave vengono utilizzate nuove istruzioni create appositamente, EENTER, EEXIT e ERESUME, che effettuano controlli di autorizzazione. Inoltre, il codice collocato nell'enclave può utilizzare metodi di invocazione classici per accedere alle funzioni all'interno dell'enclave e una istruzione speciale per richiamare funzioni esterne. Per proteggere da attacchi hardware, come l'accesso ai moduli DRAM, viene utilizzata la crittografia della memoria dell'enclave.

Attacco a Intel SGX, che consente di estrarre dati riservati o eseguire codice all'interno dell'enclave

Il problema è legato al fatto che la tecnologia SGX consente al sistema operativo di interrompere l'esecuzione dell'enclave generando un'eccezione hardware, mentre all'interno delle enclave non sono implementati correttamente i primitivi per la gestione atomica di tali eccezioni. A differenza del kernel del sistema operativo e delle normali applicazioni, il codice all'interno delle enclave non ha accesso ai primitivi per organizzare azioni atomiche durante la gestione delle eccezioni che si verificano in modo asincrono. Senza i suddetti primitivi atomici, l'enclave può essere interrotta in qualsiasi momento e ripresa, anche nei momenti in cui sono in esecuzione sezioni critiche e si trova in uno stato non sicuro (ad esempio, quando i registri della CPU non sono stati salvati/ripristinati).

Attacco a Intel SGX, che consente di estrarre dati riservati o eseguire codice all'interno dell'enclave

Per un funzionamento corretto, la tecnologia SGX consente di interrompere l'esecuzione dell'enclave tramite eccezioni hardware configurabili. Questa caratteristica permette agli ambienti runtime delle enclave di gestire le eccezioni interne all'enclave o i segnali, ma può anche provocare errori di riutilizzabilità. L'attacco SmashEx si basa sull'exploitation di difetti nell'SDK che non gestiscono correttamente la situazione di una chiamata ripetuta al gestore di eccezioni. È importante notare che, per sfruttare la vulnerabilità, l'attaccante deve essere in grado di interrompere l'esecuzione dell'enclave, ovvero deve controllare l'ambiente di sistema.

Dopo la generazione di un'eccezione, l'attaccante ottiene una breve finestra temporale in cui può intercettare il flusso di esecuzione manipolando i parametri di input. In particolare, se ha accesso al sistema (all'ambiente esterno all'enclave), è possibile generare una nuova eccezione subito dopo l'esecuzione dell'istruzione di ingresso nell'enclave (EENTER), il che porterà al ritorno del controllo al sistema in una fase in cui la configurazione dello stack per l'enclave non è ancora completata, inclusa la conservazione dello stato dei registri CPU.

Il sistema può quindi ripristinare il controllo nel enclave, ma poiché lo stack dell'enclave non è stato configurato durante l'interruzione, l'enclave verrà eseguita con lo stack presente nella memoria del sistema. Questo può essere sfruttato per applicare tecniche di sfruttamento basate sulla programmazione orientata al ritorno (ROP - Return-Oriented Programming). Utilizzando la tecnica ROP, l'attaccante non tenta di posizionare il proprio codice in memoria, ma opera con segmenti di istruzioni machine già presenti nelle librerie caricate, che terminano con un'istruzione di ritorno al controllo (solitamente le conclusioni delle funzioni di libreria). Il funzionamento dell'exploit si concentra sulla costruzione di una catena di chiamate a tali blocchi ('gadgets') per ottenere la funzionalità desiderata.

Attacco a Intel SGX, che consente di estrarre dati riservati o eseguire codice all'interno dell'enclave
Attacco a Intel SGX, che consente di estrarre dati riservati o eseguire codice all'interno dell'enclave


Fonte: opennet.ru
Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster