Amsterdam Free University uurimisrĂŒhm on avaldanud Kasper tööriista, mis on mĂ”eldud Linuxi tuumas asuvate koodilĂ”ikude tuvastamiseks, mida saab kasutada Spektri rĂŒnnakute Ă€ra kasutamiseks, mis tulenevad protsessori spekulatiivsest koodijooksmisest. Tööriista lĂ€htekood on vabastatud Apache 2.0 litsentsi alusel.
Tuletame meelde, et selliste rĂŒnnakute, nagu Spectre v1, mis vĂ”imaldavad tuvastada mĂ€lusisaldust, teostamiseks on vajalik teatud kĂ€skude (gadĆŸettide) jĂ€rjestus privileege saanud koodis, mis viib spekulatiivse kĂ€skude tĂ€itmiseni. Protsessor alustab sarnaste gadĆŸettide tĂ€itmist spekulatiivses reĆŸiimis optimeerimise eesmĂ€rgil, seejĂ€rel tuvastab, et harude ennustus ei vastanud tĂ”ele ja tagastab toimingud algsesse olekusse, kuid spekulatiivse tĂ€itmise kĂ€igus töödeldud andmed jÀÀvad vahemĂ€lu ja mikroarhitektuursete puhverserverite sisse ning neid saab nende seest erinevate jÀÀkandmete tuvastamise meetoditega vĂ€lja tuua.
Varem kergesti kergesti valede positiivsete tulemuste tĂ”ttu Spektri haavatavuste skannimiseks mĂ”eldud tööriistad, mis pĂ”hinesid mustrite otsimisel, nĂ€itasid vĂ€ga suurt valehĂ€irete taset, jĂ€ttes samas palju tegelikke gadĆŸette tuvastamata (katsetused nĂ€itasid, et 99% selliste tööriistade tuvastatud gadĆŸettidest ei saanud rĂŒnnakuteks kasutada, ja 33% töötavatest gadĆŸettidest, mis vĂ”iksid rĂŒnnakute korral toimida, jĂ€i mĂ€rkamatuks).
Kasperi probleemsete gadĆŸettide kvaliteedi tĂ”stmiseks modelleerib haavatavusi, mida rĂŒndaja vĂ”iks iga spektrirĂŒnnaku sammu juures kasutada - modelleeritakse probleemid, mis lubavad kontrollida andmeid (nt rĂŒndaja andmete asendamine mikroarhitektuursetes struktuurides edasise spekulatiivse tĂ€itmise mĂ”jutamiseks LVI rĂŒnnakute kaudu), pÀÀseda juurde konfidentsiaalsele teabele (nt puhverserveri piiridest vĂ€ljumisel vĂ”i mĂ€lu kasutamisel pĂ€rast selle vabastamist) ning korraldada konfidentsiaalse teabe leket (nt analĂŒĂŒsides protsessori vahemĂ€lus seisundit vĂ”i kasutades MDS meetodit).

Testimise kĂ€igus seondub tuum Kasperi runtime-raamatukogudega ja kontrollide tasemega LLVM. Kontrollimise kĂ€igus simuleeritakse koodi spekulatiivset tĂ€itmist, mis on rakendatud mehhanismi checkpoint-restore abil, mis spetsiaalselt tĂ€idab vale ennustatud koodiharu, seejĂ€rel tagastub algsesse olekusse enne harude tegemist. Kasper pĂŒĂŒab ka modelleerida erinevaid tarkvaralisi ja riistvaralisi haavatavusi, analĂŒĂŒsib arhitektuurilisi ja mikroomarhitektuurilisi efekte ning viib lĂ€bi hĂ€kkimise vĂ”imalike toimingute fuzzing-testimist. TĂ€itmisvoogude analĂŒĂŒsimiseks kasutatakse Linuxi tuumale mĂ”eldud DataFlowSanitizer porti, ning fuzzing-testimiseks on kasutatud muudetud versiooni pakist syzkaller.

Linuxi tuuma skaneerimisel Kasperi abil tuvastati 1379 varem tundmatud gadgeti, mis vĂ”ivad potentsiaalselt pĂ”hjustada andmelekkeid spekulatiivsete kĂ€skude tĂ€itmise kĂ€igus. TĂ€heldatakse, et vaid osa neist vĂ”ib tegelikult esindada reaalseid probleeme, kuid selleks, et demonstreerida, et eksisteerib ka tegelik oht, mitte ainult teoreetiline, on ĂŒhe probleemse koodi katke jaoks vĂ€lja töötatud töötav prototĂŒĂŒp, mis pĂ”hjustab teabe leket tuuma mĂ€lust.
Allikas: opennet.ru
