Sårbarhet i Intel-prosessorer som fører til datalekkasje via tredjepartskanaler

En gruppe forskere fra kinesiske og amerikanske universiteter har identifisert en ny sårbarhet i Intel-prosessorer som fører til tredjepartslekkasje av informasjon om resultatet av spekulative operasjoner, som for eksempel kan brukes til å organisere en skjult kommunikasjonskanal mellom prosesser eller identifisere lekkasjer under Meltdown-angrep.

Essensen av sårbarheten er at en endring i EFLAGS-prosessorregisteret som oppstår som følge av spekulativ utførelse av instruksjoner påvirker den påfølgende utførelsestiden for JCC-instruksjoner (hopp når spesifiserte betingelser er oppfylt). Spekulative operasjoner fullføres ikke og resultatet forkastes, men den forkastede EFLAGS-endringen kan bestemmes ved å analysere utførelsestiden for JCC-instruksjoner. Sammenligningsoperasjoner utført i spekulativ modus før overgangen, hvis vellykket, resulterer i en liten forsinkelse som kan måles og brukes som et tegn for innholdsvalg.

Sårbarhet i Intel-prosessorer som fører til datalekkasje via tredjepartskanaler

I motsetning til andre lignende sidekanalangrep, analyserer ikke den nye metoden endringer i tilgangstid til bufrede og ubufrede data og krever ikke et trinn for å tilbakestille EFLAGS-registeret til dets opprinnelige tilstand, noe som gjør det vanskelig å oppdage og blokkere angrepet. Som en demonstrasjon implementerte forskerne en variant av Meltdown-angrepet, ved å bruke en ny metode for å få informasjon om resultatet av en spekulativ operasjon. Driften av metoden for å organisere informasjonslekkasje under Meltdown-angrepet ble vellykket demonstrert på systemer med en Intel Core i7-6700 og i7-7700 CPU i et miljø med Ubuntu 22.04 og Linux-kjernen 5.15. På et system med en Intel i9-10980XE CPU ble angrepet bare delvis utført.

Meltdown-sårbarheten er basert på det faktum at under spekulativ utførelse av instruksjoner kan prosessoren få tilgang til et privat dataområde og deretter forkaste resultatet fordi de angitte privilegiene forbyr slik tilgang fra brukerens prosess. I programmet er den spekulativt utførte blokken atskilt fra hovedkoden med en betinget gren, som under reelle forhold alltid avfyres, men på grunn av det faktum at den betingede setningen bruker en beregnet verdi som prosessoren ikke kjenner under den forebyggende utførelse av koden utføres alle filialopsjoner spekulativt.

I den klassiske versjonen av Meltdown, siden den samme cachen brukes for spekulativt utførte operasjoner som for normalt utførte instruksjoner, er det mulig under spekulativ utførelse å sette markører i cachen som reflekterer innholdet av individuelle biter i et lukket minneområde, og deretter bestemme betydningen i normalt utført kode gjennom analyse av tilgangstiden til hurtigbufrede og ubufrede data. Den nye varianten bruker en endring i EFLAGS-registeret som lekkasjemarkør. I den skjulte kanaldemonstrasjonen modulerte en prosess dataene som ble overført for å skape betingelser for å endre innholdet i EFLAGS-registeret, og en annen prosess analyserte endringen i utførelsestiden for JCC-instruksjonen for å gjenskape dataene som ble overført av den første prosessen.

Kilde: opennet.ru

Legg til en kommentar