Kasper, skener pro spekulativní problémy s prováděním kódu v linuxovém jádře, je nyní k dispozici

Tým výzkumníků z Free University of Amsterdam zveřejnil sadu nástrojů Kasper navrženou k identifikaci úryvků kódu v linuxovém jádře, které lze použít ke zneužití zranitelností třídy Spectre způsobených spekulativním spouštěním kódu na procesoru. Zdrojový kód sady nástrojů je distribuován pod licencí Apache 2.0.

Připomeňme, že k provádění útoků typu Spectre v1, které umožňují určit obsah paměti, je v privilegovaném kódu vyžadována přítomnost určité sekvence příkazů (gadgetů), což vede ke spekulativnímu provádění instrukcí . Pro účely optimalizace začne procesor spouštět takové gadgety ve spekulativním režimu, pak zjistí, že předpověď větvení nebyla oprávněná a vrátí operace do původního stavu, ale data zpracovaná během spekulativního provádění skončí v mezipaměti a mikroarchitektonických bufferech a je k dispozici pro získání z nich pomocí různých metod určujících zbytková data prostřednictvím kanálů třetích stran.

Dříve dostupné nástroje pro skenování gadgetů na zranitelnost Spectre, založené na vyhledávání typických vzorů, vykazovaly velmi vysokou úroveň falešných poplachů, zatímco postrádaly mnoho skutečných gadgetů (experimenty ukázaly, že 99 % gadgetů identifikovaných takovými nástroji nelze použít k útokům a 33 % funkčních gadgetů, které by mohly vést k útoku, nebylo zaznamenáno).

Aby se zlepšila kvalita identifikace problematických gadgetů, Kasper modeluje zranitelnosti, které může útočník zneužít v každém kroku provádění útoků třídy Spectre – jsou modelovány problémy, které umožňují kontrolu dat (například nahrazení dat útočníka do mikroarchitektonických struktur za účelem ovlivnění následného spekulativního provádění pomocí útoky třídy LVI), získání přístupu k důvěrným informacím (například při překročení hranic vyrovnávací paměti nebo použití paměti po jejím uvolnění) a úniku důvěrných informací (například analýzou stavu mezipaměti procesoru nebo použitím metody MDS).

Kasper, skener pro spekulativní problémy s prováděním kódu v linuxovém jádře, je nyní k dispozici

Při testování je jádro propojeno s runtime knihovnami Kasper a kontroly běží na úrovni LLVM. Proces kontroly emuluje spekulativní spouštění kódu implementované pomocí mechanismu obnovy kontrolních bodů, který specificky provádí nesprávně předpovězenou větev kódu, a poté se vrátí zpět do původního stavu před začátkem větvení. Kasper se také pokouší simulovat různé softwarové a hardwarové zranitelnosti, analyzuje dopad architektonických a mikroarchitektonických efektů a provádí fuzz testování možných akcí útočníků. K analýze spouštěcích toků se používá port DataFlowSanitizer pro linuxové jádro a pro fuzzing testování se používá upravená verze balíčku syzkaller.

Kasper, skener pro spekulativní problémy s prováděním kódu v linuxovém jádře, je nyní k dispozici

Skenování linuxového jádra pomocí Kasper identifikovalo 1379 XNUMX dříve neznámých gadgetů, které potenciálně vedou k úniku dat během spekulativního provádění instrukcí. Je třeba poznamenat, že možná jen některé z nich mohou představovat skutečné problémy, ale aby se ukázalo, že existuje skutečné nebezpečí, a nejen teoretické, byl pro jeden z problematických fragmentů kódu vyvinut funkční prototyp exploitu, který vede k informacím únik z paměti jádra.

Zdroj: opennet.ru

Přidat komentář