V procesoroch AMD založených na mikroarchitektúrach Zen+ a Zen 2 bola objavená zraniteľnosť triedy Meltdown.

Skupina výskumníkov z Technickej univerzity v Drážďanoch identifikovala zraniteľnosť (CVE-2020-12965) v procesoroch AMD založených na mikroarchitektúrach Zen+ a Zen 2, ktorá umožňuje útok triedy Meltdown. Pôvodne sa predpokladalo, že procesory AMD Zen+ a Zen 2 nie sú náchylné na zraniteľnosť Meltdown, ale výskumníci identifikovali funkciu, ktorá vedie k špekulatívnemu prístupu k chráneným pamäťovým oblastiam pri použití nekanonických virtuálnych adries.

Architektúra AMD64 používa iba prvých 48 bitov virtuálnej adresy a zvyšných 16 bitov ignoruje. Je špecifikované, že bity 48 až 63 musia vždy kopírovať hodnotu bitu 47 (rozšírenie znamienkového bitu). Ak je táto podmienka porušená a dôjde k pokusu o prístup k adrese s ľubovoľnými hodnotami horných bitov, procesor vygeneruje výnimku. Opakované vypĺňanie horných bitov spôsobí, že sa dostupný adresný priestor rozdelí na dva bloky – dolný (od 0 do 00007FFFFFFFFFFFFFF), v ktorom sú horné bity nastavené na 800000000000, a horný (od FFFF1 do FFFFFFFFFFFFFFFF), v ktorom všetky horné bity sú nastavené na XNUMX.

Adresy spadajúce do špecifikovaných blokov sa nazývajú kanonické a nesprávne adresy s ľubovoľným obsahom horných bitov sa nazývajú nekanonické. Spodný rozsah kanonických adries sa zvyčajne prideľuje procesným dátam a horný rozsah sa používa pre dáta jadra (prístup k týmto adresám z užívateľského priestoru je zablokovaný na úrovni oddelenia privilégií).

Klasická zraniteľnosť Meltdown je založená na tom, že pri špekulatívnom vykonávaní pokynov môže procesor pristupovať k súkromnej dátovej oblasti a následne zahodiť výsledok, pretože nastavené privilégiá takýto prístup z procesu používateľa zakazujú. V programe je špekulatívne vykonaný blok oddelený od hlavného kódu podmienenou vetvou, ktorá sa v reálnych podmienkach vždy spustí, ale vzhľadom na to, že podmienený príkaz používa vypočítanú hodnotu, ktorú procesor pri preemptívnom vykonávaní príkazu nepozná. kód, všetky možnosti pobočky sa vykonávajú špekulatívne.

Keďže špekulatívne vykonávané operácie používajú rovnakú vyrovnávaciu pamäť ako normálne vykonávané inštrukcie, je možné počas špekulatívneho vykonávania nastaviť značky vo vyrovnávacej pamäti, ktoré odrážajú obsah jednotlivých bitov v oblasti súkromnej pamäte, a potom v normálne vykonávanom kóde určiť ich hodnotu pomocou načasovania. analytické prístupy k údajom uloženým vo vyrovnávacej pamäti a neuloženým údajom.

Funkciou novej zraniteľnosti, ktorá ovplyvňuje procesory AMD Zen+ a Zen 2, je to, že CPU umožňujú špekulatívne operácie čítania a zápisu, ktoré pristupujú k pamäti pomocou neplatných nekanonických adries, jednoducho ignorujú horných 16 bitov. Procesor teda pri špekulatívnom vykonávaní kódu používa vždy len spodných 48 bitov a zvlášť sa kontroluje platnosť adresy. Ak sa pri preklade nekanonickej virtuálnej adresy na fyzickú adresu v asociatívnej prekladovej vyrovnávacej pamäti (TLB) zistí zhoda v kanonickej časti adresy, operácia špekulatívneho načítania vráti hodnotu bez zohľadnenia obsahu. horných 16 bitov, čo umožňuje obísť zdieľanie pamäte medzi vláknami. Následne bude operácia považovaná za neplatnú a zahodenú, no prístup do pamäte sa dokončí a dáta skončia v cache.

Počas experimentu pomocou techniky určovania obsahu vyrovnávacej pamäte FLUSH+RELOAD boli výskumníci schopní zorganizovať kanál na skrytý prenos údajov rýchlosťou 125 bajtov za sekundu. Okrem čipov AMD sa problém týka aj všetkých procesorov Intel, ktoré sú náchylné na klasickú zraniteľnosť Meltdown. Rovnaké techniky, ktoré pomáhajú blokovať útoky Meltdown, ako napríklad používanie inštrukcií LFENCE, možno použiť na ochranu pred týmto novým typom útoku. Napríklad, ak procesor Intel obsahuje hardvérovú ochranu proti Meltdown alebo má systém povolenú softvérovú ochranu, potom takéto konfigurácie nie sú náchylné na nový variant útoku.

Vedci zároveň poznamenávajú, že v porovnaní s procesormi Intel architektúra procesorov AMD obmedzuje možnosť realizácie skutočných útokov, ale nevylučuje použitie novej metódy v kombinácii s inými mikroarchitektonickými útokmi na zvýšenie ich účinnosti. Predovšetkým, navrhovaný útok neumožňuje určiť obsah pamäťových oblastí jadra a iných procesov, ale je obmedzený na možnosť získať prístup k iným vláknam toho istého programu bežiaceho v rovnakom virtuálnom pamäťovom priestore.

Keďže program bez zraniteľnosti má schopnosť získať prístup k svojim vláknam, z praktického hľadiska je táto metóda zaujímavá na obchádzanie izolácie sandboxu a organizovanie interferencie s prácou iných vlákien v programoch, ktoré umožňujú spustenie tretích strán. kódu, ako sú webové prehliadače a nástroje JIT. Výskumníci skúmali zraniteľnosť enginu JavaScript SpiderMonkey a linuxového jadra voči útoku, ale nenašli zraniteľné sekvencie kódu, ktoré by sa dali použiť na uskutočnenie útoku. Okrem útokov na aplikácie je možné túto metódu použiť aj na vynútenie neprijateľných dátových tokov medzi mikroarchitektonickými prvkami procesora pri využívaní iných mikroarchitektonických zraniteľností.

Zdroj: opennet.ru

Pridať komentár