Atacul asupra Intel SGX pentru a extrage date sensibile sau a executa cod în enclavă

Cercetătorii de la Universitatea de Știință și Tehnologie pentru Apărare al Armatei de Eliberare a Poporului, Universitatea Națională din Singapore și ETH Zurich au dezvoltat o nouă metodă de atacare a enclavelor izolate Intel SGX (Software Guard eXtensions). Atacul se numește SmashEx și este cauzat de probleme cu reintrarea la gestionarea situațiilor de excepție în timpul funcționării componentelor de rulare pentru Intel SGX. Metoda de atac propusă face posibilă, dacă aveți control asupra sistemului de operare, să determinați datele confidențiale aflate în enclavă sau să organizați copierea codului dumneavoastră în memoria enclavei și execuția acesteia.

Au fost pregătite prototipuri de exploatare pentru enclave cu timp de execuție bazate pe Intel SGX SDK (CVE-2021-0186) și Microsoft Open Enclave (CVE-2021-33767). În primul caz, a fost demonstrată capacitatea de a extrage o cheie RSA folosită pe un server web pentru HTTPS, iar în al doilea, a fost posibilă determinarea conținutului obținut de utilitarul cURL care rulează în interiorul enclavei. Vulnerabilitatea a fost deja abordată în mod programatic în versiunile Intel SGX SDK 2.13 și Open Enclave 0.17.1. Pe lângă Intel SGX SDK și Microsoft Open Enclave, vulnerabilitatea apare și în Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX și Veracruz.

Să ne amintim că tehnologia SGX (Software Guard Extensions) a apărut în a șasea generație de procesoare Intel Core (Skylake) și oferă o serie de instrucțiuni care permit aplicațiilor la nivel de utilizator să aloce zone de memorie închise - enclave, al căror conținut nu poate fi citit și modificat chiar și de kernel și codul executat în modurile ring0, SMM și VMM. Este imposibil să transferați controlul către codul din enclavă folosind funcții tradiționale de salt și manipulări cu registre și stiva - noile instrucțiuni special create EENTER, EEXIT și ERESUME sunt folosite pentru a transfera controlul în enclavă, care efectuează verificări de autoritate. În acest caz, codul plasat în enclavă poate folosi metode clasice de apelare pentru a accesa funcțiile din interiorul enclavei și instrucțiuni speciale pentru a apela funcții externe. Criptarea memoriei Enclave este utilizată pentru a proteja împotriva atacurilor hardware, cum ar fi conectarea la un modul DRAM.

Atacul asupra Intel SGX pentru a extrage date sensibile sau a executa cod în enclavă

Problema este că tehnologia SGX permite sistemului de operare să abandoneze o enclavă prin lansarea unei excepții hardware, iar enclavele nu implementează corect primitive pentru gestionarea atomică a acestor excepții. Spre deosebire de nucleul sistemului de operare și de aplicațiile obișnuite, codul din enclave nu are acces la primitive pentru organizarea acțiunilor atomice atunci când gestionează excepții aruncate asincron. Fără primitivele atomice specificate, enclava poate fi întreruptă în orice moment și revenită la execuție, chiar și în momentele în care enclava execută secțiuni critice și se află într-o stare nesigură (de exemplu, când registrele CPU nu sunt salvate/restaurate).

Atacul asupra Intel SGX pentru a extrage date sensibile sau a executa cod în enclavă

Pentru funcționarea normală, tehnologia SGX permite ca execuția enclavei să fie întreruptă de excepții hardware configurabile. Această caracteristică permite mediilor de rulare a enclavei să implementeze gestionarea excepțiilor sau procesarea semnalului în interiorul enclavei, dar poate provoca și erori de reintrare. Atacul SmashEx se bazează pe exploatarea defectelor din SDK-ul din cauza cărora situația reapelării gestionarului de excepții nu este gestionată corespunzător. Este important ca, pentru a exploata vulnerabilitatea, atacatorul trebuie să poată întrerupe execuția enclavei, adică. trebuie să controleze funcționarea mediului de sistem.

După ce a lansat o excepție, atacatorul primește o mică fereastră de timp în care firul de execuție poate fi interceptat prin manipularea parametrilor de intrare. În special, dacă aveți acces la sistem (mediu din afara enclavei), puteți crea o nouă excepție imediat după executarea instrucțiunii de introducere a enclavei (EENTER), care va returna controlul sistemului într-o etapă în care configurarea stivei pentru enclava nu a fost încă finalizată, în care se salvează și starea registrelor CPU.

Apoi, sistemul poate returna controlul înapoi la enclavă, dar, deoarece stiva enclavei nu a fost configurată în momentul întreruperii, enclava se va executa cu stiva care se află în memoria sistemului, care poate fi folosită pentru a utiliza programarea orientată spre returnare (ROP). ) tehnici de exploatare.Programare Orientată). Când folosește tehnica ROP, atacatorul nu încearcă să-și plaseze codul în memorie, ci operează pe bucăți de instrucțiuni ale mașinii deja disponibile în bibliotecile încărcate, care se termină cu o instrucțiune de returnare a controlului (de regulă, acestea sunt capetele funcțiilor bibliotecii) . Munca exploit-ului se rezumă la construirea unui lanț de apeluri către blocuri similare („gadget”) pentru a obține funcționalitatea dorită.

Atacul asupra Intel SGX pentru a extrage date sensibile sau a executa cod în enclavă
Atacul asupra Intel SGX pentru a extrage date sensibile sau a executa cod în enclavă


Sursa: opennet.ru

Adauga un comentariu