AMD potvrdilo potenciálnu zraniteľnosť procesorov AMD Zen 3 voči útoku Spectre-STL

AMD zverejnilo správu analyzujúcu bezpečnosť optimalizačnej technológie PSF (Predictive Store Forwarding) implementovanej v procesoroch série Zen 3. Štúdia teoreticky potvrdila použiteľnosť metódy útoku Spectre-STL (Spectre-v4), identifikovanej v máji 2018, na Technológia PSF, ale v praxi sa zatiaľ nenašli žiadne šablóny kódu schopné viesť k útoku a celkové nebezpečenstvo je hodnotené ako bezvýznamné.

Pripomeňme, že útok Spectre-v4 (Speculative Store Bypass) je založený na obnove dát, ktoré sa usadili vo vyrovnávacej pamäti procesora po zahodení výsledku špekulatívneho vykonávania operácií pri spracovaní striedavých operácií zápisu a čítania pomocou nepriameho adresovania. Keď operácia čítania nasleduje po operácii zápisu (napr. mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), posun adresy čítania už môže byť známy z dôvodu vykonávania podobných operácií (operácie čítania sú vykonáva oveľa častejšie a čítanie je možné vykonávať z vyrovnávacej pamäte) a procesor môže špekulatívne vykonávať čítanie pred zápisom bez toho, aby čakal na výpočet nepriameho posunu zápisu.

Táto funkcia umožňuje inštrukcii čítania pristupovať k starej hodnote na nejakej adrese, kým operácia ukladania ešte nie je dokončená. Ak dôjde k chybe predikcie, neúspešná špekulatívna operácia sa zahodí, ale stopy jej vykonania zostanú vo vyrovnávacej pamäti procesora a možno ich získať jednou z metód na určenie obsahu vyrovnávacej pamäte na základe analýzy zmien v prístupe. čas do uložených a neuložených údajov.

Pridaný k procesorom AMD Zen 3, PSF optimalizuje STLF (Store-To-Load-Forwarding), ktorý vykonáva operácie čítania špekulatívne predpovedaním vzťahu medzi operáciami čítania a zápisu. Pri použití klasického STLF procesor vykoná operáciu „načítanie“ údajov priamo preposlaných z predchádzajúceho príkazu „store“ bez toho, aby čakal na skutočný zápis výsledku do pamäte, ale uistil sa, že adresy použité pri „načítaní“ a "uložiť" príkazy sa zhodujú. Optimalizácia PSF robí kontrolu adries špekulatívnym a vykonáva operáciu "načítanie" pred vypočítaním informácií o adrese, ak bol predtým vykonaný pár uloženia/načítania manipulujúci s jednou adresou. Ak predikcia zlyhá, stav sa vráti späť, ale údaje zostanú vo vyrovnávacej pamäti.

Útok na PSF je možný len v rámci jednej úrovne privilégií, pokrýva len aktuálny kontext procesu a je blokovaný metódami izolácie adresného priestoru alebo mechanizmami hardvérovej karantény. V tomto prípade môžu byť týmto problémom potenciálne ovplyvnené metódy softvérového sandboxingu v procesoch. Útok predstavuje hrozbu pre systémy, ako sú prehliadače, virtuálne stroje na vykonávanie kódu a JIT, ktoré spúšťajú kód tretích strán v rámci jedného procesu (útok by mohol umožniť nedôveryhodnému izolovanému kódu získať prístup k iným procesným údajom).

AMD poskytlo množstvo metód na úplné alebo selektívne vypnutie PSF, ale vzhľadom na zanedbateľné riziko pre väčšinu aplikácií odporučilo, aby táto optimalizácia nebola predvolene vypnutá. Na selektívnu ochranu procesov, ktoré izolujú tých, ktorí vykonávajú nedôveryhodný kód, sa navrhuje deaktivovať PSF nastavením bitov MSR „SSBD“ a „PSFD“, a to aj pre jednotlivé vlákna. Pre jadro Linuxu boli pripravené záplaty s implementáciou možností príkazového riadku „psfd“ a „nopsfd“, ktoré riadia zapínanie a vypínanie PSF.

Zdroj: opennet.ru

Pridať komentár