LVI je nová trieda útokov na mechanizmus špekulatívneho vykonávania v CPU

Publikovaný informácie o novej triede útokov LVI (Injekcia hodnoty zaťaženia, CVE-2020 0551,) o mechanizme špekulatívneho vykonávania v procesoroch Intel, ktorý možno použiť na únik kľúčov a tajných údajov z enkláv Intel SGX a iných procesov.

Nová trieda útokov je založená na manipulácii s rovnakými mikroarchitektonickými štruktúrami, aké sa používajú pri útokoch MDS (Vzorkovanie mikroarchitektonických údajov), Spectre a Meltdown. Nové útoky zároveň nie sú blokované existujúcimi metódami ochrany proti Meltdown, Spectre, MDS a iným podobným útokom. Efektívna ochrana LVI vyžaduje hardvérové ​​zmeny CPU. Pri programovom organizovaní ochrany, pridaním inštrukcie LFENCE kompilátorom po každej operácii načítania z pamäte a nahradením inštrukcie RET za POP, LFENCE a JMP, je zaznamenaná príliš veľká réžia - podľa výskumníkov úplná ochrana softvéru povedie k zníženiu výkon 2-19 krát.

Časť ťažkostí pri blokovaní problému je kompenzovaná skutočnosťou, že útok je v súčasnosti viac teoretický ako praktický (útok je teoreticky možný, ale veľmi ťažko realizovateľný a reprodukovateľný iba v syntetických testoch).
Intel privlastnil problém má strednú úroveň nebezpečenstva (5.6 z 10) a uvoľnený aktualizáciou firmvéru a SDK pre prostredie SGX, v ktorom sa snažil zablokovať útok pomocou workaround. Navrhované spôsoby útoku sú v súčasnosti použiteľné len pre procesory Intel, ale nemožno vylúčiť možnosť prispôsobenia LVI pre iné procesory, na ktoré sú útoky triedy Meltdown aplikovateľné.

Problém identifikoval vlani v apríli výskumník Jo Van Bulck z univerzity v Leuvene, po čom sa za účasti 9 výskumníkov z iných univerzít vyvinulo päť základných metód útoku, z ktorých každá umožňuje existenciu špecifickejších možnosti. Nezávisle, vo februári tohto roku aj výskumníci z Bitdefenderu objavené jeden z variantov útoku LVI a oznámil to Intelu. Varianty útoku sa vyznačujú použitím rôznych mikroarchitektonických štruktúr, ako je predtým používaná vyrovnávacia pamäť (SB, Store Buffer), vyplňovacia vyrovnávacia pamäť (LFB, Line Fill Buffer), vyrovnávacia pamäť kontextového prepínania FPU a vyrovnávacia pamäť prvej úrovne (L1D). pri útokoch ako napr ZombieLoad, RIDL, Spad, LenivýFP, Predzvesť и Meltdown.

LVI je nová trieda útokov na mechanizmus špekulatívneho vykonávania v CPU

Hlavné vyznamenania LVI proti útokom MDS spočíva v tom, že MDS manipuluje s určením obsahu mikroarchitektonických štruktúr zostávajúcich vo vyrovnávacej pamäti po špekulatívnom spracovaní chýb alebo operáciách načítania a ukladania, zatiaľ čo
Útoky LVI umožňujú vloženie údajov útočníka do mikroarchitektonických štruktúr, aby ovplyvnili následné špekulatívne vykonávanie kódu obete. Pomocou týchto manipulácií môže útočník extrahovať obsah súkromných dátových štruktúr v iných procesoch pri vykonávaní určitého kódu na cieľovom jadre CPU.

LVI je nová trieda útokov na mechanizmus špekulatívneho vykonávania v CPU

pre problém vykorisťovania v kódexe procesu obete by sa mal stretnúť špeciálne sekvencie kódu (gadgety), v ktorých je načítaná hodnota kontrolovaná útočníkom a načítanie tejto hodnoty spôsobí, že sa vyvolajú výnimky (chyba, prerušenie alebo asistencia), výsledok sa zahodí a inštrukcia sa vykoná znova. Po spracovaní výnimky sa zobrazí špekulatívne okno, počas ktorého uniknú údaje spracované v miniaplikácii. Najmä procesor začne vykonávať časť kódu (gadget) v špekulatívnom režime, potom zistí, že predpoveď nebola oprávnená a vráti operácie do pôvodného stavu, ale údaje spracované počas špekulatívneho vykonávania sa uložia do vyrovnávacej pamäte L1D. a mikroarchitektonické vyrovnávacie pamäte a je k dispozícii na vyhľadávanie z nich pomocou známych metód na určovanie zvyškových dát prostredníctvom kanálov tretích strán.

Výnimku "asistencie" na rozdiel od výnimky "poruchy" spracováva interne procesor bez volania softvérových obslužných programov. Pomoc môže nastať napríklad vtedy, keď je potrebné aktualizovať bit A (Accessed) alebo D (Dirty) v tabuľke stránok pamäte. Hlavným problémom pri vykonávaní útoku na iné procesy je spôsob, ako iniciovať výskyt asistencie manipuláciou procesu obete. V súčasnosti neexistujú spoľahlivé spôsoby, ako to urobiť, ale je možné, že sa v budúcnosti nájdu. Možnosť vykonania útoku bola zatiaľ potvrdená len pre enklávy Intel SGX, ostatné scenáre sú teoretické alebo reprodukovateľné v syntetických podmienkach (vyžaduje pridanie určitých gadgetov do kódu)

LVI je nová trieda útokov na mechanizmus špekulatívneho vykonávania v CPU

LVI je nová trieda útokov na mechanizmus špekulatívneho vykonávania v CPU

Možné vektory útoku:

  • Únik údajov zo štruktúr jadra do procesu na úrovni používateľa. Ochrana linuxového jadra pred útokmi Spectre 1, ako aj ochranný mechanizmus SMAP (Supervisor Mode Access Prevention) výrazne znižujú pravdepodobnosť útoku LVI. Pridanie ďalšej ochrany do jadra môže byť potrebné, ak budú v budúcnosti identifikované jednoduchšie metódy útoku na LVI.
  • Únik dát medzi rôznymi procesmi. Útok vyžaduje prítomnosť určitých kúskov kódu v aplikácii a definovanie metódy na vyvolanie výnimky v cieľovom procese.
  • Únik dát z hostiteľského prostredia do hosťujúceho systému. Útok je klasifikovaný ako príliš zložitý, vyžadujúci si rôzne ťažko realizovateľné kroky a predikcie aktivity v systéme.
  • Únik dát medzi procesmi v rôznych hosťujúcich systémoch. Vektor útoku je blízko k organizovaniu úniku údajov medzi rôznymi procesmi, ale navyše vyžaduje zložité manipulácie na obídenie izolácie medzi hosťovanými systémami.

Publikované výskumníkmi niektorí prototypy s ukážkou zásad vykonania útoku, no na vykonávanie reálnych útokov zatiaľ nie sú vhodné. Prvý príklad vám umožňuje presmerovať špekulatívne spustenie kódu v procese obete, podobne ako programovanie orientované na návrat (ROPprogramovanie orientované na návrat). V tomto príklade je obeťou špeciálne pripravený proces obsahujúci potrebné miniaplikácie (aplikovanie útoku na skutočné procesy tretích strán je náročné). Druhý príklad nám umožňuje vkliniť sa do výpočtov počas šifrovania AES vo vnútri enklávy Intel SGX a zorganizovať únik údajov počas špekulatívneho vykonávania pokynov na obnovenie hodnoty kľúča použitého na šifrovanie.


Zdroj: opennet.ru

Pridať komentár