Amsterdam Free University teadlaste grupp avaldas tööriista Kasper, mille eesmärk on tuvastada Linuxi tuumas koode, mida saab kasutada Spectre klassi haavatavuste ärakasutamiseks, mida põhjustab protsessorite spekulatiivne koodide täitmine. Tööriista lähtekood on levitatud Apache 2.0 litsentsi all.
Tuletame meelde, et selliste rünnakute, nagu Spectre v1, mille abil on võimalik määrata mälu sisu, läbiviimiseks on vajalik, et privileegitud koodis oleks teatud käskude (gadgetide) järjestus, mis viib spekulatiivse käskude täitmiseni. Protsessori optimeerimise eesmärgil hakkab see spekulatiivselt täitma selliseid gadgete, seejärel tuvastab, et haru ennustamine ei õigustanud end ja tagastab toimingud algsesse seisu. Kuid spekulatiivse täitmise käigus töötlemine andmed jäävad vahemälu ja mikroarhitektuuriliste puhversüsteemide sisse ning on saadaval erinevate meetodite abil jääkandmete määramiseks kolmandate osapoolte kanalite kaudu.
Varem kergesti juurdepääsetavad seadmete skannimise tööriistad Spectre haavatavuse osas, mis põhinesid mudelite mustrite otsimisel, näitasid väga kõrget valehäirete taset, samas kui paljusid tõelisi seadmeid jäeti tähelepanuta (katsetused näitasid, et 99% nende tööriistade tuvastatud seadmetest ei saanud rünnakute jaoks kasutada ja 33% töökindlatest seadmetest, mis võiksid rünnaku põhjustada, jäi märkamatuks).
Probleemsete seadmete defineerimise kvaliteedi parandamiseks modelleerib Kasper Spectre rünnakute käigus haavatavusi, mida ründaja saab kasutada igas etapis — modelleeritakse probleemid, mis võimaldavad andmeid kontrollida (nt ründaja andmete sisestamine mikroarhitektuuri struktuuridesse, et mõjutada järgnevate spekulatiivsete täitmise rünnakute käiku), ligipääsu konfidentsiaalsetele andmetele (nt mälupiire ületades või pärast mäluaadressi vabastamist) ja konfidentsiaalsete andmete lekke korraldamist (nt protsessorikõrvaldiste seisundi analüüsimine või MDS-meetodi kasutamine).

Tuuringu ajal on tuuma side runtime-raamatukogudega Kasper ja LLVM-tasandi kontrollidega. Kontrollimise käigus simuleeritakse spekulatiivset koodi täitmist, kasutades checkpoint-restore mehhanismi, mis täidab vale ennustatud koodiharu ja seejärel naaseb algsesse olekusse enne harude teket. Kasper püüab samuti mudeldada erinevaid tarkvara- ja riistvarajõueteid, analüüsib arhitektuurilisi ja mikroarhitektuurilisi efekte ning viib läbi rünnaku simulatsiooniks fuzzy-testimist. Täitmisvoogude analüüsimiseks kasutatakse Linuxi tuuma DataFlowSanitizerit ja fuzzy-testimiseks on muudetud versioon syzkaller paketist.

Kasperi abil Linuxi tuuma skaneerimise käigus tuvastati 1379 varem tundmat gadgeti, mis võivad potentsiaalselt põhjustada andmete leket spekulatiivsete käskude täitmise käigus. Tõdetakse, et vaid osa neist võib esindada reaalseid probleeme, kuid demonstreerimiseks, et risk on olemas, mitte ainult teoreetiline, arendati ühe probleemse koodilõigu jaoks tööprototüüp, mis põhjustab teabe lekke tuuma mälust.
Allikas: opennet.ru
