Sårbarhet i AMD CPUer som lar deg omgå SEV (Secure Encrypted Virtualization) beskyttelsesmekanismen

Forskere ved Helmholtz Center for Information Security (CISPA) har publisert en ny CacheWarp-angrepsmetode for å kompromittere AMD SEV (Secure Encrypted Virtualization) sikkerhetsmekanismen som brukes i virtualiseringssystemer for å beskytte virtuelle maskiner mot forstyrrelser fra hypervisor eller vertssystemadministrator. Den foreslåtte metoden lar en angriper med tilgang til hypervisoren kjøre tredjepartskode og eskalere privilegier i en virtuell maskin som er beskyttet med AMD SEV.

Angrepet er basert på utnyttelse av en sårbarhet (CVE-2023-20592) forårsaket av feil drift av hurtigbufferen under utførelsen av INVD-prosessorinstruksjonen, ved hjelp av hvilken det er mulig å oppnå datamismatch i minne og hurtigbuffer , og omgå mekanismer for å opprettholde integriteten til virtuell maskinminne, implementert basert på utvidelsene SEV-ES og SEV-SNP. Sårbarheten påvirker AMD EPYC-prosessorer fra første til tredje generasjon.

For tredjegenerasjons AMD EPYC-prosessorer (Zen 3), er problemet løst i november-mikrokodeoppdateringen som ble utgitt i går av AMD (reparasjonen resulterer ikke i noen ytelsesforringelse). For første og andre generasjon av AMD EPYC (Zen 1 og Zen 2) er det ikke gitt beskyttelse, siden disse CPUene ikke støtter SEV-SNP-utvidelsen, som gir integritetskontroll for virtuelle maskiner. Fjerde generasjon AMD AMD EPYC «Genoa»-prosessorer basert på «Zen 4»-mikroarkitekturen er ikke sårbar.

AMD SEV-teknologi brukes til virtuell maskinisolering av skyleverandører som Amazon Web Services (AWS), Google Cloud, Microsoft Azure og Oracle Compute Infrastructure (OCI). AMD SEV-beskyttelse implementeres gjennom kryptering på maskinvarenivå av virtuell maskinminne. I tillegg beskytter utvidelsen SEV-ES (Encrypted State) CPU-registre. Bare det nåværende gjestesystemet har tilgang til de dekrypterte dataene, og når andre virtuelle maskiner og hypervisor prøver å få tilgang til dette minnet, mottar de et kryptert sett med data.

Den tredje generasjonen av AMD EPYC-prosessorer introduserte en ekstra utvidelse, SEV-SNP (Secure Nested Paging), som sikrer sikker drift av nestede minnesidetabeller. I tillegg til generell minnekryptering og registerisolering, implementerer SEV-SNP ytterligere tiltak for å beskytte minneintegriteten ved å forhindre endringer i VM av hypervisoren. Krypteringsnøkler administreres på siden av en separat PSP (Platform Security Processor)-prosessor innebygd i brikken, implementert på grunnlag av ARM-arkitektur.

Essensen av den foreslåtte angrepsmetoden er å bruke INVD-instruksjonen for å ugyldiggjøre blokker (linjer) i hurtigbufferen til skitne sider uten å dumpe dataene som er akkumulert i hurtigbufferen i minnet (tilbakeskrivning). Dermed lar metoden deg kaste ut endrede data fra hurtigbufferen uten å endre minnetilstanden. For å utføre et angrep, foreslås det å bruke programvareunntak (feilinjeksjon) for å avbryte driften av den virtuelle maskinen på to steder: for det første kaller angriperen "wbnoinvd"-instruksjonen for å tilbakestille alle minneskriveoperasjoner akkumulert i cachen, og for det andre kaller "invd"-instruksjonen for å returnere skriveoperasjoner som ikke er reflektert i minnet til den gamle tilstanden.

For å sjekke systemene dine for sårbarheter, er det publisert en utnyttelsesprototype som lar deg sette inn et unntak i en virtuell maskin beskyttet via AMD SEV og rulle tilbake endringer i VM-en som ikke er tilbakestilt til minnet. Tilbakestilling av en endring kan brukes til å endre flyten til et program ved å returnere en gammel returadresse på stabelen, eller for å bruke påloggingsparametrene til en gammel økt som tidligere ble autentisert ved å returnere en autentiseringsattributtverdi.

For eksempel demonstrerte forskere muligheten for å bruke CacheWarp-metoden til å utføre et Bellcore-angrep på implementeringen av RSA-CRT-algoritmen i ipp-crypto-biblioteket, som gjorde det mulig å gjenopprette den private nøkkelen gjennom feilsubstitusjon ved beregning av en digital signatur. Den viser også hvordan du kan endre sesjonsbekreftelsesparameterne til OpenSSH når du fjernkobler til et gjestesystem, og deretter endre bekreftelsestilstanden når du kjører sudo-verktøyet for å få rotrettigheter i Ubuntu 20.04. Utnyttelsen har blitt testet på systemer med AMD EPYC 7252, 7313P og 7443 prosessorer.

Kilde: opennet.ru

Legg til en kommentar