TONTOU — útok na CPU Intel a AMD, umožňující obejít ochranu proti zranitelnostem Spectre v2

Výzkumníci z Massachusettského technologického institutu odhalili techniku útoku TONTOU (Time-of-Neutralization to Time-of-Use), která nabízí nový způsob zneužití mikroarchitektonických zranitelností třídy Spectre v2. Zranitelnost umožňuje určit obsah jádrové paměti během provádění exploitů ve uživatelském prostoru. Kód pro blokování zneužití zranitelnosti byl přijat do jádra Linuxu 5. srpna a je zahrnut v verzích 7.1.7, 6.18.43, 6.12.102, 6.6.149, 6.1.181, 5.15.214 a 5.10.263.

Výzkumníci demonstrovali možnost provedení útoku lokálním nezprivilegovaným uživatelem za účelem určení hash hesla uživatele root, uloženého v souboru /etc/shadow a načteného do paměti při provádění autentizace v systému. Výzkumníkům se podařilo dosáhnout úniku dat z jádrové paměti s výkonem 5,47 bajtů za sekundu a přesností 91,97 %. Z 10 testovacích spuštění exploitu, která trvala v průměru 18 minut, se v polovině případů podařilo úspěšně určit přítomnost souboru /etc/shadow v paměti a extrahovat jeho obsah.

Exploit byl demonstrován na systémech s procesory AMD a může být používán s CPU AMD rodin Zen 1-4. Na systémech Intel je útok také proveditelný, ale zneužití je složitější. K ochraně před přetečením zásobníku adres návratu a blokováním zranitelnosti SRSO (Speculative Return Stack Overflow) se v procesorech AMD používá ochranný mechanismus Safe-RET, který čistí buffer predikce skoků po každém použití a zužuje okno pro provedení útoku na 2 instrukce vykonávané během několika desítek nanosekund.

K obejití této ochrany a rozšíření okna provádění útoku byla realizována technika zpomalení CPU, která umožnila včas vykonat substituci přerušení pro přesměrování toku vykonávání v jádře a využití zpracovatele přerušení k pozměnění záznamu v bufferu předpovědi skoků. Pro využití zranitelnosti SRSO může útočník vytvořit podmínky, za kterých blok předpovědi skoků spekulativně provede velké množství nesprávně předpovězených volání CALL, dostatečné k přetečení zásobníku adres návratu a přepsání správně předpovězených bodů návratu umístěných na začátku zásobníku. V důsledku toho mohou být počáteční prvky zásobníku přepsány na hodnoty zvolené útočníkem, což povede k použití těchto nahrazených hodnot při spekulativním vykonávání instrukce RET v kontextu jiného procesu.

Procesor určí, že předpověď větvení nebyla správná, a vrátí operaci do výchozího stavu, ale zpracovaná data z procesu spekulativního vykonávání zůstanou v cache a mikroarchitektonických bufferech. Pokud chybně provedený blok provede přístup do paměti, povede jeho spekulativní vykonávání k uložení do společné cache a dat, která byla přečtena z paměti. K extrakci informací z cache může být použit jeden ze způsobů určování obsahu cache na základě analýzy změn doby přístupu k přechovávaným a nepřechovávaným datům.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster