EntrySign: una vulnerabilitat que afecta processadors AMD Zen

El logotip de vulnerabilitat de EntrySign

Recentment, els enginyers de Google han donat a conèixer detalls sobre una vulnerabilitat crítica identificada com CVE-2024-56161. Batejada sota el nom de EntrySign, aquesta fallada permet evadir el mecanisme de verificació de signatura digital durant l'actualització del microcodi a processadors AMD que utilitzen les primeres quatre generacions de la microarquitectura Zen.

EntrySign afecta un ampli rang de processadors, permet a un atacant eludir els controls de seguretat que garanteixen la integritat del microcodi, cosa que podria obrir la porta a modificacions malicioses en el comportament del maquinari.

Sobre la vulnerabilitat

L'origen d'aquesta vulnerabilitat es troba en la utilització de l'algorisme AES-CMAC durant la verificació de la signatura digital en lloc duna funció hash fiable. AMD utilitzava aquest algorisme per signar el microcodi, utilitzant una clau RSA privada i afegint una clau pública al pegat.

El procés de verificació implica que el processador compari el hash de la clau pública incorporada durant la fabricació amb el hash de la clau especificada al pegat. No obstant això, atès que es va utilitzar CMAC, que en realitat no és una funció hash sinó un codi d'autenticació de missatges dependent duna clau, es va obrir una bretxa de seguretat.

CMAC es basa en l'algorisme AES i utilitza operacions XOR per combinar blocs de dades, però en no estar dissenyat per ser resistent a col·lisions, permet que un atacant que conegui la clau de xifratge pugui calcular valors intermedis que compensin canvis a l'entrada, deixant el resultat de l'operació inalterat.

Tant Intel com AMD van dissenyar conjunts d'instruccions de microcodi basats en RISC únics, tots dos sense documentar, però conceptualment similars a altres conjunts d'instruccions RISC com ARM o RISC-V. Igual que el programari, implementar maquinari complex correctament és un desafiament; històricament això ha portat a múltiples errors ben coneguts, com l'error FDIV d'Intel a Pentium l'any 1994.

AMD subministra una única clau de xifrat per a AES-CMAC en tots els seus processadors des de Zen 1 fins a Zen 4, el que significa que si algú extreu aquesta clau duna CPU, pot aplicar-la a totes les altres. De fet, els investigadors han comprovat que aquests processadors utilitzen una clau coneguda, extreta d'un exemple a les pautes NIST SP 800-38B.

Això ha permès, en teoria, generar pegats falsos en substituir la clau pública del pegat per una altra que produeixi el mateix hash, i seleccionar col·lisions per a la signatura digital. Aquestes col·lisions s'aconsegueixen afegint un bloc addicional de dades aparentment aleatòries al microcodi, de manera que el pegat modificat mantingui la signatura digital original d'AMD.

EntrySign, la vulnerabilitat CVE-2024-56161 que permet a atacants eludir controls de seguretat

Per abordar aquesta problemàticaai explorar noves maneres de manipular el microcodi en processadors AMD, els enginyers de Google van desenvolupar Zentool, una col·lecció d'eines combinades per a l'examen de pegats de microcodi, que inclouen desassemblatge limitat, creació de pegats de microcodi utilitzant una quantitat limitada d'assemblatge d'enginyeria inversa.

Zentool ha estat dissenyat per facilitar l'anàlisi i la modificació del microcodi, oferint una sèrie d'ordres que permeten des d'editar paràmetres i reemplaçar instruccions fins a carregar el microcodi modificat a la CPU i corregir la signatura digital del pegat.

Per exemple, l'ordre zentool edit possibilita l'edició de paràmetres en fitxers de microcodi, mentre que zentool print desplega informació detallada sobre les estructures internes del microcodi. Així mateix, zentool load carrega el microcodi a la CPU i zentool resign recalcula la signatura digital, considerant els canvis realitzats. A més, el paquet inclou utilitats com mcas i mcop, que proporcionen funcionalitats d'assemblador i desassemblador per treballar directament amb el microcodi.

Les capacitats de Zentool permeten als desenvolupadors preparar i aplicar els seus propis pegats en els processadors AMD Zen. Com a exemple il·lustratiu, s'ha preparat un pegat que modifica la lògica de la instrucció RDRAND. Després d'aplicar aquest pegat, la instrucció RDRAND deixa de generar seqüències pseudoaleatòries i comença a tornar de forma constant el número 4, demostrant així el poder de modificar el microcodi i alterar el comportament esperat del processador.

Cal esmentar que Zentool ve acompanyat d'una guia detallada sobre la microarquitectura RISC86 utilitzada al microcodi d'AMD, així com d'una nota instructiva que explica com crear microcodi personalitzat. La guia mostra, entre altres coses, com dissenyar noves instruccions de processador, modificar el comportament de les instruccions existents i carregar aquests canvis directament a la CPU.

Finalment, si estàs interessat a poder conèixer més sobre això, pots consultar els detalls al següent enllaç.


Add as preferred source