Kompania AMD ka përfshirë procesorët e bazuar në mikroarkitekturën Zen 5 në listën e produkteve të prekura nga vulnerabiliteti EntrySign, i cili lejon anashkalimin e mekanizmit të verifikimit të nënshkrimit digjital gjatë përditësimit të mikro kodit. Fillimisht, ishte menduar se vulnerabiliteti ndikonte vetëm CPU AMD të bazuar në 1-4 gjenerata të mikroarkitekturës Zen. Kështu, vulnerabiliteti ka rezultuar të jetë i aplikueshëm për procesorë si Ryzen 9000 (Granite Ridge), EPYC 9005 (Turin), Ryzen AI 300 (Strix Halo, Strix Point, Krackan Point) dhe Ryzen 9000HX (Fire Range).
Përveç përditësimit të mikro kodit, për eliminimin e vulnerabilitetit në sistemet që përdorin verifikimin SEV-SNP, është e nevojshme gjithashtu përditësimi i firmware-it AMD SEV, i cili ofrohet si pjesë e përditësimeve të BIOS. Raportohet se kompania AMD i ka transferuar prodhuesve të pajisjeve firmware-in e modifikuar (ComboAM5PI 1.2.0.3c AGESA) e nevojshme për zgjidhjen e problemit, por përditësimet e fundit të BIOS në dispozicion për konsumatorët mund të lëshohen nga prodhuesit pas javësh ose muajsh.
Punonjësit e AMD gjithashtu kanë propozuar përfshirjen e një patch-i në bërthamën Linux që bllokon ngarkimin e përditësimeve të mikrokodit jozyrtare (duhet theksuar se përditësimet korrekte të mikrokodit duhet të instalohen së bashku me BIOS nga prodhuesi i pajisjeve, por tashmë kanë filluar përpjekjet e entuziastëve për të krijuar rregullime jozyrtare, të bazuara në fragmente mikrokodi të prerë nga BIOS). Përdoruesit rekomandohen të presin përditësimet zyrtare të BIOS.
Vulnerabiliteti EntrySign ofron mundësinë e ndryshimit të mikrokodit, duke e mundësuar kompromentimin e mekanizmit AMD SEV (Secure Encrypted Virtualization), i cili përdoret në sistemet e virtualizimit për mbrojtje makinat virtuale nga ndërhyrja e hypervisor ose administratorit të sistemit host. Gjatë një sulmi, mund të futesh në funksionimin e sistemeve të mysafirëve, të mbrojtura me ndihmën e zgjerimeve AMD SEV (Secure Encrypted Virtualization) dhe SEV-SNP (Secure Nested Paging), të cilat ofrojnë garanci të integritetit të memories së makinave virtuale, duke izoluara regjistrat e procesorit dhe duke siguruar funksionimin e sigurt me tabelat e brendshme të memories.
Vulnerabiliteti shkaktohet nga përdorimi i algoritmit të imitoshëm CMAC në procesin e verifikimit të mikro-kodit, në vend të një funksioni të sigurt hash. Kompania AMD përdor një çelës të mbyllur RSA për të nënshkruar mikro-kodin që ngarkohet në procesor, ndërsa përmban një çelës të hapur si pjesë e patch-it të mikro-kodit. Për të verifikuar se çelësi i hapur korrespondon me çiftin origjinal të çelësave RSA, procesori kryen një krahasim të hash-it nga çelësi i hapur AMD, i futur gjatë prodhimit në CPU, me hash-in nga çelësi i hapur i specifikuar në patch.
Verifikimi i shkallës së mikro-kodit në patch bëhet përmes krahasimit të hash-it të siguruar me nënshkrim dixhital (RSASSA-PKCS1-v1_5) dhe hash-it të llogaritur mbi mikro-kodin që është në fakt i përfshirë në patch. Nëse hash i referencës dhe ai i llogaritur përputhen, patch-i ngarkohet në memorien e brendshme të CPU. Problemi është se, në vend të përdorimit të funksioneve të sigurta kriptografike të rekomanduara, është përdorur algoritmi CMAC, i cili nuk është ndërtuar për operacione të tilla dhe nuk është i mbrojtur nga përputhjet kolizionale.
CMAC nuk është një funksion hash, por realizon një imitosh (Message Authentication Code) që varet nga çelësi i enkriptimit. Funksionimi i AES-CMAC përfshin përdorimin e algoritmit kriptografik AES dhe kombinimin e rezultatit të tij me bllokun e dhënave të ardhshëm përmes operacionit XOR. Ky skemë garanton që ndryshimi i të dhënave hyrëse do të sjellë një ndryshim të paparashikueshëm në të dhënat në dalje. Megjithatë, CMAC nuk duhet të përdoret si një funksion hash, pasi kushdo që e di çelësin e enkriptimit mund të zbulojë gjendjet ndërmjetëse të enkriptimit dhe të llogarisë vlerat që mund të kompenzojnë ndryshimin në të dhënat hyrëse, në mënyrë që rezultati i përdorimit të CMAC të mbetet i pandryshuar.
AMD përdor një çelës të vetëm për AES-CMAC, i ofruar në të gjitha CPU-të që nga Zen 1. Kështu, mjafton të nxirret ky çelës nga çdo CPU AMD dhe do të jetë i aplikueshëm në të gjitha CPU-të e tjera. Kërkuesit zbuluan se për enkriptimin AES-CMAC në AMD është përdorur një çelës i njohur, i marrë nga një shembull i përmendur në rekomandimet për përdorimin e algoritmeve të bllokimeve, NIST SP 800-38B. Duke qenë se AES-CMAC përdoret për hashimin e çelësit RSA të integruar dhe përmbajtjes së mikrokodit, duke përcaktuar çelësin e enkriptimit AES-CMAC, u krijua mundësia për të zëvendësuar në patch një çelës tjetër të hapur RSA dhe për të ndryshuar përmbajtjen e mikrokodit.
Për të krijuar një patch fals, mjafton të formohet një çelës i ri i hapur, që gjeneron të njëjtin hash si çelësi i vërtetë i hapur AMD, si dhe të gjenden kolizionet për nënshkrimin digjital. Kolizionet formohen duke ngjitur një bllok shtesë në mikrokod, që duket si një grup të dhënash të rastësishme. Në këtë mënyrë, mund të përgatitet një patch të ndryshuar me mikrokod, që i përket nënshkrimit digjital me të cilin patch-i origjinal nga AMD është vulosur. Mjeti Zentool, që përfshin utilitetet për analizën e mikrokodit dhe krijimin e patch-eve për ndryshimin e mikrokodit, është i disponueshëm me licencën Apache 2.0. Për të zëvendësuar mikrokodin, kërkohen të drejta për të ekzekutuar kodin në nivelin e zero të mbrojtjes (teknologjitë VT-x dhe AMD-V lejojnë sistemin mik të operojë me të drejta Ring 0).
Burimi: opennet.ru
