Dva útoky na mechanismus predikce kanálu mezipaměti v procesorech AMD
Skupina výzkumníků z Technické univerzity v Grazu (Rakousko), dříve známých vývojem útočných metod MDS, NetSpectre, Vrhací kladivo и ZombieLoad, provedla výzkum hardwarových optimalizací specifických pro procesory AMD a vyvinul dvě nové metody útoků postranním kanálem, které manipulují s úniky dat během provozu predikčního mechanismu LXNUMX cache kanálu procesorů AMD. Tyto techniky lze použít ke snížení účinnosti ochrany ASLR, obnovení klíčů ve zranitelných implementacích AES a ke zlepšení účinnosti útoku Spectre.
Byly identifikovány problémy v implementaci mechanismu predikce kanálů (prediktor cesty) v mezipaměti CPU první úrovně (L1D), používaném k předpovídání, který kanál mezipaměti obsahuje určitou paměťovou adresu. Optimalizace používaná v procesorech AMD je založena na kontrole μ-tagů (μTag). μTag se vypočítá aplikací specifické hashovací funkce na virtuální adresu. Během provozu modul predikce kanálů používá μTag k určení kanálu mezipaměti z tabulky. μTag tedy umožňuje procesoru omezit se na přístup pouze ke konkrétnímu kanálu, bez prohledávání všech možností, což výrazně snižuje spotřebu energie CPU.
Během reverzního inženýrství implementace systému predikce kanálů v různých generacích procesorů AMD vydaných v letech 2011 až 2019 byly identifikovány dvě nové techniky útoku na postranní kanály:
Collide+Probe – umožňuje útočníkovi sledovat přístup do paměti pro procesy běžící na stejném logickém jádru CPU. Podstatou metody je použití virtuálních adres, které způsobují kolize v hashovací funkci používané k výpočtu μTag ke sledování přístupu do paměti. Na rozdíl od útoků Flush+Reload a Prime+Probe používaných na procesorech Intel Collide+Probe nepoužívá sdílenou paměť a funguje bez znalosti fyzických adres.
Load+Reload – umožňuje velmi přesně určit stopy přístupu do paměti na stejném fyzickém jádru CPU. Metoda je založena na skutečnosti, že fyzická paměťová buňka může být v L1D cache pouze jednou. Tito. přístup ke stejné paměťové buňce na jiné virtuální adrese způsobí vyřazení buňky z L1D cache, což umožní sledování přístupu do paměti. Ačkoli útok spoléhá na sdílenou paměť, nevyprázdní řádky mezipaměti, což umožňuje tajné útoky, které nevytlačují data z mezipaměti poslední úrovně.
Na základě technik Collide+Probe a Load+Reload vědci předvedli několik scénářů útoku na postranní kanál:
Je ukázána možnost využití metod pro organizaci skrytého nepřímého komunikačního kanálu mezi dvěma procesy, umožňující přenos dat rychlostí až 588 kB za sekundu.
Pomocí kolizí v μTag bylo možné snížit entropii pro různé varianty ASLR (Address Space Layout Randomization) a obejít ochranu ASLR v jádře na kompletně aktualizovaném systému Linux. Je ukázána možnost provedení útoku za účelem snížení entropie ASLR jak z uživatelských aplikací, tak pomocí kódu JavaScript spouštěného v prostředí sandbox a kódu spuštěného v jiném hostujícím prostředí.
Na základě metody Collide+Probe byl implementován útok s cílem obnovit šifrovací klíč ze zranitelné implementace (na základě T-stůl) šifrování AES.
Použitím metody Collide+Probe jako kanálu pro sběr dat byl útok Spectre schopen extrahovat soukromá data z jádra bez použití sdílené paměti.
Tato chyba zabezpečení se vyskytuje u procesorů AMD založených na mikroarchitekturách
Buldozer, Piledriver, Steamroller, Zen (Ryzen, Epic), Zen+ a Zen2.
AMD bylo na problém upozorněno 23. srpna 2019, ale zatím zprávu nezveřejnil s informacemi o zablokování zranitelnosti. Podle výzkumníků lze problém zablokovat na úrovni aktualizace mikrokódu poskytnutím bitů MSR pro selektivní deaktivaci systému predikce kanálů, podobně jako Intel pro kontrolu deaktivace mechanismů predikce větví.