LVI este o nouă clasă de atacuri asupra mecanismului de execuție speculativă din CPU

Publicat informații despre o nouă clasă de atacuri LVI (Injectarea valorii de încărcare, CVE-2020-0551) privind mecanismul de execuție speculativă în procesoarele Intel, care poate fi folosit pentru a scurge chei și date secrete din enclavele Intel SGX și din alte procese.

O nouă clasă de atacuri se bazează pe manipularea acelorași structuri microarhitecturale utilizate în atacuri MDS (Eșantionare de date microarhitecturale), Spectrul și Meltdown. În același timp, noile atacuri nu sunt blocate de metodele existente de protecție împotriva Meltdown, Spectre, MDS și alte atacuri similare. Protecția LVI eficientă necesită modificări hardware ale procesorului. Atunci când se organizează protecția în mod programatic, prin adăugarea instrucțiunii LFENCE de către compilator după fiecare operație de încărcare din memorie și înlocuirea instrucțiunii RET cu POP, LFENCE și JMP, se înregistrează prea mult overhead - conform cercetătorilor, protecția completă a software-ului va duce la o scădere a performanță de 2-19 ori.

O parte din dificultatea de a bloca problema este compensată de faptul că atacul este în prezent mai mult teoretic decât practic (atacul este posibil teoretic, dar foarte greu de implementat și reproductibil doar în teste sintetice).
Intel însuşit problema are un nivel moderat de pericol (5.6 din 10) și a lansat actualizarea firmware-ului și SDK-ului pentru mediul SGX, în care a încercat să blocheze atacul folosind o soluție. Metodele de atac propuse sunt aplicabile în prezent doar procesoarelor Intel, dar posibilitatea de a adapta LVI pentru alte procesoare cărora li se aplică atacurile Meltdown class nu poate fi exclusă.

Problema a fost identificată în aprilie anul trecut de către cercetătorul Jo Van Bulck de la Universitatea din Leuven, după care, cu participarea a 9 cercetători din alte universități, au fost dezvoltate cinci metode de atac de bază, fiecare dintre acestea permițând existența unor metode mai specifice. Opțiuni. În mod independent, în februarie a acestui an, cercetătorii de la Bitdefender descoperit una dintre variantele de atac LVI și a raportat-o ​​la Intel. Variantele de atac se disting prin utilizarea diferitelor structuri microarhitecturale, cum ar fi tamponul de stocare (SB, Store Buffer), tamponul de umplere (LFB, Line Fill Buffer), tamponul de comutare context FPU și cache de prim nivel (L1D), utilizate anterior în atacuri precum ZombieLoad, RIDL, Fallout, LazyFP, Prefigura и Meltdown.

LVI este o nouă clasă de atacuri asupra mecanismului de execuție speculativă din CPU

Principalul onoruri LVI împotriva atacurilor MDS este că MDS manipulează determinarea conținutului structurilor microarhitecturale rămase în cache după manipularea speculativă a erorilor sau operațiunile de încărcare și stocare, în timp ce
Atacurile LVI permit ca datele atacatorului să fie inserate în structuri microarhitecturale pentru a influența execuția speculativă ulterioară a codului victimei. Folosind aceste manipulări, un atacator poate extrage conținutul structurilor de date private în alte procese atunci când execută un anumit cod pe miezul CPU țintă.

LVI este o nouă clasă de atacuri asupra mecanismului de execuție speculativă din CPU

Pentru problema de exploatare în codul procesului de victimă ar trebui să se întâlnească secvențe speciale de cod (gadget) în care este încărcată o valoare controlată de atacator, iar încărcarea acestei valori determină să fie aruncate excepții (defecțiune, anulare sau asistență), eliminând rezultatul și reexecutând instrucțiunea. Când este procesată o excepție, apare o fereastră speculativă în care datele procesate în gadget se scurg. În special, procesorul începe să execute o bucată de cod (gadget) în modul speculativ, apoi determină că predicția nu a fost justificată și face înapoi operațiunile la starea lor inițială, dar datele procesate în timpul execuției speculative sunt depozitate în memoria cache L1D. și tampoane microarhitecturale și este disponibil pentru extragere din acestea folosind metode cunoscute pentru determinarea datelor reziduale prin canale terțe.

Excepția „asistență”, spre deosebire de excepția „defecțiune”, este gestionată intern de procesor, fără a apela manipulanții software. Asistența poate apărea, de exemplu, atunci când bitul A (accesat) sau D (murdar) din tabelul paginii de memorie trebuie actualizat. Principala dificultate în efectuarea unui atac asupra altor procese este modul de a iniția apariția asistenței prin manipularea procesului victimei. În prezent, nu există modalități fiabile de a face acest lucru, dar este posibil ca acestea să fie găsite în viitor. Posibilitatea de a efectua un atac a fost confirmată până acum doar pentru enclavele Intel SGX, alte scenarii sunt teoretice sau reproductibile în condiții sintetice (necesită adăugarea anumitor gadget-uri la cod)

LVI este o nouă clasă de atacuri asupra mecanismului de execuție speculativă din CPU

LVI este o nouă clasă de atacuri asupra mecanismului de execuție speculativă din CPU

Posibilii vectori de atac:

  • Scurgerea datelor din structurile kernelului în procesul la nivel de utilizator. Protecția nucleului Linux împotriva atacurilor Spectre 1, precum și mecanismul de protecție SMAP (Supervisor Mode Access Prevention) reduc semnificativ probabilitatea unui atac LVI. Adăugarea de protecție suplimentară la nucleu poate fi necesară dacă în viitor sunt identificate metode de atac LVI mai simple.
  • Scurgeri de date între diferite procese. Atacul necesită prezența anumitor bucăți de cod în aplicație și definirea unei metode de aruncare a unei excepții în procesul țintă.
  • Scurgerea datelor din mediul gazdă către sistemul oaspete. Atacul este clasificat ca fiind prea complex, necesitând diverși pași dificil de implementat și predicții ale activității în sistem.
  • Scurgeri de date între procese în diferite sisteme invitate. Vectorul de atac este aproape de organizarea scurgerii de date între diferite procese, dar necesită, în plus, manipulări complexe pentru a ocoli izolarea dintre sistemele invitate.

Publicat de cercetători unele prototipuri cu o demonstrație a principiilor efectuării unui atac, dar nu sunt încă potrivite pentru efectuarea unor atacuri reale. Primul exemplu vă permite să redirecționați execuția codului speculativ în procesul victimei, similar cu programarea orientată spre returnare (POR,Programare orientată spre întoarcere). În acest exemplu, victima este un proces special pregătit, care conține gadgeturile necesare (aplicarea unui atac asupra proceselor terțe reale este dificilă). Al doilea exemplu ne permite să interferăm cu calculele în timpul criptării AES în interiorul enclavei Intel SGX și să organizăm o scurgere de date în timpul executării speculative a instrucțiunilor pentru a restabili valoarea cheii utilizate pentru criptare.


Sursa: opennet.ru

Adauga un comentariu