Sårbarhet i AMD-processorer som gör att du kan kringgå SEV-skyddsmekanismen (Secure Encrypted Virtualization)

Forskare vid Helmholtz Center for Information Security (CISPA) har publicerat en ny CacheWarp-attackmetod för att äventyra AMD SEV (Secure Encrypted Virtualization) säkerhetsmekanism som används i virtualiseringssystem för att skydda virtuella maskiner från störningar från hypervisorn eller värdsystemadministratören. Den föreslagna metoden tillåter en angripare med åtkomst till hypervisorn att exekvera tredjepartskod och eskalera privilegier i en virtuell maskin som skyddas med AMD SEV.

Attacken är baserad på användningen av en sårbarhet (CVE-2023-20592) orsakad av felaktig användning av cachen under exekveringen av INVD-processorinstruktionen, med hjälp av vilken det är möjligt att uppnå en datamissmatch i minne och cache , och kringgå mekanismer för att upprätthålla integriteten hos virtuellt maskinminne, implementerade baserat på tilläggen SEV-ES och SEV-SNP. Sårbarheten påverkar AMD EPYC-processorer från första till tredje generationen.

För tredje generationens AMD EPYC-processorer (Zen 3) är problemet löst i novembers mikrokoduppdatering som släpptes igår av AMD (fixen resulterar inte i någon prestandaförsämring). För den första och andra generationen av AMD EPYC (Zen 1 och Zen 2) tillhandahålls inte skydd, eftersom dessa processorer inte stöder tillägget SEV-SNP, som ger integritetskontroll för virtuella maskiner. Den fjärde generationen av AMD AMD EPYC "Genoa"-processorer baserade på "Zen 4"-mikroarkitekturen är inte sårbar.

AMD SEV-teknik används för virtuell maskinisolering av molnleverantörer som Amazon Web Services (AWS), Google Cloud, Microsoft Azure och Oracle Compute Infrastructure (OCI). AMD SEV-skydd implementeras genom kryptering på hårdvarunivå av virtuell maskinminne. Dessutom skyddar tillägget SEV-ES (Encrypted State) CPU-register. Endast det aktuella gästsystemet har tillgång till den dekrypterade datan, och när andra virtuella maskiner och hypervisorn försöker komma åt detta minne får de en krypterad uppsättning data.

Den tredje generationen av AMD EPYC-processorer introducerade ytterligare en tillägg, SEV-SNP (Secure Nested Paging), som säkerställer säker drift av kapslade minnessidetabeller. Utöver allmän minneskryptering och registerisolering implementerar SEV-SNP ytterligare åtgärder för att skydda minnesintegriteten genom att förhindra ändringar av den virtuella datorn av hypervisorn. Krypteringsnycklar hanteras på sidan av en separat PSP (Platform Security Processor)-processor inbyggd i chippet, implementerad på basis av ARM-arkitektur.

Kärnan i den föreslagna attackmetoden är att använda INVD-instruktionen för att ogiltigförklara block (linjer) i cachen på smutsiga sidor utan att dumpa data som ackumulerats i cachen i minnet (återskrivning). Således låter metoden dig avhysa ändrad data från cachen utan att ändra minnestillståndet. För att utföra en attack föreslås det att använda programvaruundantag (felinjektion) för att avbryta driften av den virtuella maskinen på två ställen: i första hand anropar angriparen "wbnoinvd"-instruktionen för att återställa alla minnesskrivoperationer som ackumulerats i cachen, och i andra hand anropar "invd"-instruktionen för att återställa skrivoperationer som inte återspeglas i minnet till det gamla tillståndet.

För att kontrollera dina system för sårbarheter har en exploateringsprototyp publicerats som låter dig infoga ett undantag i en virtuell maskin skyddad via AMD SEV och återställa ändringar i den virtuella datorn som inte har återställts till minnet. Återställning av en ändring kan användas för att ändra flödet av ett program genom att returnera en gammal returadress på stacken, eller för att använda inloggningsparametrarna för en gammal session som tidigare autentiserades genom att returnera ett autentiseringsattributvärde.

Forskare visade till exempel möjligheten att använda CacheWarp-metoden för att utföra en Bellcore-attack på implementeringen av RSA-CRT-algoritmen i ipp-crypto-biblioteket, vilket gjorde det möjligt att återställa den privata nyckeln genom felsubstitution vid beräkning av en digital signatur. Den visar också hur du kan ändra sessionsverifieringsparametrarna till OpenSSH när du fjärransluter till ett gästsystem, och sedan ändra verifieringstillståndet när du kör sudo-verktyget för att få roträttigheter i Ubuntu 20.04. Exploateringen har testats på system med AMD EPYC 7252, 7313P och 7443-processorer.

Källa: opennet.ru

Lägg en kommentar