CacheWarp: Új sérülékenység az AMD CPU-kban

kami911 képe

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

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
ÉS
B1 – TCB[MICROCODE]>=0xD1

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
ÉS
B1 – TCB[MICROCODE]>=0xD1

B2 –TCB[MICROCODE]>=0x34