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!

AM5 základní desky už začaly dostávat podporu pro Zen 5

Jak daleko je přesně chvíle, kdy AMD vydá novou generaci procesorů s chystanou architekturou Zen 5, stále není jasné. Ale zřejmě se ten okamžik přiblížil, protože základní desky už pro ně začínají přidávat podporu v BIOSech, respektive UEFI firmwarech. To je důležité i proto, aby desky koupené v e-shopech nové procesory hned po vydání podporovaly (byť dnes už to s možnostmi flashování z USB není tak kritické). Celý článok „AM5 základní desky už začaly dostávat podporu pro Zen 5“ »

  •  
  •  
  •  

Radeony generace RDNA 4: Unikly specifikace a výkon obou GPU

V předchozích cyklech nové generace GPU měly dvouletý cyklus, což by vycházelo na letošní podzim. Nvidia před časem v roadmapě kladla GeForce RTX 5000 na rok 2025 a u AMD není stále jasné, kdy by mohly Radeony RX 8000 přijít, určitá šance, že to bude letos, ale asi zůstává. Nyní se na internetu objevily specifikace těchto GPU s architekturou RDNA 4. Pokud jsou pravé, možná by to i mohlo ukazovat na vydání relativně brzo. Celý článok „Radeony generace RDNA 4: Unikly specifikace a výkon obou GPU“ »

  •  
  •  
  •  

Zen 5 bude mít vyšší spotřebu i cenu, frekvence dosáhne 6 GHz

V pondělí jsme tu měli zprávu, dle níž by procesory AMD s architekturou Zen 5 měly dosahovat výkonů až o 40 % lepších na jedno jádro proti Zenu 4 (ne však nutně v jednovláknové aplikaci, jak jsem rozebírali). K Zenu 5 se toho teď na internetu seběhlo víc, takže se podíváme ještě na nějaké další zvěsti. Máme další únik o výkonu, ale bohužel i negativnější informace o možném napálení cen a o zvýšení spotřeby – to je asi skoro jisté. Celý článok „Zen 5 bude mít vyšší spotřebu i cenu, frekvence dosáhne 6 GHz“ »

  •  
  •  
  •  

Pridaj komentár

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