Kasper, skener pre problémy so špekulatívnym spúšťaním kódu v linuxovom jadre, je teraz k dispozícii

Tím výskumníkov z Free University of Amsterdam zverejnil súpravu nástrojov Kasper, ktorá je určená na identifikáciu útržkov kódu v jadre Linuxu, ktoré možno použiť na zneužitie zraniteľností triedy Spectre spôsobených špekulatívnym spúšťaním kódu na procesore. Zdrojový kód sady nástrojov je distribuovaný pod licenciou Apache 2.0.

Pripomeňme, že na vykonávanie útokov typu Spectre v1, ktoré umožňujú určiť obsah pamäte, je potrebná prítomnosť určitej sekvencie príkazov (gadgetov) v privilegovanom kóde, čo vedie k špekulatívnemu vykonávaniu pokynov. . Na účely optimalizácie začne procesor vykonávať takéto miniaplikácie v špekulatívnom režime, potom zistí, že predikcia vetvenia nebola opodstatnená a vráti operácie do pôvodného stavu, ale údaje spracované počas špekulatívneho vykonávania skončia vo vyrovnávacej pamäti a mikroarchitektonických vyrovnávacích pamätiach a je k dispozícii na získanie z nich pomocou rôznych metód určovania zvyškových údajov prostredníctvom kanálov tretích strán.

Predtým dostupné nástroje na skenovanie modulov gadget na zraniteľnosť Spectre, založené na vyhľadávaní typických vzorov, vykazovali veľmi vysokú úroveň falošných poplachov, pričom chýbali mnohé skutočné moduly gadget (experimenty ukázali, že 99 % modulov gadget identifikovaných takýmito nástrojmi nebolo možné použiť na útoky a 33 % funkčných zariadení, ktoré by mohli viesť k útoku, nebolo zaznamenaných).

Aby sa zlepšila kvalita identifikácie problematických modulov gadget, Kasper modeluje zraniteľnosti, ktoré môže útočník zneužiť v každom kroku vykonávania útokov triedy Spectre – modelujú sa problémy, ktoré umožňujú kontrolu údajov (napríklad nahradenie údajov útočníka do mikroarchitektonických štruktúr s cieľom ovplyvniť následné špekulatívne vykonávanie pomocou útoky triedy LVI), získať prístup k dôverným informáciám (napríklad pri prekročení hraníc vyrovnávacej pamäte alebo pri použití pamäte po jej uvoľnení) a úniku dôverných informácií (napríklad analýzou stavu vyrovnávacej pamäte procesora alebo použitím metódy MDS).

Kasper, skener pre problémy so špekulatívnym spúšťaním kódu v linuxovom jadre, je teraz k dispozícii

Pri testovaní je jadro prepojené s runtime knižnicami Kasper a kontroly bežia na úrovni LLVM. Proces kontroly emuluje špekulatívne spustenie kódu implementované pomocou mechanizmu obnovy kontrolného bodu, ktorý špecificky vykoná nesprávne predpovedanú vetvu kódu a potom sa vráti späť do pôvodného stavu pred začiatkom vetvy. Kasper sa tiež pokúša simulovať rôzne softvérové ​​a hardvérové ​​zraniteľnosti, analyzuje vplyv architektonických a mikroarchitektonických efektov a vykonáva fuzz testovanie možných akcií útočníkov. Na analýzu tokov vykonávania sa používa port DataFlowSanitizer pre jadro Linuxu a na testovanie fuzzingu sa používa upravená verzia balíka syzkaller.

Kasper, skener pre problémy so špekulatívnym spúšťaním kódu v linuxovom jadre, je teraz k dispozícii

Skenovanie linuxového jadra pomocou Kasper identifikovalo 1379 XNUMX predtým neznámych gadgetov, ktoré potenciálne vedú k úniku dát počas špekulatívneho vykonávania pokynov. Je potrebné poznamenať, že možno len niektoré z nich môžu predstavovať skutočné problémy, ale aby sa demonštrovalo, že existuje skutočné nebezpečenstvo, a nie len teoretické, bol pre jeden z problematických fragmentov kódu vyvinutý funkčný prototyp exploitu, ktorý vedie k informáciám. únik z pamäte jadra.

Zdroj: opennet.ru

Pridať komentár