Manapság nem csak az Intel-nek kell biztonsági szivárgást betömnie. A CacheWarp egy az AMD Epyc első, második és harmadik generációs processzorokban felfedezett biztonsági rés, amely ehetővé teszi a támadók számára, hogy eltérítsék a vezérlést, betörjenek a titkosított VM-ekbe, és jogosultságnövelést hajtsanak végre a VM-en belül. Ez a most fellelt szoftveres hiba az AMD SEV-ES és SEV-SNP alrendszerek ellen irányuló sikeres támadás.
A kihasználás bemutatott módja:
CacheWarp: Szoftver-alapú hiba injektálás szelektív állapot-visszaállítással
- Az AMD biztonsági hibaközlése: AMD-SB-3005
- Az CacheWarp hiba honlapja
A Sebezhetőség
Az AMD SEV egy megbízható végrehajtási környezet (TEE), amely titkosságot és integritást biztosít a virtuális gépek számára. Az AMD SEV segítségével VM-ek biztonságosan futtathatók nem megbízható hipervizoron. Míg a korábbi támadások a korábbi SEV-verziók architekturális hiányosságait mutatták, az AMD állítása szerint a SEV-SNP megakadályozza az integritás elleni összes támadást. Most napvilágra került a CacheWarp-nak nevezett sérülékenység, egy új, szoftver alapú hibatámadás az AMD SEV-ES és SEV-SNP ellen, amely kihasználja a vendég VM-ek módosított gyorsítótár sorainak architektúrális visszaállításának lehetőségét a korábbi (stale) állapotba. A korábbi integritás elleni támadásokkal ellentétben a CacheWarp nem kiküszöbölhető újabb SEV-SNP implementációval, és nem támaszkodik a vendég VM sajátosságaira. A CacheWarpnak csak meg kell szakítania a VM-et egy, a támadó által kiválasztott ponton, hogy a módosított gyorsítótár sorokat érvénytelenítse anélkül, hogy azok visszaíródnának a memóriába. Következésképpen a VM architekturálisan elavult adatokkal folytatja a munkát. Három esettanulmányban bemutatták be a támadást az Intel IPP kriptokönyvtárban lévő RSA ellen, a teljes privát kulcs helyreállítását, az OpenSSH szerverre való bejelentkezést hitelesítés nélkül, valamint a sudo bináris programon keresztül a jogosultságok root jogosultságig való kiterjesztését. Miközben szoftveralapú kárenyhítési koncepciót próbálnak meg, azt állítják a szakemberek, hogy a kárenyhítés nehéz, mivel a hiba oka a hardverben van. Ez a hiba a CVE-2023-20592 azonosítóval rendelkezik.
Megoldás
Az AMD azt ajánlja, hogy az ügyfelek a „Zen 3” és „Zen 4” CPU-architektúrán alapuló termékek esetében vagy az önálló µcode javítást, vagy a µcode javítást tartalmazó BIOS-frissítést alkalmazzák. Az AMD az alábbiakban felsorolt céldátumokban tervezi a frissített AGESA™-verziók kiadását az eredetiberendezés-gyártók (OEM), az eredeti tervezőgyártók (ODM) és az alaplapgyártók (MB) számára. A gyártó arra kéri a felhasználókat, hogy forduljanak az OEM-hez, ODM-hez vagy MB-hez a termékére jellemző BIOS-frissítésért, amely adott esetben az alábbiakban felsorolt időpontok után következik. A „Zen” vagy „Zen 2” CPU-architektúrán alapuló termékek esetében nincs szükség µcode-javításra vagy a µcode-javítást tartalmazó BIOS-frissítésre, mivel ezek az architektúrák már úgy vannak kialakítva, hogy az ágtípus-előrejelzéseket az elágazás-előrejelzőből ki lehessen üríteni.
Az operációs rendszer (OS) konfigurációs lehetőségei is rendelkezésre állhatnak a sebezhetőség bizonyos aspektusainak enyhítésére. Az AMD azt javasolja, hogy a felhasználók értékeljék kockázati környezetüket (beleértve a nem megbízható helyi kód futtatásának kockázatát), amikor az operációs rendszerrel kapcsolatos enyhítési lehetőségekről döntenek, és az operációs rendszerre vonatkozó dokumentációban találnak útmutatást. A "Zen 3" és "Zen 4" alapú rendszereknek a BIOS frissítésbe beépített µcode javítófoltra lesz szükségük az operációs rendszer konfigurációs opcióinak engedélyezése előtt.
Érintett processzorok
- Első generációs AMD EPYC™ processzorok (SEV és SEV-ES)
- Második generációs AMD EPYC™ processzorok (SEV és SEV-ES)
- Harmadik generációs AMD EPYC™ processzorok (SEV, SEV-ES, SEV-SNP)
Javítás
Az EPYC™ processzorok első és második generációja ("Zen 1", korábbi kódnevén "Naples", "Zen 2", korábbi kódnevén "Rome") esetében nem áll rendelkezésre kárenyhítés, mivel a SEV és SEV-ES funkciók nem a vendég VM memória integritásának védelmére szolgálnak, és a SEV-SNP sem áll rendelkezésre. A potenciális sebezhetőség kárenyhítéseként az AMD egy működés közbeni feltöltésű mikrokódjavítást biztosított, és frissítette az AMD 3. generációs EPYC™ processzorok ("Zen 3" mikroarchitektúra, korábbi kódnevén "Milan") firmware-képét az AMD Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP) funkcióval rendelkező ügyfelek számára.
A javítás várhatóan nem befolyásolja a teljesítményt.
Ez a probléma nem érinti az AMD 4. generációs "Genoa" EPYC™ processzorait ("Zen 4" mikroarchitektúra).
Az alább felsorolt platform inicializálási csomag (PI) verziókat a tervek szerint az alábbiakban felsorolt céldátumokban adják ki az eredeti berendezésgyártók (OEM), az eredeti tervezőgyártók (ODM) és az alaplapgyártók számára. A termékekhez készített BIOS-frissítésért forduljon az alaplap gyártójához.
Az AMD a mikrokód javítást kétféleképpen telepíti: önálló javításként egy frissített SEV firmware-képként, illetve a platform inicializálási (PI) csomag frissítésének részeként. A Platform Initialization (PI) csomag kiadását megelőzően történő kárenyhítéshez a mikrokód javítást és a SEV firmware-képet kell telepíteni. A mikrokód javítást a SEV-SNP funkció SNP_INIT_EX paranccsal történő inicializálása előtt kell alkalmazni, és ha az RMP korábban inicializálásra került, az RMP-t újra kell inicializálni az INIT_RMP 1-re állításával. A mikrokód javítást és a SEV firmware képet a PI csomag frissítése tartalmazza, majd amikor az elérhetővé teszi a gyártó.
CPUIDs | Kárenyhítési lehetőség 1 | Kárenyhítési lehetőség 2 | TCB értékek: SNP Attestation |
||
0x00A00F11 0x00A00F12 |
Platform Initialization (PI) (Új firmware-t igényel) |
Mikrokód (Menet közben betölthető) |
SEV firmware (A fentiek szerint menet közben betölthető) |
TCB[SNP]>=0x14 B2 –TCB[MICROCODE]>=0x34 |
|
Minimum firmware verzió a hiba a lenti hibák kiküszöböléséhez | MilanPI 1.0.0.C (2023 decemberben lesz elérhető) |
||||
CVE-2023-20592 | 5.3 (Medium) | MilanPI 1.0.0.C (2023 decemberben lesz elérhető) |
Milan B1 – 0x0A0011D1 Milan-X B2 – 0x0A001234 |
1.37.10 |
TCB[SNP]>=0x14 B2 –TCB[MICROCODE]>=0x34 |