AMD Zen 5 procesori pogođeni ranjivošću modifikacije mikrokoda i SEV-SNP izolacijskim premošćenjem

AMD je uvrstio procesore temeljene na mikroarhitekturi Zen 5 na popis proizvoda pogođenih ranjivošću EntrySign, koja omogućuje zaobilaženje mehanizma provjere digitalnog potpisa prilikom ažuriranja mikrokoda. U početku se pretpostavljalo da ranjivost utječe samo na AMD procesore temeljene na 1. do 4. generaciji Zen mikroarhitekture. Dakle, ranjivost se pokazala primjenjivom na procesore kao što su Ryzen 9000 (Granite Ridge), EPYC 9005 (Turin), Ryzen AI 300 (Strix Halo, Strix Point, Krackan Point) i Ryzen 9000HX (Fire Range).

Uz ažuriranje mikrokoda, ispravljanje ranjivosti na sustavima koji koriste SEV-SNP atestaciju također zahtijeva ažuriranje AMD SEV firmvera, koji se isporučuje kao dio ažuriranja BIOS-a. Navodno je AMD proizvođačima originalne opreme (OEM) osigurao modificirani firmware (ComboAM5PI 1.2.0.3c AGESA) potreban za rješavanje problema, ali konačna ažuriranja BIOS-a dostupna potrošačima možda neće biti objavljena tjednima ili mjesecima.

Zaposlenici AMD-a također su predložili uključivanje u jezgru Linux Zakrpa koja blokira preuzimanje neslužbenih ažuriranja mikrokoda (napominje se da se ispravna ažuriranja mikrokoda moraju instalirati zajedno s proizvođačevim BIOS-om, ali već je bilo pokušaja entuzijasta da stvore neslužbene zakrpe na temelju fragmenata mikrokoda izvađenih iz BIOS-a). Korisnicima se savjetuje da pričekaju službena ažuriranja BIOS-a.

Mogućnost izmjene mikrokoda koju pruža ranjivost EntrySign omogućuje kompromitiranje mehanizma AMD SEV (Secure Encrypted Virtualization) koji se koristi u sustavima virtualizacije za zaštitu virtualni strojevi od uplitanja hipervizora ili administratora glavnog sustava. Napad može ugroziti gostujuće sustave zaštićene AMD-ovim SEV (Secure Encrypted Virtualization) i SEV-SNP (Secure Nested Paging) proširenjima, koja pružaju jamstva integriteta memorije virtualnog stroja, izoliraju registre procesora i osiguravaju siguran rad ugniježđenih tablica stranica memorije.

Ranjivost je uzrokovana korištenjem CMAC algoritma za hashiranje tijekom procesa provjere mikrokoda umjesto snažne hash funkcije. AMD koristi privatni RSA ključ za digitalno potpisivanje mikrokoda učitanog u procesor i distribuira javni ključ kao dio zakrpe mikrokoda. Kako bi provjerio odgovara li javni ključ originalnom paru RSA ključeva, procesor uspoređuje hash AMD javnog ključa ugrađenog u CPU tijekom proizvodnje s hashom javnog ključa navedenog u zakrpi.

Autentičnost mikrokoda u zakrpi provjerava se usporedbom digitalno potpisanog hash-a (RSASSA-PKCS1-v1_5) isporučenog sa zakrpom i hash-a izračunatog na temelju mikrokoda koji je stvarno isporučen u zakrpi. Ako se referentni i izračunati hash podudaraju, zakrpa se učitava u internu CPU memoriju. Problem je što se umjesto preporučenih kriptografski jakih hash funkcija koristi CMAC algoritam koji nije dizajniran za takve operacije i nije zaštićen od detekcije kolizije.

CMAC nije hash funkcija, već implementira kod za autentifikaciju poruke (MAC) koji ovisi o ključu za šifriranje. AES-CMAC radi korištenjem AES kriptografskog algoritma i kombiniranjem rezultata njegove primjene sa sljedećim blokom podataka pomoću XOR operacije. Ovaj dizajn osigurava da promjena ulaznih podataka rezultira nepredvidivom promjenom izlaznih podataka. Međutim, CMAC se ne može koristiti kao hash funkcija, budući da svatko tko zna izvorni ključ za šifriranje može otkriti međustanja šifriranja i izračunati vrijednosti koje mogu kompenzirati promjenu ulaznih podataka tako da rezultat primjene CMAC-a ostane nepromijenjen.

AMD koristi jedan ključ za šifriranje za AES-CMAC, koji se isporučuje na svim CPU-ima počevši od Zen 1. Dakle, dovoljno je izdvojiti ovaj ključ iz bilo kojeg AMD CPU-a i on će biti primjenjiv na sve ostale CPU-e. Istraživači su otkrili da AMD-ova AES-CMAC enkripcija koristi poznati ključ preuzet iz primjera spomenutog u najboljoj praksi za blokovne šifre NIST SP 800-38B. Budući da se AES-CMAC koristi za hashiranje RSA ključa ugrađenog u zakrpu i sadržaj mikrokoda, određivanjem AES-CMAC ključa za šifriranje postalo je moguće zamijeniti drugi javni RSA ključ u zakrpu i promijeniti sadržaj mikrokoda.

Za stvaranje lažne zakrpe dovoljno je generirati novi javni ključ koji generira isti hash koji je generiran originalnim AMD javnim ključem, a također i odabrati kolizije za digitalni potpis. Kolizije se generiraju dodavanjem dodatnog bloka onoga što se čini kao slučajni podaci mikrokodu. Na sličan način moguće je pripremiti modificiranu zakrpu s mikrokodom koji odgovara digitalnom potpisu koji je korišten za certificiranje originalne zakrpe od AMD-a. Zentool alati, koji uključuju uslužne programe za analizu mikrokoda i stvaranje zakrpa za izmjenu mikrokoda, dostupni su pod Apache 2.0 licencom. Za zamjenu mikrokoda morate imati prava za izvršavanje koda na razini zaštite Ring 0 (VT-x i AMD-V tehnologije omogućuju gostujućem sustavu pokretanje s pravima Ring XNUMX).

Izvor: opennet.ru

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster