Nytt angrep på mikroarkitektoniske strukturer til Intel- og AMD-prosessorer

En gruppe forskere fra University of Virginia og University of California presenterte en ny type angrep på de mikroarkitektoniske strukturene til Intel- og AMD-prosessorer, identifisert under omvendt utvikling av udokumenterte CPU-egenskaper. Den foreslåtte angrepsmetoden innebærer bruk av en mellomliggende mikrooperasjonsbuffer i prosessorer, som kan brukes til å hente informasjon akkumulert under spekulativ utførelse av instruksjoner.

For optimaliseringsformål begynner prosessoren å utføre noen instruksjoner i spekulativ modus, uten å vente på at tidligere beregninger skal fullføres, og hvis den da fastslår at prediksjonen ikke var berettiget, ruller den tilbake operasjonen til sin opprinnelige tilstand, men dataene behandlet under spekulativ henrettelse deponeres i en cache, hvis innhold kan bestemmes.

Det bemerkes at den nye metoden overgår Spectre v1-angrepet betydelig, gjør angrepet vanskelig å oppdage og er ikke blokkert av eksisterende metoder for beskyttelse mot sidekanalangrep designet for å blokkere sårbarheter forårsaket av spekulativ utførelse av instruksjoner (for eksempel bruken av av LFENCE-instruksjonen blokkerer lekkasjer i de siste stadiene av spekulativ utførelse, men beskytter ikke mot lekkasje gjennom mikroarkitektoniske strukturer).

Metoden påvirker Intel- og AMD-prosessormodeller utgitt siden 2011, inkludert Intel Skylake- og AMD Zen-serien. Moderne prosessorer bryter komplekse prosessorinstruksjoner inn i enklere RISC-lignende mikrooperasjoner, som bufres i en separat hurtigbuffer. Denne cachen er fundamentalt forskjellig fra cacher på høyere nivå, er ikke direkte tilgjengelig og fungerer som en strømbuffer for rask tilgang til resultatene av dekoding av CISC-instruksjoner til RISC-mikroinstruksjoner. Forskere har imidlertid funnet en måte å skape forhold som oppstår når cache-tilgang er i konflikt og tillate en å bedømme innholdet i mikrooperasjonscachen ved å analysere forskjeller i utførelsestiden for visse handlinger.

Nytt angrep på mikroarkitektoniske strukturer til Intel- og AMD-prosessorer

Mikrooperasjonscachen i Intel-prosessorer er segmentert i forhold til CPU-tråder (Hyper-Threading), mens AMD Zen-prosessorer bruker en delt cache, som skaper forhold for datalekkasje ikke bare innenfor én utførelsestråd, men også mellom ulike tråder i SMT (mulig datalekkasje mellom kode som kjører på forskjellige logiske CPU-kjerner).

Forskere har foreslått en grunnleggende metode for å oppdage endringer i mikrooperasjonsbufferen og flere angrepsscenarier som gjør det mulig å lage skjulte dataoverføringskanaler og bruke sårbar kode for å lekke konfidensiell data, både innenfor en enkelt prosess (for eksempel for å lekke prosessdata ved kjøring tredjepartskode i motorer med JIT og i virtuelle maskiner), og mellom kjernen og prosesser i brukerrommet.

Når de organiserte en variant av Spectre-angrepet ved bruk av en mikrooperasjonsbuffer, var forskerne i stand til å oppnå ytelse på 965.59 Kbps med en feilrate på 0.22 % og 785.56 Kbps ved bruk av feilretting, i tilfelle organisering av en lekkasje innenfor samme adresse plass og privilegienivå. Med en lekkasje som spenner over forskjellige rettighetsnivåer (mellom kjerne og brukerområde), var ytelsen 85.2 Kbps med feilretting lagt til og 110.96 Kbps med en feilrate på 4 %. Ved angrep på AMD Zen-prosessorer, og skapte en lekkasje mellom ulike logiske CPU-kjerner, var ytelsen 250 Kbps med en feilrate på 5.59 % og 168.58 Kbps med feilretting. Sammenlignet med den klassiske Spectre v1-metoden var det nye angrepet 2.6 ganger raskere.

Det forventes at beskyttelse mot et mikro-op-cache-angrep vil kreve endringer som vil redusere ytelsen mer enn hvis du aktivert Spectre-angrepsbeskyttelse. Som et optimalt kompromiss foreslås det å blokkere slike angrep ikke ved å deaktivere hurtigbufring, men ved å overvåke anomalier og identifisere hurtigbuffertilstander som er typiske for angrep.

Som i Spectre-angrep, krever organisering av en lekkasje fra kjernen eller andre prosesser utførelse av en viss sekvens av kommandoer (dingser) på siden av offerprosessene, noe som fører til spekulativ utførelse av instruksjoner. Rundt 100 lignende dingser har blitt funnet i Linux-kjernen, som vil bli fjernet, men det blir med jevne mellomrom funnet løsninger for deres generasjon, for eksempel knyttet til å kjøre spesialdesignede BPF-programmer i kjernen.

Kilde: opennet.ru

Legg til en kommentar