Ami megtörte a ZEN nyugalmát

kami911 képe

Tavis Ormandy beszámolt az első nagy eredményükről az új CPU kutatási projektükkel kapcsolatban. Egy felszabadítás utáni használat (use-after-free) hibára bukkatak az AMD ZEN2 processzoraiban. Ez a kifejezés olyan programozási hiba típusra utal, amikor egy program egy már felszabadított memóriaterületre hivatkozik, ami súlyos biztonsági problémákat okozhat. Az AMD frissített mikrokódot adott ki az érintett ZEN2 alapú rendszerekhez a Zenbleed-nek nevezett sebezhetőséghez. Ezek elérhetőek az alapgyártók BIOS frissítése révén és az operációs rendszer mechanizmusai révén is, például a linux-firmware csomag frissítéseként vagy közvetlenül a linux-firmware git kódtárolóból.

A sebezhetőségről

Bizonyos mikroarchitekturális körülmények között a "Zen 2" CPU-k regiszterei nem íródnak 0 értékkel helyesen. Ez azt eredményezheti, hogy egy másik folyamat és/vagy szál a YMM regiszterben tárolt adatokat írja felül, aminek következtében egy támadó potenciálisan hozzáférhet érzékeny információkhoz. A hiba a következő: először is ki kell váltani az MM Register Merge Optimization-t, majd regiszterátnevezés és helytelenül előrejelzett vzeroupper történik. Kiderült, hogy pontos ütemezéssel néhány processzornál lehetőség van helyreállítani a helytelenül előrejelzett vzeroupper utáni feldolgozást.

Most már tudjuk, hogy az alapvető műveletek, mint például a strlen, memcpy és strcmp is használják a vektoros regisztereket - így hatékonyan lehallgathatjuk ezeket a műveleteket bármelyik ponton a rendszeren. Nem számít, hogy más virtuális gépekben, homokozókban, konténerekben, folyamatokban vagy bármi másban történnek-e ezek a műveletek!

Ez azért működik, mert a regiszterfájl minden azonos fizikai magon lévő folyamat között megoszlik. Valójában két hyperthreading még ugyanazt a fizikai regiszterfájlt osztja meg.

Ezt a technikát a CVE-2023-20593 sérülékenységként azonosították, és az összes Zen 2-es processzortípuson működik, ideértve legalább az alábbi termékeket:

  • AMD Ryzen 3000 sorozatú processzorok; a javított AGESA firmware verzió: ComboAM4v2PI_1.2.0.C
  • AMD Ryzen PRO 3000 sorozatú processzorok; a javított AGESA firmware verzió: ComboAM4PI_1.0.0.C
  • AMD Ryzen Threadripper 3000 sorozatú processzorok; a javított AGESA firmware verzió: CastlePeakPI-SP3r3 1.0.0.A
  • AMD Ryzen Threadripper PRO 3000WX sorozatú processzorok; a javított AGESA firmware verzió: CastlePeakWSPI-sWRX8 1.0.0.C és ChagallWSPI-sWRX8 1.0.0.7
  • AMD Ryzen 4000 sorozatú processzorok Radeon Graphics grafikus vezérlővel „Renoir”; a javított AGESA firmware verzió: RenoirPI-FP6_1.0.0.D, ComboAM4v2PI_1.2.0.C
  • AMD Ryzen PRO 4000 sorozatú processzorok; a javított AGESA firmware verzió:
  • AMD Ryzen 5000 sorozatú processzorok Radeon Graphics grafikus vezérlővel; a javított AGESA firmware verzió: CezannePI-FP6_1.0.1.0
  • AMD Ryzen 7020 sorozatú processzorok Radeon Graphics grafikus vezérlővel; a javított AGESA firmware verzió: MendocinoPI-FT6_1.0.0.6
  • AMD EPYC „Rome” processzorok; a javított AGESA firmware verzió: RomePI 1.0.0.H

Ezt a hibát „fuzzing” segítségével találták meg. Valójában a gyártók is intenzíven használják a „fuzzing” módszert a saját termékeik alapos ellenőrzésére - az iparági szakkifejezés erre a „Post-Silicon Validation” fázis.

Az érintett rendszerek felhasználó mihamarabb frissítsenek. Az AMD kiadott egy mikrokód frissítést az érintett processzorokhoz. Lehet, hogy a BIOS  vagy az operációs rendszer szállítója már rendelkezik elérhető frissítéssel, amely tartalmazza azt - ezeket erősen ajánlott telepíteni.

Fontos még megjegyezni, hogy a hiba javításához nem elegendő az SMT letiltása. Egy másik, nem annyira jó megoldás lehet, egy elkerülő megoldás alkalmazása, ami viszont nagyobb teljesítményveszteséget okozhat - így a mikrokód frissítése javasolt:

Ha nincs vagy nem telepíthető a mikrokód frissítés akkor a chicken bit beállításával is lehet ezt a problémát orvosolni: DE_CFG[9].

Használhatja a msr-tools eszközt a chicken bit minden CPU magon történő beállításához:

wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))

A CPU meghatározásához segítség lehet ez az oldal, a konkrét ZEN2 alapú termékek itt találhatóak.

Hozzászólások

Balazs_B képe

Zeniális

A néhány napja kiadott AMD CPU Microcode Update-nek van ehhez bármilyen köze? Esetleg abban benne volt már a javítás vagy ezt mindenképpen csak BIOS frissítéssel lehet betömni?

Értékelés: 

0
Még nincs értékelve

Zeniális

#1 Benne lehet a javítás, nem feltétlenül kötelező a bios frissítés

Értékelés: 

5
Átlag: 5 (1 szavazat)

Zeniális

#1 Most van egy újabb is

Értékelés: 

0
Még nincs értékelve