Kasper, en skanner for spekulative kodeutførelsesproblemer i Linux-kjernen, er nå tilgjengelig

Et team av forskere fra Free University of Amsterdam har publisert et Kasper-verktøysett designet for å identifisere kodebiter i Linux-kjernen som kan brukes til å utnytte Spectre-klassens sårbarheter forårsaket av spekulativ kodekjøring på prosessoren. Kildekoden for verktøysettet er distribuert under Apache 2.0-lisensen.

La oss huske at for å utføre angrep som Spectre v1, som gjør det mulig å bestemme innholdet i minnet, kreves tilstedeværelsen i den privilegerte koden av en viss sekvens av kommandoer (dingser), noe som fører til spekulativ utførelse av instruksjoner . For optimaliseringsformål begynner prosessoren å kjøre slike gadgets i spekulativ modus, bestemmer deretter at grenprediksjonen ikke var rettferdiggjort og ruller tilbake operasjonene til sin opprinnelige tilstand, men dataene som behandles under spekulativ utførelse havner i hurtigbufferen og mikroarkitektoniske buffere og er tilgjengelig for henting fra dem ved å bruke ulike metoder for å bestemme gjenværende data gjennom tredjepartskanaler.

Tidligere tilgjengelige verktøy for å skanne gadgets for Spectre-sårbarheten, basert på søk etter typiske mønstre, viste et svært høyt nivå av falske positiver, mens mange virkelige gadgets manglet (eksperimenter viste at 99 % av gadgets identifisert av slike verktøy ikke kunne brukes til angrep , og 33 % av fungerende gadgets som kan føre til et angrep ble ikke lagt merke til).

For å forbedre kvaliteten på identifisering av problematiske gadgets, modellerer Kasper sårbarheter som en angriper kan utnytte ved hvert trinn av å utføre Spectre-klasseangrep - problemer som tillater datakontroll blir modellert (for eksempel å erstatte angriperdata i mikroarkitektoniske strukturer for å påvirke påfølgende spekulativ utførelse ved å bruke LVI-klasseangrep), få ​​tilgang til konfidensiell informasjon (for eksempel når du går utover buffergrenser eller bruker minne etter at det er frigjort) og lekke konfidensiell informasjon (for eksempel ved å analysere tilstanden til prosessorbufferen eller bruke MDS-metoden).

Kasper, en skanner for spekulative kodeutførelsesproblemer i Linux-kjernen, er nå tilgjengelig

Ved testing er kjernen koblet til Kasper kjøretidsbiblioteker og sjekker som kjører på LLVM-nivå. Kontrollprosessen emulerer spekulativ kodekjøring, implementert ved hjelp av kontrollpunktgjenopprettingsmekanismen, som spesifikt kjører en feil forutsagt kodegren, og deretter ruller tilbake til den opprinnelige tilstanden før grenen begynte. Kasper forsøker også å simulere ulike programvare- og maskinvaresårbarheter, analyserer virkningen av arkitektoniske og mikroarkitektoniske effekter, og utfører fuzz-testing av mulige angriperhandlinger. For å analysere utførelsesflyter brukes DataFlowSanitizer-porten for Linux-kjernen, og for fuzzing-testing brukes en modifisert versjon av syzkaller-pakken.

Kasper, en skanner for spekulative kodeutførelsesproblemer i Linux-kjernen, er nå tilgjengelig

En skanning av Linux-kjernen ved bruk av Kasper identifiserte 1379 XNUMX tidligere ukjente gadgets som potensielt kan føre til datalekkasje under spekulativ utførelse av instruksjoner. Det bemerkes at kanskje bare noen av dem kan utgjøre reelle problemer, men for å demonstrere at det er en reell fare, og ikke bare en teoretisk, ble det utviklet en fungerende prototype av en utnyttelse for et av de problematiske kodefragmentene, som førte til informasjon lekkasje fra kjerneminne.

Kilde: opennet.ru

Legg til en kommentar