AMD-suorittimien haavoittuvuus, jonka avulla voit ohittaa SEV-suojausmekanismin (Secure Encrypted Virtualization)

Helmholtz Center for Information Security (CISPA) -tutkijat ovat julkaisseet uuden CacheWarp-hyökkäysmenetelmän vaarantaakseen virtualisointijärjestelmissä käytettävän AMD SEV (Secure Encrypted Virtualization) -suojausmekanismin, joka suojaa virtuaalikoneita hypervisorin tai isäntäjärjestelmän ylläpitäjän aiheuttamilta häiriöiltä. Ehdotettu menetelmä sallii hyökkääjän, jolla on pääsy hypervisoriin, suorittaa kolmannen osapuolen koodia ja laajentaa oikeuksia virtuaalikoneessa, joka on suojattu AMD SEV:llä.

Hyökkäys perustuu haavoittuvuuden (CVE-2023-20592) käyttöön, joka johtuu välimuistin virheellisestä toiminnasta INVD-prosessorin käskyn suorittamisen aikana, jonka avulla on mahdollista saavuttaa tietojen epäsopivuus muistissa ja välimuistissa. , ja ohitusmekanismeja virtuaalikoneen muistin eheyden ylläpitämiseksi, toteutettu laajennusten SEV-ES ja SEV-SNP perusteella. Haavoittuvuus vaikuttaa AMD EPYC -prosessoreihin ensimmäisestä kolmanteen sukupolveen.

Kolmannen sukupolven AMD EPYC -suorittimien (Zen 3) ongelma on ratkaistu AMD:n eilen julkaisemassa marraskuun mikrokoodipäivityksessä (korjaus ei aiheuta suorituskyvyn heikkenemistä). AMD EPYC:n ensimmäisessä ja toisessa sukupolvessa (Zen 1 ja Zen 2) ei ole suojausta, koska nämä prosessorit eivät tue SEV-SNP-laajennusta, joka tarjoaa virtuaalikoneiden eheyden hallinnan. Neljännen sukupolven AMD AMD EPYC "Genoa" -prosessorit, jotka perustuvat "Zen 4" -mikroarkkitehtuuriin, eivät ole haavoittuvia.

AMD SEV -teknologiaa käyttävät virtuaalikoneen eristämiseen pilvipalveluntarjoajat, kuten Amazon Web Services (AWS), Google Cloud, Microsoft Azure ja Oracle Compute Infrastructure (OCI). AMD SEV -suojaus toteutetaan virtuaalikoneen muistin laitteistotason salauksella. Lisäksi SEV-ES (Encrypted State) -laajennus suojaa CPU-rekistereitä. Vain nykyisellä vierasjärjestelmällä on pääsy salaukseen purettuihin tietoihin, ja kun muut virtuaalikoneet ja hypervisor yrittävät käyttää tätä muistia, ne vastaanottavat salatun tietojoukon.

Kolmannen sukupolven AMD EPYC -suorittimet esittelivät lisälaajennuksen SEV-SNP (Secure Nested Paging), joka varmistaa sisäkkäisten muistisivutaulukoiden turvallisen toiminnan. Yleisen muistin salauksen ja rekisterieristyksen lisäksi SEV-SNP toteuttaa lisätoimenpiteitä muistin eheyden suojaamiseksi estämällä hypervisorin tekemät muutokset virtuaalikoneeseen. Salausavaimia hallitaan erillisen ARM-arkkitehtuurin pohjalta toteutetun siruun sisäänrakennetun PSP-prosessorin (Platform Security Processor) puolella.

Ehdotetun hyökkäysmenetelmän ydin on käyttää INVD-käskyä likaisten sivujen välimuistissa olevien lohkojen (rivien) mitätöimiseen ilman, että välimuistiin kertynyttä tietoa jätetään muistiin (takaisinkirjoitus). Siten menetelmän avulla voit poistaa muuttuneet tiedot välimuistista muuttamatta muistin tilaa. Hyökkäyksen toteuttamiseksi ehdotetaan ohjelmistopoikkeuksia (vikainjektiota) käyttävän virtuaalikoneen toiminnan keskeyttämiseen kahdessa paikassa: ensinnäkin hyökkääjä kutsuu "wbnoinvd"-käskyä nollatakseen kaikki muistiin kertyneet kirjoitustoiminnot. välimuistiin ja toiseksi kutsuu "invd"-käskyn palauttamaan muistiin heijastamattomat kirjoitustoiminnot vanhaan tilaan.

Jotta järjestelmäsi voidaan tarkistaa haavoittuvuuksien varalta, on julkaistu hyväksikäyttöprototyyppi, jonka avulla voit lisätä poikkeuksen AMD SEV:llä suojattuun virtuaalikoneeseen ja peruuttaa VM:n muutokset, joita ei ole palautettu muistiin. Muutoksen palautusta voidaan käyttää muuttamaan ohjelman kulkua palauttamalla vanha paluuosoite pinossa tai käyttää kirjautumisparametreja vanhasta istunnosta, joka on aiemmin todennettu palauttamalla todennusattribuutin arvo.

Esimerkiksi tutkijat osoittivat mahdollisuuden käyttää CacheWarp-menetelmää Bellcore-hyökkäyksen suorittamiseen RSA-CRT-algoritmin toteutuksessa ipp-crypto-kirjastossa, mikä mahdollisti yksityisen avaimen palauttamisen virheiden korvaamisen kautta digitaalista laskua laskettaessa. allekirjoitus. Se näyttää myös, kuinka voit muuttaa istunnon vahvistusparametrit OpenSSH:ksi, kun muodostat etäyhteyden vierasjärjestelmään, ja muuttaa sitten vahvistustilaa, kun suoritat sudo-apuohjelmaa päästäksesi pääkäyttäjän oikeuksiin Ubuntu 20.04:ssä. Hyökkäys on testattu järjestelmissä, joissa on AMD EPYC 7252-, 7313P- ja 7443-prosessorit.

Lähde: opennet.ru

Lisää kommentti