Një grup hulumtuesish nga Universiteti i Lirë i Amsterdamit publikoi mjetin Kasper, i cili është i dizajnuar për të identifikuar në bërthamën Linux fragmente kodi që mund të përdoren për shfrytëzimin e dobësive të klasës Spectre, të shkaktuara nga ekzekutimi spekulativ të kodit nga procesori. Tekstet burimore të mjeteve shpërndahen nën licencën Apache 2.0.
Për t'i kujtuar, për të kryer sulme të tilla si Spectre v1, të cilat mundësojnë identifikimin e përmbajtjes së memories, kërkohet një sekuencë specifike komandash (gadxhetash) në kodin me privilegje, e cila çon në ekzekutimin spekulativ të udhëzimeve. Me qëllim optimizimi, procesori fillon të ekzekutojë këto gadxheta në modin spekulativ, më pas përcakton se parashikimi i degëzimit nuk ishte i saktë dhe i kthen operacionet në gjendjen fillestare, por të dhënat e përpunuara gjatë ekzekutimit spekulativ mbeten në cache dhe në buferat mikroarkitekturorë dhe janë të disponueshme për t'u nxjerrë me metoda të ndryshme për të identifikuar të dhëna mbetëse përmes kanaleve të jashtme.
Mjetet e mëparshme për skanimin e gadxhetave për dobësinë Spectre, të bazuara në kërkimin e modeleve tipike, treguan një nivel shumë të lartë të njoftimeve fals, duke lënë në harresë shumë gadxheta reale (eksperimentet treguan se 99% e gadxhetave të identifikuara nga këto mjete nuk mund të përdoren për sulme, ndërsa 33% e gadxhetave funksionale, të cilat mund të çonin në sulm, nuk u vunë re).
Për të përmirësuar cilësinë e identifikimit të gadxhetave problematike, Kasper modelon dobësitë që sulmuesi mund të shfrytëzojë në çdo hap të kryerjes së sulmeve të klasës Spectre — modelohen problemet që lejojnë kontrollin e të dhënave (për shembull, inkuadrimi i të dhënave nga sulmuesi në strukturat mikroarkitekturale për të ndikuar në ekzekutimin e ardhshëm spekulativ duke përdorur sulme të klasës LVI), aksesin në informacionin konfidencial (për shembull, kur dalin jashtë kufijve të buferit ose përdorin memorien pas liçencës së saj) dhe organizimin e rrjedhjeve të informacionit konfidencial (për shembull, duke analizuar gjendjen e cache-it të procesorit ose duke përdorur metodën MDS).

Gjatë testimit, bërthamja lidhet me bibliotekat runtime Kasper dhe kontrollin që punon në nivelin LLVM. Në procesin e verifikimit, simulimi i ekzekutimit spekulativ të kodit realizohet me anë të mekanizmit checkpoint-restore, i cili specifikisht ekzekuton deget e kodit që janë parashikuar gabim, pastaj kthehet në gjendjen fillestare përpara fillimit të deges. Kasper gjithashtu përpiqet të modelojë vulnerabilitetet e ndryshme softuerike dhe harduerike, analizon ndikimin e efekteve arkitektonike dhe mikroarkitektonike, dhe kryen testim fuzzing për veprimet e mundshme të sulmuesit. Për analizën e rrjedhave të ekzekutimit përdoret porta DataFlowSanitizer për bërthamën Linux, dhe për testimin fuzzing një version i modifikuar i paketës syzkaller.

Gjatë skanimit të bërthamës Linux me anë të Kasper janë zbuluar 1379 gadgets të panjohur më parë, potencialisht që mund të shkaktojnë rrjedhje të të dhënave gjatë ekzekutimit spekulativ të instructioneve. Vërehet se ndoshta vetëm një pjesë e tyre mund të paraqesin probleme reale, por për të demonstruar se ekziston rreziku real dhe jo vetëm teorik, për një nga segmentet problematike të kodit është zhvilluar një prototip funksional i eksploitit që çon në rrjedhjen e informacionit nga memoria e bërthamës.
Burimi: opennet.ru
