Bezpečnostní výzkumníci z Googlu zveřejnili informace o zranitelnosti (CVE-2024-56161) v procesorech AMD, která se týká zaváděči mikrokódu a umožňuje obejít mechanismus ověřování digitálního podpisu při aktualizacích mikrokódu. Načtení modifikovaného mikrokódu umožňuje kompromitaci mechanismu AMD SEV (Secure Encrypted Virtualization), který se používá v virtualizačních systémech k ochraně virtuálních strojů před zásahem hypervizora nebo administrátora hostitelské soustavy.
Zranitelnost je způsobena použitím nezabezpečené hashovací funkce v kódu, který provádí ověřování digitálního podpisu po načtení mikrokódu do CPU. K provedení útoku jsou potřebná administrátorská práva v místním systému (možnost vykonávat kód v režimu s nulovým ochranným kolem (ring0), aniž byste byli ve virtuálním stroji).
Během útoku lze zasahovat do provozu hostitelských systémů, které jsou chráněny pomocí rozšíření AMD SEV (Secure Encrypted Virtualization) a SEV-SNP (Secure Nested Paging), která poskytují záruky integrity paměti, virtuálních strojů, izolují procesorové registry a zajišťují bezpečný provoz s vloženými tabulkami stránek paměti. Mechanismus AMD SEV byl vytvořen tak, aby zaměstnanci datových center a cloudových providerů nemohli měnit nebo analyzovat obsah paměti chráněných hostitelských systémů, ani zkreslovat výpočty.
Výzkumníci připravili prototyp exploitu, který umožňuje načíst libovolný mikrokód do CPU, který není ověřen digitálním podpisem. Pro demonstration nebezpečnosti zranitelnosti bylo navrženo aktualizace mikrokódu, která mění logiku práce instrukce RDRAND, která se používá jako jeden ze zdrojů entropie v generátorech pseudonáhodných čísel používaných při vytváření klíčů, při provádění kryptografických operací a k generování náhodných identifikátorů.
Změna vede k vracení instrukce RDRAND pouze čísla 4 namísto náhodné sekvence. Aby se předešlo reálným útokům na systémy důvěrného výpočtu, upravený mikrokód nulovává flag CF (carry flag), tj. označuje vydanou hodnotu za chybnou. Další podrobnosti a nástroje pro generaci upraveného mikrokódu plánují zveřejnit 5. března, aby uživatelé měli čas na instalaci opravy na svých systémech. Úspěšný příklad útoku byl demonstrován na servery procesorech AMD EPYC 7B13 (Milan) a AMD Ryzen 9 7940HS (Phoenix).
Ve zprávě společnosti AMD je uvedeno, že zranitelnost se projevuje v procesorech AMD založených na 1-4 generacích mikroarchitektury Zen. Aktualizace mikrokódu, která odstranila zranitelnost, byla vydána 13. prosince 2024 pro procesory řady AMD EPYC 7001, 7002 a 7003 (Naples, Rome, Milan a Milan-X), a 16. prosince pro procesory řady AMD EPYC 9004 (Genoa, Genoa-X a Bergamo/Siena). Pro odstranění zranitelnosti je navíc potřeba aktualizace firmwaru AMD SEV (zahrnující se s aktualizacemi BIOS od výrobců zařízení).
Dále byla hlášena další zranitelnost v procesorech AMD, která umožňuje provádět útoky pomocí bočních kanálů k extrakci informací o výpočtech v chráněných systémových prostředích využívajících mechanismus AMD SEV. Problém se týká procesorů AMD EPYC 1-4 generace a souvisí s možností extrakce dat z procesorové cache, které se usazují během provozu chráněných systémů. K analýze obsahu cache lze použít metodu Prime+Probe, která zahrnuje naplnění cache referenčním souborem hodnot a určení změn prostřednictvím měření času přístupu k nim při opětovném naplnění. Je uvedeno, že pro blokování útoku jsou vhodné metody dříve navržené na ochranu proti útokům třídy Spectre.
Zdroj: opennet.ru
