En gruppe forskere fra Vrije Universiteit Amsterdam har udgivet Kasper-værktøjssættet, der er designet til at detektere kernel Linux Kodestykker, der kan bruges til at udnytte Spectre-klassen sårbarheder forårsaget af spekulativ kodeudførelse på processoren. Kildekoden til værktøjssættet distribueres under Apache 2.0-licensen.
Lad os huske på, at for at udføre angreb som Spectre v1, der gør det muligt at bestemme indholdet af hukommelsen, kræves tilstedeværelsen i den privilegerede kode af en bestemt sekvens af kommandoer (gadgets), hvilket fører til spekulativ udførelse af instruktioner . Til optimeringsformål begynder processoren at udføre sådanne gadgets i spekulativ tilstand, bestemmer derefter, at grenforudsigelsen ikke var berettiget og ruller operationerne tilbage til deres oprindelige tilstand, men de data, der behandles under spekulativ eksekvering, ender i cachen og mikroarkitektoniske buffere og er tilgængelig for hentning fra dem ved hjælp af forskellige metoder til at bestemme resterende data gennem tredjepartskanaler.
Tidligere tilgængelige værktøjer til at scanne gadgets for Spectre-sårbarheden, baseret på søgning efter typiske mønstre, viste et meget højt niveau af falske positiver, mens der manglede mange rigtige gadgets (eksperimenter viste, at 99 % af gadgets identificeret af sådanne værktøjer ikke kunne bruges til angreb , og 33 % af fungerende gadgets, der kunne føre til et angreb, blev ikke bemærket).
For at forbedre kvaliteten af at identificere problematiske gadgets modellerer Kasper sårbarheder, som en angriber kan udnytte ved hvert trin i udførelsen af Spectre-klasseangreb - problemer, der tillader datakontrol, modelleres (f.eks. substituering af angriberdata i mikroarkitektoniske strukturer for at påvirke efterfølgende spekulativ eksekvering vha. LVI-klasseangreb), få adgang til fortrolig information (f.eks. når du går ud over buffergrænser eller bruger hukommelse, efter at den er frigivet) og lækker fortrolig information (f.eks. ved at analysere tilstanden af processorcachen eller bruge MDS-metoden).

Under test kommunikerer kernen med Kasper runtime-biblioteker og LLVM-baserede kontroller. Kontrollen emulerer spekulativ kodeudførelse ved hjælp af en checkpoint-restore-mekanisme, der bevidst udfører en fejlagtigt forudsagt kodeforgrening og derefter ruller tilbage til den oprindelige tilstand, før forgreningen fandt sted. Kasper forsøger også at simulere forskellige software- og hardwaresårbarheder, analyserer virkningen af arkitektoniske og mikroarkitektoniske effekter og udfører fuzzing-tests af mulige angriberhandlinger. DataFlowSanitizer-kerneporten bruges til analyse af udførelsesflow. Linux, og til fuzzing-testning af en modificeret version af syzkaller-pakken.

Under kernelscanning Linux Ved hjælp af Kasper blev 1379 tidligere ukendte gadgets identificeret, som potentielt kan føre til datalækager under spekulativ instruktionsudførelse. Det bemærkes, at kun en delmængde af disse kan udgøre reelle problemer, men for at demonstrere, at der er en reel, ikke kun teoretisk, trussel, blev der udviklet en fungerende prototype-exploit til et af de problematiske kodefragmenter, hvilket forårsagede en informationslækage fra kernelhukommelsen.
Kilde: opennet.ru
