Zraniteľnosť v procesoroch Intel vedúca k úniku údajov cez kanály tretích strán

Skupina výskumníkov z čínskych a amerických univerzít identifikovala novú zraniteľnosť v procesoroch Intel, ktorá vedie k úniku informácií o výsledku špekulatívnych operácií treťou stranou, čo sa dá využiť napríklad na organizáciu skrytého komunikačného kanála medzi procesmi resp. identifikovať úniky počas útokov Meltdown.

Podstatou zraniteľnosti je, že zmena v registri procesora EFLAGS, ku ktorej dochádza v dôsledku špekulatívneho vykonávania pokynov, ovplyvňuje následný čas vykonávania pokynov JCC (skok pri splnení špecifikovaných podmienok). Špekulatívne operácie sa nedokončia a výsledok sa zahodí, ale vyradenú zmenu EFLAGS možno určiť analýzou času vykonania pokynov JCC. Porovnávacie operácie vykonávané v špekulatívnom režime pred prechodom, ak sú úspešné, vedú k malému oneskoreniu, ktoré možno zmerať a použiť ako znak pre výber obsahu.

Zraniteľnosť v procesoroch Intel vedúca k úniku údajov cez kanály tretích strán

Na rozdiel od iných podobných útokov postranných kanálov nová metóda neanalyzuje zmeny v prístupovom čase k údajom uloženým vo vyrovnávacej pamäti a údajom bez vyrovnávacej pamäte a nevyžaduje fázu resetovania registra EFLAGS do počiatočného stavu, čo sťažuje detekciu a blokovanie útoku. Ako demonštráciu výskumníci implementovali variant útoku Meltdown pomocou novej metódy na získanie informácií o výsledku špekulatívnej operácie. Fungovanie metódy na organizovanie úniku informácií počas útoku Meltdown bolo úspešne demonštrované na systémoch s CPU Intel Core i7-6700 a i7-7700 v prostredí s Ubuntu 22.04 a linuxovým jadrom 5.15. Na systéme s procesorom Intel i9-10980XE bol útok vykonaný len čiastočne.

Zraniteľnosť Meltdown je založená na skutočnosti, že počas špekulatívneho vykonávania inštrukcií 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.

V klasickej verzii Meltdown, keďže sa na špekulatívne vykonávané operácie používa rovnaká vyrovnávacia pamäť ako na normálne vykonávané inštrukcie, je možné pri špekulatívnom vykonávaní nastaviť do vyrovnávacej pamäte značky, ktoré odrážajú obsah jednotlivých bitov v uzavretej oblasti pamäte a následne určiť v normálne vykonávanom kóde ich význam prostredníctvom analýzy času prístupu k údajom uloženým vo vyrovnávacej pamäti a údajom bez vyrovnávacej pamäte. Nový variant využíva zmenu v registri EFLAGS ako značku úniku. V demonštrácii skrytého kanála jeden proces moduloval prenášané dáta, aby sa vytvorili podmienky na zmenu obsahu registra EFLAGS, a ďalší proces analyzoval zmenu v čase vykonania inštrukcie JCC, aby znovu vytvoril dáta prenášané prvým procesom.

Zdroj: opennet.ru

Pridať komentár