Kwetsbaarheid in AMD CPU's waardoor u het SEV-beveiligingsmechanisme (Secure Encrypted Virtualization) kunt omzeilen

Onderzoekers van het Helmholtz Center for Information Security (CISPA) hebben een nieuwe CacheWarp-aanvalsmethode gepubliceerd om het AMD SEV-beveiligingsmechanisme (Secure Encrypted Virtualization) te compromitteren dat wordt gebruikt in virtualisatiesystemen om virtuele machines te beschermen tegen inmenging door de hypervisor of hostsysteembeheerder. Met de voorgestelde methode kan een aanvaller met toegang tot de hypervisor code van derden uitvoeren en bevoegdheden escaleren in een virtuele machine die wordt beveiligd met AMD SEV.

De aanval is gebaseerd op het gebruik van een kwetsbaarheid (CVE-2023-20592) die wordt veroorzaakt door een onjuiste werking van de cache tijdens de uitvoering van de INVD-processorinstructie, met behulp waarvan het mogelijk is om een ​​gegevensmismatch in geheugen en cache te bewerkstelligen , en omzeil mechanismen voor het behouden van de integriteit van het geheugen van virtuele machines, geïmplementeerd op basis van de extensies SEV-ES en SEV-SNP. De kwetsbaarheid treft AMD EPYC-processors van de eerste tot en met de derde generatie.

Voor AMD EPYC-processors van de derde generatie (Zen 3) is het probleem opgelost in de microcode-update van november die gisteren door AMD is uitgebracht (de oplossing leidt niet tot prestatieverlies). Voor de eerste en tweede generatie AMD EPYC (Zen 1 en Zen 2) wordt geen bescherming geboden, aangezien deze CPU's de SEV-SNP-extensie niet ondersteunen, die integriteitscontrole voor virtuele machines biedt. De vierde generatie AMD AMD EPYC “Genoa” -processors, gebaseerd op de “Zen 4” -microarchitectuur, is niet kwetsbaar.

AMD SEV-technologie wordt gebruikt voor de isolatie van virtuele machines door cloudproviders zoals Amazon Web Services (AWS), Google Cloud, Microsoft Azure en Oracle Compute Infrastructure (OCI). AMD SEV-bescherming wordt geïmplementeerd via versleuteling op hardwareniveau van het geheugen van virtuele machines. Bovendien beschermt de SEV-ES-extensie (Encrypted State) CPU-registers. Alleen het huidige gastsysteem heeft toegang tot de gedecodeerde gegevens, en wanneer andere virtuele machines en de hypervisor toegang proberen te krijgen tot dit geheugen, ontvangen ze een gecodeerde set gegevens.

De derde generatie AMD EPYC-processors introduceerde een extra extensie, SEV-SNP (Secure Nested Paging), die een veilige werking van geneste geheugenpaginatabellen garandeert. Naast algemene geheugenversleuteling en registerisolatie implementeert SEV-SNP aanvullende maatregelen om de geheugenintegriteit te beschermen door wijzigingen aan de VM door de hypervisor te voorkomen. Encryptiesleutels worden beheerd aan de kant van een aparte PSP-processor (Platform Security Processor), ingebouwd in de chip, geïmplementeerd op basis van ARM-architectuur.

De essentie van de voorgestelde aanvalsmethode is om de INVD-instructie te gebruiken om blokken (lijnen) in de cache van vuile pagina's ongeldig te maken zonder de in de cache verzamelde gegevens in het geheugen te dumpen (terugschrijven). Met deze methode kunt u dus gewijzigde gegevens uit de cache verwijderen zonder de geheugenstatus te wijzigen. Om een ​​aanval uit te voeren, wordt voorgesteld om software-uitzonderingen (foutinjectie) te gebruiken om de werking van de virtuele machine op twee plaatsen te onderbreken: in de eerste plaats roept de aanvaller de ‘wbnoinvd’-instructie aan om alle geheugenschrijfbewerkingen te resetten die zijn verzameld in de cache, en in de tweede plaats roept het de “invd”-instructie aan om schrijfbewerkingen die niet in het geheugen zijn weergegeven terug te brengen naar de oude staat.

Om uw systemen op kwetsbaarheden te controleren, is er een exploit-prototype gepubliceerd waarmee u een uitzondering kunt invoegen in een virtuele machine die is beveiligd via AMD SEV en wijzigingen in de VM terug kan draaien die niet naar het geheugen zijn gereset. Het terugdraaien van een wijziging kan worden gebruikt om de stroom van een programma te veranderen door een oud retouradres op de stapel terug te sturen, of om de inlogparameters te gebruiken van een oude sessie die eerder werd geverifieerd door een authenticatieattribuutwaarde te retourneren.

Onderzoekers demonstreerden bijvoorbeeld de mogelijkheid om de CacheWarp-methode te gebruiken om een ​​Bellcore-aanval uit te voeren op de implementatie van het RSA-CRT-algoritme in de ipp-cryptobibliotheek, waardoor het mogelijk werd om de privésleutel te herstellen door middel van foutvervanging bij het berekenen van een digitale sleutel. handtekening. Het laat ook zien hoe u de sessieverificatieparameters kunt wijzigen in OpenSSH wanneer u op afstand verbinding maakt met een gastsysteem, en vervolgens de verificatiestatus kunt wijzigen wanneer u het sudo-hulpprogramma uitvoert om rootrechten te verkrijgen in Ubuntu 20.04. De exploit is getest op systemen met AMD EPYC 7252-, 7313P- en 7443-processors.

Bron: opennet.ru

Voeg een reactie