CPU AMD Zen 5 sú náchylné na zraniteľnosti, ktoré umožňujú zmenu mikrokódu a obídenie izolácie SEV-SNP

Spoločnosť AMD zaradila procesory založené na mikroarchitektúre Zen 5 do zoznamu produktov postihnutých zraniteľnosťou EntrySign, ktorá umožňuje obísť mechanizmus overovania digitálneho podpisu pri aktualizácii mikrokódu. Pôvodne sa predpokladalo, že zraniteľnosť sa týka iba CPU AMD na báze 1-4 generácií mikroarchitektúry Zen. Takto sa zraniteľnosť ukázala ako relevantná aj pre procesory ako Ryzen 9000 (Granite Ridge), EPYC 9005 (Turin), Ryzen AI 300 (Strix Halo, Strix Point, Krackan Point) a Ryzen 9000HX (Fire Range).

Okrem aktualizácie mikrokódu je na odstránenie zraniteľnosti v systémoch využívajúcich overovanie SEV-SNP tiež potrebná aktualizácia firmvéru AMD SEV, ktorý je súčasťou aktualizácií BIOS. Tvrdí sa, že spoločnosť AMD poskytla výrobcov hardvéru upravený firmvér (ComboAM5PI 1.2.0.3c AGESA), ktorý je potrebný na vyriešenie problému, ale dostupné konečné aktualizácie BIOS pre zákazníkov môžu byť vydané výrobcami až o niekoľko týždňov alebo mesiacov.

Zamestnanci AMD navrhli aj zaradenie záplaty do jadra Linux, ktorá blokuje načítanie neoficiálnych aktualizácií mikrokódu (uvádza sa, že správne aktualizácie mikrokódu je potrebné nainštalovať spolu s BIOS výrobcu hardvéru, avšak už existujú pokusy o vytvorenie neoficiálnych opráv, založených na fragmentoch mikrokódu vyrezaných z BIOS). Používateľom sa odporúča počkať na oficiálne aktualizácie BIOS.

Možnosť modifikácie mikrokódu poskytovaná zraniteľnosťou EntrySign umožňuje skompromitovať mechanizmus AMD SEV (Secure Encrypted Virtualization), používaný v systémoch virtualizácie na ochranu virtuálních strojů pred zásahmi hypervízora alebo správcu hostiteľského systému. Počas útoku je možné zasiahnuť do fungovania hostených systémov, chránených pomocou rozšírení AMD SEV (Secure Encrypted Virtualization) a SEV-SNP (Secure Nested Paging), poskytujúcich záruky integrity pamäte virtuálnych strojov, izolujúcich procesorové registry a zabezpečujúcich bezpečnú prácu s vnorenými tabuľkami stránok pamäte.

Zraniteľnosť je spôsobená použitím pri verifikácii mikrokódu algoritmu autentizácie CMAC namiesto spoľahlivej hash funkcie. Spoločnosť AMD používa uzavretý kľúč RSA na podpisovanie mikrokódu nahrávaného do procesora digitálnym podpisom a v rámci patchu s mikrokódom distribuuje otvorený kľúč. Na overenie toho, že otvorený kľúč je v súlade s originálnym párom RSA kľúčov, procesor vykonáva porovnanie hash hodnoty otvoreného kľúča AMD, zabudovanej počas výroby do CPU, s hash hodnotou otvoreného kľúča uvedeného v patchi.

Autentifikácia mikrokódu v patchi sa vykonáva porovnaním hash hodnoty dodanej s patchom, overenej digitálnym podpisom (RSASSA-PKCS1-v1_5), a hash hodnoty, vypočítanej na základe skutočne dodávaného mikrokódu v patchi. Ak sa referenčná a vypočítaná hash hodnoty zhodujú — patch sa nahráva do vnútornej pamäte CPU. Problém je v tom, že namiesto odporúčaných kryptograficky bezpečných hash funkcií bol použitý algoritmus CMAC, ktorý nie je určený na takéto operácie a nie je chránený proti kolíziám.

CMAC nie je hash funkciou, ale implementuje autentizačný kód (Message Authentication Code), ktorý závisí od šifrovacieho kľúča. Práca AES-CMAC spočíva v použití kryptografického algoritmu AES a kombinovaní výsledku jeho aplikácie s nasledujúcim blokom dát pomocou operácie XOR. Takáto schéma zaručuje, že zmena vstupných údajov povedie k nepredvídateľnej zmene výstupných údajov. CMAC sa však nedá použiť ako hash funkcia, pretože ktokoľvek, kto pozná pôvodný šifrovací kľúč, môže odhaliť medzičasy šifrovania a vypočítať hodnoty, ktoré dokážu kompenzovať zmeny vo vstupných údajoch tak, že výsledok aplikácie CMAC ostane nezmenený.

AMD používa pre AES-CMAC jediný šifrovací kľúč dodávaný na všetkých CPU, počnúc Zen 1. Týmto spôsobom stačí získať tento kľúč z akéhokoľvek CPU AMD a bude aplikovateľný na všetky ostatné CPU. Výskumníci zistili, že pre AES-CMAC šifrovanie v AMD bol použitý známy kľúč, získaný z príkladu uvedeného v odporúčaniach na používanie blokových šifrov NIST SP 800-38B. Keďže AES-CMAC sa používa na hashovanie vloženého RSA kľúča a obsahu mikrokódu, určením šifrovacieho kľúča AES-CMAC vznikla možnosť náhrady v patchi za iný verejný RSA kľúč a zmeny obsahu mikrokódu.

Na vytvorenie falošného patchu stačí vytvoriť nový verejný kľúč generujúci ten istý hash, aký generoval pôvodný verejný kľúč AMD, a tiež nájsť kolízie pre digitálny podpis. Kolízie sa vytvárajú pripojením k mikrokódu prídavného bloku, ktorý vyzerá ako súbor náhodných údajov. Takýmto spôsobom je možné pripraviť upravený patch s mikrokódom, ktorý zodpovedá digitálnemu podpisu, ktorým bol potvrdený pôvodný patch od AMD. Nástrojový súbor Zentool, ktorý obsahuje nástroje na analýzu mikrokódu a vytváranie patchov pre zmenu mikrokódu, je dostupný pod licenciou Apache 2.0. Na nahradenie mikrokódu je potrebné mať práva na vykonávanie kódu na úrovni nulového ochranného kruhu (technológie VT-x a AMD-V umožňujú hosťujúcemu systému vykonávať s právami Ring 0).

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster