LVI je nová třída útoků na mechanismus spekulativního provádění v CPU

Publikováno informace o nové třídě útoků HVAC (Injekce hodnoty zatížení, CVE-2020-0551) o mechanismu spekulativního provádění v procesorech Intel, který lze použít k úniku klíčů a tajných dat z enkláv Intel SGX a dalších procesů.

Nová třída útoků je založena na manipulaci se stejnými mikroarchitektonickými strukturami používanými při útocích MDS (Vzorkování mikroarchitekturních dat), Spectre a Meltdown. Nové útoky přitom nejsou blokovány stávajícími způsoby ochrany proti Meltdown, Spectre, MDS a dalším podobným útokům. Efektivní ochrana LVI vyžaduje hardwarové změny CPU. Při programové organizaci ochrany, přidáním instrukce LFENCE kompilátorem po každé operaci načtení z paměti a nahrazením instrukce RET POP, LFENCE a JMP, je zaznamenána příliš velká režie - podle výzkumníků povede kompletní ochrana softwaru ke snížení výkon 2-19krát.

Část obtížnosti při blokování problému je kompenzována skutečností, že útok je v současnosti spíše teoretický než praktický (útok je teoreticky možný, ale velmi obtížně realizovatelný a reprodukovatelný pouze v syntetických testech).
Intel přivlastnil problém má střední úroveň nebezpečí (5.6 z 10) a uvolněno aktualizaci firmwaru a SDK pro prostředí SGX, ve kterém se pokusil zablokovat útok pomocí workaround. Navržené způsoby útoku jsou zatím použitelné pouze pro procesory Intel, ale nelze vyloučit možnost přizpůsobení LVI pro další procesory, na které jsou útoky třídy Meltdown aplikovatelné.

Problém identifikoval loni v dubnu výzkumník Jo Van Bulck z univerzity v Lovani, načež bylo za účasti 9 výzkumníků z jiných univerzit vyvinuto pět základních metod útoku, z nichž každá umožňuje existenci specifičtějších možnosti. Nezávisle na tom v únoru tohoto roku také výzkumníci z Bitdefenderu objevil jednu z variant útoku LVI a nahlásil to Intelu. Varianty útoku se vyznačují použitím různých mikroarchitektonických struktur, jako je vyrovnávací paměť úložiště (SB, Store Buffer), vyrovnávací vyrovnávací paměť (LFB, Line Fill Buffer), vyrovnávací paměť pro přepínání kontextu FPU a mezipaměť první úrovně (L1D), které se dříve používaly. při útocích jako např ZombieLoad, RIDL, Spad, LínýFP, Předvídat и Meltdown.

LVI je nová třída útoků na mechanismus spekulativního provádění v CPU

Hlavní vyznamenání LVI proti útokům MDS spočívá v tom, že MDS manipuluje s definicí obsahu mikroarchitektonických struktur, které zůstávají v mezipaměti po spekulativním zpracování výjimek (chybě) nebo operacích načítání a ukládání, zatímco
Útoky LVI umožňují vložit data útočníka do mikroarchitektonických struktur, aby ovlivnily následné spekulativní provádění kódu oběti. Pomocí těchto manipulací může útočník extrahovat obsah soukromých datových struktur v jiných procesech při provádění určitého kódu na jádru cílového CPU.

LVI je nová třída útoků na mechanismus spekulativního provádění v CPU

pro problém vykořisťování v kodexu procesu oběti by se měl setkat speciální sekvence kódu (gadgetů), ve kterých je načtena hodnota řízená útočníkem, a načtení této hodnoty způsobí vyvolání výjimek (chyba, přerušení nebo pomoc), zahození výsledku a opětovné provedení instrukce. Po zpracování výjimky se objeví spekulativní okno, během kterého uniknou data zpracovaná v gadgetu. Zejména procesor začne provádět část kódu (gadget) ve spekulativním režimu, pak zjistí, že předpověď nebyla oprávněná a vrátí operace do původního stavu, ale data zpracovaná během spekulativního provádění jsou uložena do mezipaměti L1D. a mikroarchitektonické vyrovnávací paměti a je k dispozici pro vyhledávání z nich pomocí známých metod pro určování zbytkových dat prostřednictvím kanálů třetích stran.

Výjimku „asist“ na rozdíl od výjimky „chyba“ zpracovává interně procesor bez volání softwarových obslužných programů. Pomoc může nastat například tehdy, když je potřeba aktualizovat bit A (Accessed) nebo D (Dirty) v tabulce stránek paměti. Hlavním problémem při provádění útoku na jiné procesy je způsob, jak iniciovat výskyt asistence manipulací s procesem oběti. V současné době neexistují žádné spolehlivé způsoby, jak toho dosáhnout, ale je možné, že se v budoucnu najdou. Možnost provedení útoku byla zatím potvrzena pouze pro enklávy Intel SGX, další scénáře jsou teoretické nebo reprodukovatelné v syntetických podmínkách (vyžaduje přidání určitých gadgetů do kódu)

LVI je nová třída útoků na mechanismus spekulativního provádění v CPU

LVI je nová třída útoků na mechanismus spekulativního provádění v CPU

Možné vektory útoku:

  • Únik dat ze struktur jádra do procesu na uživatelské úrovni. Ochrana linuxového jádra proti útokům Spectre 1 a také ochranný mechanismus SMAP (Supervisor Mode Access Prevention) výrazně snižují pravděpodobnost útoku LVI. Pokud budou v budoucnu identifikovány jednodušší metody útoku na LVI, může být nutné přidat do jádra další ochranu.
  • Únik dat mezi různými procesy. Útok vyžaduje přítomnost určitých částí kódu v aplikaci a definici metody pro vyvolání výjimky v cílovém procesu.
  • Únik dat z hostitelského prostředí do hostujícího systému. Útok je klasifikován jako příliš složitý, vyžaduje různé obtížně realizovatelné kroky a predikce aktivity v systému.
  • Únik dat mezi procesy v různých hostujících systémech. Vektor útoku se blíží organizaci úniku dat mezi různými procesy, ale navíc vyžaduje složité manipulace, aby se obešla izolace mezi hostovanými systémy.

Publikováno badateli někteří prototypy s ukázkou zásad provedení útoku, ale k provádění skutečných útoků se zatím nehodí. První příklad umožňuje přesměrovat spekulativní provádění kódu v procesu oběti, podobně jako programování orientované na návrat (ROPprogramování orientované na návrat). V tomto příkladu je obětí speciálně připravený proces obsahující potřebné miniaplikace (aplikování útoku na skutečné procesy třetích stran je obtížné). Druhý příklad nám umožňuje zasahovat do výpočtů během šifrování AES uvnitř enklávy Intel SGX a organizovat únik dat během spekulativního provádění instrukcí k obnovení hodnoty klíče použitého pro šifrování.


Zdroj: opennet.ru

Přidat komentář