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 Zenbleed sérülékenységről részleteket itt lehet megtudni.
- Az AMD hibaközlése: AMD-SB-7008.
- Debian Security Advisory DSA-5459-1
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
Zeniális
Beküldte Balazs_B -
Értékelés:
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?
Zeniális
Beküldte Alveus -
Értékelés:
Zeniális
Beküldte unisz -
Értékelés:
Úgy tűnik a PRIME X570-P
Beküldte kami911 -
Értékelés:
Úgy tűnik a PRIME X570-P BIOS-hoz már áprilisban megérkezett a javítás, bár akkor sem siették el, de kb ezt ígérte az AMD:
AMD Ryzen™ 3000 Series Desktop Processors (Formerly codenamed) “Matisse”:
Azóta a PRIME X570-P BIOS-hoz érkezett az ASUS frissebb, béta firmware, amely Cc-re frissít:
Ez utóbbival, úgy tűnik, egy másik sebezhetőséget a kutatók által feltárt a „Sinkclose” sebezhetőséget javították, amely szinte minden 2006 óta gyártott AMD processzort érint (AMD SB).
AMD Ryzen™ 3000 Series Desktop Processors (Formerly codenamed) “Matisse”