V procesorech AMD založených na mikroarchitekturách Zen+ a Zen 2 byla objevena zranitelnost třídy Meltdown.

Skupina výzkumníků z Technické univerzity v Drážďanech identifikovala zranitelnost (CVE-2020-12965) v procesorech AMD založených na mikroarchitekturách Zen+ a Zen 2, která umožňuje útok třídy Meltdown. Původně se předpokládalo, že procesory AMD Zen+ a Zen 2 nejsou náchylné k zranitelnosti Meltdown, ale výzkumníci identifikovali funkci, která vede ke spekulativnímu přístupu k chráněným oblastem paměti při použití nekanonických virtuálních adres.

Architektura AMD64 používá pouze prvních 48 bitů virtuální adresy a zbývajících 16 bitů ignoruje. Je stanoveno, že bity 48 až 63 musí vždy kopírovat hodnotu bitu 47 (přípona bitu znaménka). Pokud je tato podmínka porušena a dojde k pokusu o přístup k adrese s libovolnými hodnotami horních bitů, procesor vygeneruje výjimku. Opakované zaplňování horních bitů způsobí, že se dostupný adresní prostor rozdělí na dva bloky – spodní (od 0 do 00007FFFFFFFFFFFFFF), ve kterém jsou horní bity nastaveny na 800000000000, a horní (od FFFF1 do FFFFFFFFFFFFFFFF), ve kterém všechny horní bity jsou nastaveny na XNUMX.

Adresy spadající do specifikovaných bloků se nazývají kanonické a nesprávné adresy s libovolným obsahem horních bitů se nazývají nekanonické. Spodní rozsah kanonických adres je obvykle přidělen pro procesní data a horní rozsah se používá pro data jádra (přístup k těmto adresám z uživatelského prostoru je blokován na úrovni oddělení oprávnění).

Klasická zranitelnost Meltdown je založena na tom, že při spekulativním provádění instrukcí se procesor může dostat do oblasti soukromých dat a výsledek pak zahodit, protože nastavená oprávnění takový přístup z procesu uživatele zakazují. V programu je spekulativně prováděný blok oddělen od hlavního kódu podmíněnou větví, která se v reálných podmínkách vždy spustí, ale vzhledem k tomu, že podmíněný příkaz používá vypočítanou hodnotu, kterou procesor při preemptivním provádění nezná kódu, všechny možnosti větve jsou prováděny spekulativně.

Protože spekulativně prováděné operace používají stejnou mezipaměť jako normálně prováděné instrukce, je možné během spekulativního provádění nastavit v mezipaměti značky, které odrážejí obsah jednotlivých bitů v oblasti soukromé paměti, a poté v normálně prováděném kódu určit jejich hodnotu pomocí časování. analytické přístupy k datům uloženým v mezipaměti a neuloženým datům.

Rysem nové zranitelnosti, která ovlivňuje procesory AMD Zen+ a Zen 2, je to, že CPU umožňují spekulativní operace čtení a zápisu, které přistupují k paměti pomocí neplatných nekanonických adres, jednoduše ignorují horních 16 bitů. Procesor tedy při spekulativním spouštění kódu používá vždy jen spodních 48 bitů a zvlášť se kontroluje platnost adresy. Pokud je při překladu nekanonické virtuální adresy na fyzickou adresu v asociativním překladovém bufferu (TLB) detekována shoda v kanonické části adresy, pak operace spekulativního načtení vrátí hodnotu bez zohlednění obsahu. horních 16 bitů, což umožňuje obejít sdílení paměti mezi vlákny. Následně bude operace považována za neplatnou a zahozena, ale přístup do paměti bude dokončen a data skončí v mezipaměti.

Během experimentu pomocí techniky určování obsahu mezipaměti FLUSH+RELOAD byli vědci schopni zorganizovat kanál pro skrytý přenos dat rychlostí 125 bajtů za sekundu. Kromě čipů AMD se problém týká i všech procesorů Intel, které jsou náchylné na klasickou zranitelnost Meltdown. K ochraně proti tomuto novému typu útoku lze použít stejné techniky, které pomáhají blokovat útoky Meltdown, jako je použití instrukcí LFENCE. Pokud například procesor Intel obsahuje hardwarovou ochranu proti Meltdown nebo má systém povolenou softwarovou ochranu, pak takové konfigurace nejsou náchylné k nové variantě útoku.

Vědci zároveň podotýkají, že ve srovnání s procesory Intel architektura procesorů AMD omezuje možnost provádění skutečných útoků, ale nevylučuje použití nové metody v kombinaci s dalšími mikroarchitektonickými útoky pro zvýšení jejich účinnosti. Navrhovaný útok zejména neumožňuje určit obsah paměťových oblastí jádra a dalších procesů, ale je omezen na možnost získat přístup k jiným vláknům stejného programu běžícího ve stejném virtuálním paměťovém prostoru.

Protože program bez zranitelnosti má schopnost získat přístup ke svým vláknům, z praktického hlediska je tato metoda zajímavá pro obcházení izolace sandboxu a organizování interference s prací jiných vláken v programech, které umožňují provádění třetích stran. kódu, jako jsou webové prohlížeče a motory JIT . Výzkumníci zkoumali zranitelnost enginu JavaScript SpiderMonkey a linuxového jádra vůči útoku, ale nenašli zranitelné sekvence kódu, které by bylo možné použít k provedení útoku. Kromě útoků na aplikace lze metodu použít také k vynucení nepřijatelných datových toků mezi mikroarchitektonickými prvky procesoru při využití dalších mikroarchitektonických zranitelností.

Zdroj: opennet.ru

Přidat komentář