AMD Zen 5 CPU-k sérülékenyek, amelyek lehetővé teszik a mikrokód módosítását és a SEV-SNP izoláció megkerülését.

Az AMD bevezette a Zen 5 mikroarchitektúrára épülő processzorokat az EntrySign sérülékenység által érintett termékek listájára, amely lehetővé teszi a digitális aláírás ellenőrzési mechanizmusának megkerülését a mikrokód frissítésekor. Eredetileg úgy gondolták, hogy a sérülékenység csak az 1–4. generációs Zen architektúrára épülő AMD CPU-kat érinti. Így a sérülékenység alkalmazható olyan processzorokra, mint a Ryzen 9000 (Granite Ridge), EPYC 9005 (Turin), Ryzen AI 300 (Strix Halo, Strix Point, Krackan Point) és a Ryzen 9000HX (Fire Range).

A mikrokód frissítése mellett a SEV-SNP hitelesítést használó rendszerek esetében az AMD SEV firmware frissítése is szükséges a sérülékenység megszüntetéséhez, amely BIOS-frissítések részeként kerül kiadásra. Az AMD állítólag módosított firmware-t (ComboAM5PI 1.2.0.3c AGESA) adott át a hardvergyártóknak a probléma megoldására, de a végfelhasználók számára elérhető BIOS-frissítések hetekkel vagy hónapokkal később érkezhetnek a gyártóktól.

Az AMD munkatársai javasoltak egy patchet a Linux kernelbe, amely blokkolja a nem hivatalos mikrokód-frissítések betöltését (megjegyzendő, hogy a helyes mikrokód-frissítéseket a hardvergyártó BIOS-ával együtt kell telepíteni, de már megjelentek a nem hivatalos javítócsomagok elkészítésére tett kísérletek, amelyek a BIOS-ból kivágott mikrokód-fragmentumokon alapulnak). A felhasználóknak azt ajánlják, hogy várják meg a hivatalos BIOS-frissítéseket.

Az EntrySign sérülékenység által nyújtott mikrokód megváltoztatásának lehetősége lehetőséget ad az AMD SEV (Secure Encrypted Virtualization) mechanizmusának kompromittálására, amelyet virtualizációs rendszerek védelmére használnak. virtuális gépekhez a hypervisor vagy a hosztrendszer adminisztrátora általi beavatkozástól. A támadás során be lehet fúrni magunkat a AMD SEV (Secure Encrypted Virtualization) és SEV-SNP (Secure Nested Paging) kiterjesztések védettebb vendég rendszereinek működésébe, amelyek garantálják a virtuális gépek memória integritását, elszigetelik a processzorregisztereket, és biztosítják a biztonságos munkát a beágyazott memóriaoldaltáblákkal.

A sebezhetőség a CMAC hitelesítési algoritmus mikrokódjának ellenőrzésénél megbízható hash-funkció használata helyett a zárt RSA kulcs alkalmazásából fakad, amely az AMD cég által származtatott digitális aláírást biztosítja a processzorba töltött mikrokód számára, míg a mikrokóddal együtt megosztott patch tartalmazza a nyilvános kulcsot. A processzor összehasonlítja az AMD mikrokód gyártásakor beépített nyilvános kulcsának hash-ét a patch-ben feltüntetett nyilvános kulcs hash-él, hogy ellenőrizze, hogy a nyilvános kulcs megfelel az eredeti RSA kulcspárnak.

A mikrokód hitelesítése a patch-ben azzal történik, hogy összehasonlítják a patch-sel szállított hash-t, amely digitális aláírással van hitelesítve (RSASSA-PKCS1-v1_5), és azt a hash-t, amelyet a patch-ben ténylegesen szállított mikrokód alapján számítanak ki. Ha a referencia és a kiszámított hash megegyezik – a patch betöltésre kerül a CPU belső memóriájába. A probléma az, hogy a javasolt kriptográfiailag biztonságos hash-funkciók helyett a nem megfelelő CMAC algoritmust használták, amely nincs felkészítve az ilyen műveletekre, és nem védett a kollíziók ellen.

A CMAC nem hash-funkció, hanem egy kulcshoz kötött üzenet-hitelesítési kód (Message Authentication Code). Az AES-CMAC működése a titkosító algoritmus AES alkalmazására és a kimeneti adat kiszámításának XOR funkcióval történő összekapcsolására épül. Ez a séma garantálja, hogy a bemeneti adatok megváltozása kiszámíthatatlan kimeneti adatok megváltozását eredményezi. Ezenkívül a CMAC nem használható hash-funkcióként, mivel bárki, aki ismeri az eredeti titkosító kulcsot, ismerheti a titkosítási folyamat köztes állapotait, és olyan értékeket számíthat ki, amelyek kompenzálják a bemeneti adatok változását, így a CMAC alkalmazásának eredménye változatlan marad.

Az AMD az AES-CMAC számára egyetlen titkosítási kulcsot alkalmaz, amelyet minden Zen 1-től kezdődő CPU-ra telepítenek. Így elegendő csak egy AMD CPU-ból kinyerni ezt a kulcsot, és az alkalmazható lesz az összes többi CPU-ra. A kutatók felfedezték, hogy az AMD AES-CMAC titkosításhoz egy ismert kulcsot használt, amely a NIST SP 800-38B blokklánc titkosítási ajánlásában említett példából származik. Mivel az AES-CMAC-ot a RSA-kulcs beépített aláírásának és a mikrokód tartalmának hash-elésére használják, a titkosító kulcs kiderítésével lehetőség nyílt egy másik nyílt RSA-kulcs behelyettesítésére a patch-be, ezáltal módosítva a mikrokód tartalmát.

Egy hamis patch létrehozásához elegendő egy új nyílt kulcs generálása, amely ugyanazt a hash-t hozza létre, mint az AMD eredeti nyílt kulcsa, valamint kollíziók megtalálása a digitális aláíráshoz. A kollíziók úgy jönnek létre, hogy egy kiegészítő blokkot csatolnak a mikrokódhoz, amelynek kinézete véletlenszerű adathalmazon alapul. Így lehetséges egy módosított patch elkészítése a mikrokódhoz, amely megfelel annak a digitális aláírásnak, amellyel az AMD eredeti patchét hitelesítették. A Zentool eszközkészlet, amely mikrokód elemzésére és patch-ek készítésére szolgáló segédprogramokat tartalmaz, az Apache 2.0 licenc alatt érhető el. A mikrokód cseréjéhez szükséges a kód végrehajtásához szükséges jogosultság a nulladik védelmi gyűrű szintjén (a VT-x és AMD-V technológiák lehetővé teszik, hogy a vendég rendszer Ring 0 jogokkal fusson).

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster