Sikkerhedsforskere fra Google har offentliggjort information om en sårbarhed (CVE-2024-56161) i AMD-processorer, som berører mikrocode-loaderen og gør det muligt at omgå mekanismen til digital signaturkontrol ved opdateringer af mikrocode. Indlæsning af modificeret mikrocode kan kompromittere mekanismen AMD SEV (Secure Encrypted Virtualization), der anvendes i virtualiseringssystemer til at beskytte virtuelle maskiner mod indgreb fra hypervisoren eller administratoren af værtsystemet.
Sårbarheden skyldes brugen af en usikker hash-funktion i koden, der udfører kontrol af den digitale signatur efter indlæsning af mikrocode i CPU'en. For at udføre et angreb er det nødvendigt at have administratorrettigheder i det lokale system (muligheden for at udføre kode på ring0-niveau, mens man ikke er i en virtuel maskine).
Under et angreb kan man trænge ind i arbejdet med gæstesystemer, der er beskyttet ved hjælp af AMD SEV (Secure Encrypted Virtualization) og SEV-SNP (Secure Nested Paging), som giver garantier for integriteten af hukommelsen. virtual machines, der isolerer CPU-registere og sikrer sikker håndtering af indlejrede side-tabeller i hukommelsen. AMD SEV-mekanismen blev skabt for at sikre, at personale i datacentre og cloud-udbydere ikke kunne ændre eller analysere indholdet af hukommelsen i beskyttede gæstesystemer samt forvrænge beregninger.
Forskere har udarbejdet en prototype af et exploit, der gør det muligt at indlæse vilkårlig mikrocode i CPU'en, som ikke er signeret med en digital signatur. For at demonstrere faren ved sårbarheden er der foreslået en opdatering af mikrocode, der ændrer logikken i RDRAND-instruktionen, anvendt som en af kilderne til entropi i pseudorandom number generators, der bruges i nøglegenerering, ved udførelse af kryptografiske operationer og til generation af tilfældige identifikatorer.
Ændringen medfører, at RDRAND-instruktionen kun returnerer tallet 4 i stedet for en tilfældig sekvens. For at forhindre reelle angreb på systemer med konfidentiale beregninger nulstiller den ændrede mikrokode CF-flaget (carry flag), hvilket betyder, at den udsendte værdi markeres som fejlbehæftet. Yderligere detaljer og værktøjer til at generere den ændrede mikrokode planlægges at blive offentliggjort den 5. marts for at give brugerne tid til at installere opdateringen på deres systemer. Et vellykket eksempel på et angreb er demonstreret for servere med AMD EPYC 7B13 (Milan) og AMD Ryzen 9 7940HS (Phoenix).
I AMD's rapport angives det, at sårbarheden forekommer i AMD-processorer baseret på 1-4 generationer af Zen-mikroarkitekturen. Mikrokodeopdateringen, der løser sårbarheden, blev udgivet den 13. december 2024 for AMD EPYC 7001, 7002 og 7003 (Naples, Rome, Milan og Milan-X) processorer, og den 16. december for AMD EPYC 9004 (Genoa, Genoa-X og Bergamo/Siena) processorer. For at løse sårbarheden på systemer, der anvender SEV-SNP attestation, kræves der desuden en opdatering af AMD SEV-firmware (som leveres sammen med BIOS-opdateringer fra hardwareproducenterne).
Der rapporteres desuden om endnu en sårbarhed i AMD-processorer, som muliggør angreb via sidekanaler for at udtrække information om beregninger i gæstesystemer, der er beskyttet ved hjælp af AMD SEV-mekanismen. Problemet berører 1-4 generationer af AMD EPYC-processorer og er relateret til muligheden for at udtrække data fra processorcache, der samler sig under drift af beskyttede gæstesystemer. Metoden Prime+Probe kan anvendes til at analysere cacheindholdet, hvilket indebærer, at cachen fyldes med et reference sæt værdier, og ændringerne bestemmes ved at måle adgangstidsændringer ved gentagen fyldning. Der bemærkes, at metoder, der tidligere blev foreslået til beskyttelse mod Spectre-klasse angreb, er egnede til at blokere dette angreb.
Kilde: opennet.ru
