Bezpečnostní slabina Predictive Store Forwarding v AMD Zen 3

Predictive Store Forwarding: Nový výkonnostní výkonnostní zlepšovák, ale také nová příležitost pro útoky typu Spectre

AMD vydalo dokument popisující Predictive Store Forwarding v procesorech Zen 3, jeden z nových triků pro vyšší výkon v této architektuře. Důvod této sdílnosti ale nepotěší. Funkce PSF otevírá novou zranitelnost, protože umožňuje útoky na spekulativní vykonávání kódu. V Linuxu už jsou ochrany před touto chybou; naštěstí ale snižují výkon jen málo a závažnost by měla být nízká, takže AMD doporučuje ponechat PSF zapnutý.

Už jsme si jaksi zvykli na periodicky se objevující nové objevy bezpečnostních problémech v procesorech. Teď byla publikována další takový bezpečnostní chyba, která ukazuje, že stereotyp, podle kterého jsou „děravé“ Intely oproti bezpečným alternativním CPU, není moc užitečný. Minimálně část z těchto útoků na spekulativní vykonávání kódu je vedlejším produktem samotné podstaty fungování procesorů a nepředstavuje „selhání“ Intelu.

AMD teď publikovalo dokument, v kterém prezentuje jedno z výkonnostních zlepšení v architektuře Zen 3, tzv. funkci Predictive Store Forwarding. A důvodem je zřejmě ani ne tak chlubení, jako hlavně, že tato technika podobně jako další spekulativní optimalizace v procesorech otevírá cestu k bezpečnostním útokům typu Spectre. Jde o nové architektonické zlepšení (míněno po stránce výkonu), takže momentálně je takto zranitelný jen Zen 3 a ne předchozí architektury. Tedy Ryzeny 5000 (mimo mobilní APU Lucienne) a Epyc 7003 Milan.

Predictive Store Forwarding

Predictive Store Forwarding navazuje na běžně používanou funkci Store to Load Forwarding. To je technika, s níž procesor identifikuje situace, kdy kód čte z paměti stejnou adresu, na kterou předtím bylo něco zapsáno, respektive něco čeká ve frontě na zapsání. Pokud procesor má tuto zapisovanou hodnotu ještě v bufferech, může jí rovnou předat následné čtecí operaci. Přístup do paměti, který normálně stojí stovky cyklů času, se tím obejde a výsledkem je velké zlepšení výkonu.

Predictive Store Forwarding k tomuto přidává další úroveň, která funguje v momentě, kdy je možné, že by se dal tento Forwarding použít, ale ještě nebyly vyhodnocené podmínky ukazující, zda k situaci opravdu dojde (tedy ještě není potvrzeno, že se adresa dat v paměti shoduje).

Predictive Store Forwarding proto funguje spekulativně – dodá daná data předem pro případ, že správně uhodne, co kód za chvíli bude chtít. To dobře funguje třeba ve smyčkách, kdy je pravděpodobné, že se bude opakovat vzorec z předchozí iterace. Pokud by se spekulace netrefila, vše je vráceno zpět.

Právě případy chybného odhadu jsou ovšem zranitelné na útoky. Podobně jako predikce větvení a další takové techniky je možné, že chybná spekulace zanese do cache procesoru data ze špatné adresy. A pokud je na tuto situaci napsán speciální škodlivý kód, může se k těmto datům v cache dostat, než je procesor zase zahodí.

Kvůli tomuto riziku nyní AMD publikovalo MSR registry, s nimiž bude operační systém moci toto chování procesoru dočasně vypnout v situacích, kdy by mohlo hrozit napadení – typicky by to mohlo jít u prohlížečů, které spouštějí javascript z webových stránek, který by mohl obsahovat útočný kód. Povaha chyby je podobná zranitelnosti Speculative Store Bypass (Spectre v4), takže ochrana by asi měla být aktivována v podobných situacích.

Poměrně potěšitelný detail je, že zranitelnost Predictive Store Forwarding funguje jen v rámci jednoho vlákna procesoru, protože stav spekulativního prediktoru má každé vlákno vlastní. SMT tedy touto zranitelností není postiženo. Chyba také není zneužitelná, pokud se přechází mezi separátním adresními prostory, takže virtuální stroj se například dá ochránit použitím funkce Secure Encrypted Virtualization (na Epycu 7003).

Riziko je prý jen malé

Nebezpečnost je podle AMD malá („low“), takže pro běžné uživatele je doporučeno nechat procesor ve výchozím stavu, což nemá způsobovat vážnější riziko. Optimalizace Predictive Store Forwaring zůstává ve výchozím stavu aktivní, čili nedochází ke změnám výkonu.

AMD recommends leaving the Predictive Store Forwarding feature enabled as the default setting.

Pro enterprise a serverové uživatele je možné použít zmíněnou separaci adresního prostoru. V případě, že to nelze, je pak možné použít ony kontrolní registry k deaktivaci PSF, což zneužití znemožní za cenu nějakého výkonu. Negativní dopad by snad neměl být velký, soudě podle testu Phoronixu. Nejhorší propady v ojedinělých případech jsou prý do 1–2 %. Toto opatření vypínající PSF lze na Linuxu zapnout zvlášť, ale je také implicitně zapnuté vždy, pokud uživatel aktivuje ochranu před chybou Speculative Store Bypass (v takovém případě má ale také výkonnostní propad této mitigace, který je větší).

Propad výkonu procesoru s architekturou Zen 3 vlivem vypnutí funkce Predictive Store Forwarding (Zdroj: Phoronix)

Na Linuxu se ochrana zapíná parametrem jádra psfd. Parametr mitigations=auto nyní ochranu psfd nezapíná, v defaultním nastavení ji tedy Linux neaplikuje, dle doporučení AMD.

Parametry Linuxu ovládající ochrany proti zranitelnosti Predictive Store Forwarding (Zdroj: AMD)

Spekulativní forwarding asi nebude výsadou Zenu 3

Ačkoli zatím byl problém publikován jen u Zenu 3, spekulativní provádění store-to-load forwardingu zřejmě není unikátní vlastností této architektury. Podle patentů by totéž měly dělat například i jádra Apple. Nemáme zprávy o tom, zda už podobnou predikci a spekulaci dělají i aktuální jádra Intelu (Ice Lake/Tiger Lake/Rocket Lake), ale je asi pravděpodobné, aby takovéto optimalizace nyní nebo v budoucnu Intel nasadil také.

Tyto procesory asi pak také budou mít podobný mechanismus na deaktivaci této spekulace a podobné (volitelné) ochrany. Zřejmě půjde stejně jako u prediktoru větvení (Spectre V2) o potenciálně zranitelnou věc, která ale v procesorech je třeba.

Zdroj: AMD

Jan Olšan, redaktor Cnews.cz


  •  
  •  
  •  
Flattr this!

Přichází Epyc 4004: AMD uvádí serverové procesory pro socket AM5

Před časem prosákly informace o tom, že AMD chystá platformu levných serverových procesorů založenou na desktopovém socketu AM5, odvozenou od procesorů Ryzen. A opravdu, nyní byly tyto informace potvrzeny a firma tyto procesory oficiálně uvádí jako Epyc 4004. Mohou mít až 16 jader i V-Cache, existuje ale dokonce i čtyřjádrový model, které v desktopu běžně neseženete. Jinak jde ale o prakticky přesné obdoby Ryzenů pro PC. Celý článok „Přichází Epyc 4004: AMD uvádí serverové procesory pro socket AM5“ »

  •  
  •  
  •  

APU Ryzeny se Zenem 5 už nebudou mít ovladače pro Windows 10

Hodně lidí nerado přechází na novější verze Windows, ať už někdy kvůli hardwarovým nárokům, nebo častěji kvůli změnám v chování a vzhledu. Aktuálně je to tak s Windows 11. Brzo ale už asi setrvávání na Windows 10 začne narážet na překážky. Například od AMD. Tato firma totiž už zřejmě začíná ukončovat podporu tohoto OS. Jeho nově vydávaný hardware už nebude mít zřejmě vůbec ovladače pro Windows 10. Celý článok „APU Ryzeny se Zenem 5 už nebudou mít ovladače pro Windows 10“ »

  •  
  •  
  •  

Levné 4nm Ryzeny 5 8400F a Ryzeny 7 8700F už jsou v obchodech

Začátkem jara prosákly z Číny zprávy o tom, že by se pro desktopové desky se socketem AM5 měla dát koupit verze nových APU Ryzenů 8000G s deaktivovanou grafikou. Tyto modely Ryzen 7 8700F a Ryzen 5 8400F pak skutečně byly vydané, ale zprvu jen pro OEM trh. Nyní je však AMD začíná prodávat globálně jako levnou možnost pro zájemce o něco se Zen 4. To platí hlavně pro Ryzen 5 8400F, který by teď mohl být nejlevnějším CPU pro socket AM5. Celý článok „Levné 4nm Ryzeny 5 8400F a Ryzeny 7 8700F už jsou v obchodech“ »

  •  
  •  
  •  

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *