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.

Система затем может вернуть управление обратно в анклав, но так как стек анклава во время прерывания не был настроен, анклав будет выполняться со стеком, находящимся в памяти системы, что можно использовать для применения методов эксплуатации на основе возвратно-ориентированного программирования (ROP — Return-Oriented Programming). При использовании техники ROP атакующий не пытается разместить свой код в памяти, а оперирует уже имеющимися в загруженных библиотеках кусками машинных инструкций, завершающихся инструкцией возврата управления (как правило, это окончания библиотечных функций). Работа эксплоита сводится к построению цепочки вызовов подобных блоков («гаджетов») для получения нужной функциональности.

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, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster