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

Értékelés: 

0
Még nincs értékelve

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

Értékelés: 

5
Átlag: 5 (1 szavazat)

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

Zeniális

Értékelés: 

0
Még nincs értékelve

#1 Most van egy újabb is

kami911 képe

Úgy  tűnik a PRIME X570-P

Értékelés: 

0
Még nincs értékelve

Ú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:

PRIME X570-P BIOS 5013 Version 5013

16.03 MB

2024/04/03

  1. Update AGESA version to ComboV2PI 1.2.0.Ca.
  2. Fix AMD processor vulnerabilities security.

AMD Ryzen™ 3000 Series Desktop Processors (Formerly codenamed) “Matisse”:

  • ComboAM4v2PI 1.2.0.C (2024-02-07)
  • ComboAM4PI 1.0.0.B (2024-03-20)

Azóta a PRIME X570-P BIOS-hoz érkezett az ASUS frissebb, béta firmware, amely Cc-re frissít:

Version 5020 (Beta Version)

16.03 MB

2024/09/30

  1. Updated AGESA to version ComboV2PI 1.2.0.Cc.
  2. Resolved CPU exception when adjusting items like ""When system is in sleep, hibernate, or soft off states"" in certain languages.

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”

  • ComboAM4v2PI 1.2.0Cc (2024-08-16)
  • ComboAM4PI 1.0.0ba (2024-08-16)