AMD potvrdilo potenciální zranitelnost CPU AMD Zen 3 vůči útoku Spectre-STL

AMD zveřejnilo zprávu analyzující zabezpečení optimalizační technologie PSF (Predictive Store Forwarding) implementované v procesorech řady Zen 3. Studie teoreticky potvrdila použitelnost metody útoku Spectre-STL (Spectre-v4), identifikované v květnu 2018, na Technologie PSF, ale v praxi zatím nebyly nalezeny žádné šablony kódu schopné vést k útoku a celkové nebezpečí je hodnoceno jako nevýznamné.

Připomeňme, že útok Spectre-v4 (Speculative Store Bypass) je založen na obnově dat, která se usadila v mezipaměti procesoru po zahození výsledku spekulativního provádění operací při zpracování střídavých operací zápisu a čtení pomocí nepřímého adresování. Když operace čtení následuje po operaci zápisu (např. mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), může být offset adresy čtení již znám díky provádění podobných operací (operace čtení jsou prováděny mnohem častěji a čtení lze provádět z mezipaměti) a procesor může spekulativně provádět čtení před zápisem, aniž by čekal na výpočet nepřímého offsetu zápisu.

Tato funkce umožňuje instrukci čtení pro přístup ke staré hodnotě na nějaké adrese, zatímco operace ukládání ještě není dokončena. Pokud dojde k chybě predikce, neúspěšná spekulativní operace bude zahozena, ale stopy jejího provedení zůstanou v mezipaměti procesoru a lze je získat jednou z metod pro určení obsahu mezipaměti na základě analýzy změn v přístupu. čas do mezipaměti a neuložených dat.

Přidáno k procesorům AMD Zen 3, PSF optimalizuje STLF (Store-To-Load-Forwarding), který provádí operace čtení spekulativně předpovídáním vztahu mezi operacemi čtení a zápisu. Při použití klasického STLF procesor provede operaci „načtení“ dat přímo předávaných z předchozího příkazu „store“, aniž by čekal na skutečný zápis výsledku do paměti, ale ujistil se, že adresy použité při „načtení“ a "store" příkazy se shodují. Optimalizace PSF činí kontrolu adres spekulativní a provádí operaci "načtení" před tím, než byly vypočítány informace o adrese, pokud byl předtím proveden pár uložení/načtení manipulující s jedinou adresou. Pokud se predikce nezdaří, stav se vrátí zpět, ale data zůstanou v mezipaměti.

Útok na PSF je možný pouze v rámci jedné úrovně oprávnění, pokrývá pouze aktuální kontext procesu a je blokován metodami izolace adresního prostoru nebo hardwarovými sandboxovými mechanismy. V tomto případě mohou být tímto problémem potenciálně ovlivněny softwarové metody sandboxingu v procesech. Útok představuje hrozbu pro systémy, jako jsou prohlížeče, virtuální stroje spouštějící kód a JIT, které spouštějí kód třetích stran v rámci jednoho procesu (útok by mohl umožnit nedůvěryhodnému izolovanému kódu získat přístup k dalším procesním datům).

AMD poskytlo řadu metod pro úplné nebo selektivní zakázání PSF, ale vzhledem k zanedbatelnému riziku pro většinu aplikací doporučilo, aby tato optimalizace nebyla ve výchozím nastavení zakázána. Pro selektivní ochranu procesů, které izolují ty, kteří spouštějí nedůvěryhodný kód, se navrhuje deaktivovat PSF nastavením bitů MSR „SSBD“ a „PSFD“, a to i pro jednotlivá vlákna. Pro linuxové jádro byly připraveny záplaty s implementací možností příkazového řádku „psfd“ a „nopsfd“, které řídí, jak se PSF zapíná a vypíná.

Zdroj: opennet.ru

Přidat komentář