Zranitelnost v procesorech Intel vedoucí k úniku dat prostřednictvím kanálů třetích stran

Skupina výzkumníků z čínských a amerických univerzit identifikovala novou zranitelnost v procesorech Intel, která vede k úniku informací o výsledku spekulativních operací třetí stranou, což lze využít například k organizaci skrytého komunikačního kanálu mezi procesy, popř. identifikovat úniky během Meltdown útoků.

Podstatou zranitelnosti je, že změna v registru procesoru EFLAGS, ke které dojde v důsledku spekulativního provádění instrukcí, ovlivní následnou dobu provádění instrukcí JCC (skok při splnění specifikovaných podmínek). Spekulativní operace se nedokončí a výsledek se zahodí, ale vyřazenou změnu EFLAGS lze určit analýzou doby provádění instrukcí JCC. Porovnávací operace prováděné ve spekulativním režimu před přechodem, pokud jsou úspěšné, vedou k malému zpoždění, které lze změřit a použít jako znak pro výběr obsahu.

Zranitelnost v procesorech Intel vedoucí k úniku dat prostřednictvím kanálů třetích stran

Na rozdíl od jiných podobných útoků postranním kanálem nová metoda neanalyzuje změny v přístupové době k datům uloženým v mezipaměti a datům bez mezipaměti a nevyžaduje fázi pro resetování registru EFLAGS do počátečního stavu, což ztěžuje detekci a blokování útoku. Jako ukázku vědci implementovali variantu útoku Meltdown, pomocí nové metody získat informace o výsledku spekulativní operace. Fungování metody pro organizaci úniku informací při útoku Meltdown bylo úspěšně demonstrováno na systémech s CPU Intel Core i7-6700 a i7-7700 v prostředí s Ubuntu 22.04 a linuxovým jádrem 5.15. Na systému s procesorem Intel i9-10980XE byl útok proveden pouze částečně.

Zranitelnost Meltdown je založena na skutečnosti, že během spekulativního provádění instrukcí může procesor přistupovat do oblasti soukromých dat a následně zahodit výsledek, protože nastavená oprávnění zakazují takový přístup procesu uživatele. 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ě.

V klasické verzi Meltdown, protože se pro spekulativně prováděné operace používá stejná cache jako pro normálně prováděné instrukce, je možné během spekulativního provádění nastavit v cache značky, které odrážejí obsah jednotlivých bitů v uzavřené oblasti paměti, a poté určit v normálně prováděném kódu jejich význam pomocí analýzy doby přístupu k datům uloženým v mezipaměti a datům bez mezipaměti. Nová varianta využívá změnu v registru EFLAGS jako značku úniku. V demonstraci skrytého kanálu jeden proces moduloval přenášená data, aby vytvořil podmínky pro změnu obsahu registru EFLAGS, a další proces analyzoval změnu v době provádění instrukce JCC, aby znovu vytvořil data přenášená prvním procesem.

Zdroj: opennet.ru

Přidat komentář