CPU AMD Zen 5 sind anfällig für eine Schwachstelle, die eine Änderung des Mikrocodes und Umgehung der SEV-SNP-Isolierung ermöglicht.

Das Unternehmen AMD hat Prozessoren der Mikroarchitektur Zen 5 in die Liste der Produkte aufgenommen, die anfällig für die Sicherheitsanfälligkeit EntrySign sind, die es ermöglicht, den Mechanismus zur Überprüfung von digitalen Signaturen bei der Aktualisierung von Mikrocodes zu umgehen. Ursprünglich wurde angenommen, dass die Sicherheitsanfälligkeit nur CPU-Modelle von AMD der 1. bis 4. Generation der Mikroarchitektur Zen betrifft. Somit betrifft die Sicherheitsanfälligkeit auch Prozessoren wie Ryzen 9000 (Granite Ridge), EPYC 9005 (Turin), Ryzen AI 300 (Strix Halo, Strix Point, Krackan Point) und Ryzen 9000HX (Fire Range).

Neben der Aktualisierung des Mikrocodes ist auch ein Firmware-Update von AMD SEV erforderlich, das mit den BIOS-Updates geliefert wird, um die Sicherheitsanfälligkeit auf Systemen zu beheben, die SEV-SNP-Authentifizierung verwenden. Es wird behauptet, dass AMD an Hardware-Hersteller eine geänderte Firmware (ComboAM5PI 1.2.0.3c AGESA) weitergegeben hat, die zur Behebung des Problems notwendig ist, jedoch könnten die für Verbraucher verfügbaren finalen BIOS-Updates erst Wochen oder Monate später von den Herstellern veröffentlicht werden.

AMD-Mitarbeiter haben auch einen Patch zur Einführung in den Linux-Kernel vorgeschlagen, der die Installation nicht offizieller Mikrocoderevisionen blockiert (es wird angemerkt, dass korrekte Mikrocoderevisionen zusammen mit dem BIOS des Hardwareherstellers installiert werden müssen, jedoch sind bereits Versuche von Enthusiasten dokumentiert, nicht offizielle Korrekturen zu erstellen, die auf Fragmenten von Mikrocodes basieren, die aus dem BIOS herausgeschnitten wurden). Benutzern wird empfohlen, auf die offiziellen BIOS-Updates zu warten.

Die durch die Sicherheitsanfälligkeit EntrySign bereitgestellte Möglichkeit zur Änderung des Mikrocodes ermöglicht die Kompromittierung des Mechanismus AMD SEV (Secure Encrypted Virtualization), der in Virtualisierungssystemen zum Schutz eingesetzt wird virtuelle Maschinen vor Eingriffen durch den Hypervisor oder den Administrator des Host-Systems. Im Rahmen eines Angriffs kann man sich in die Arbeit von Gast-Systemen einloggen, die durch die Erweiterungen AMD SEV (Secure Encrypted Virtualization) und SEV-SNP (Secure Nested Paging) geschützt sind, die Garantien für die Integrität des Speichers virtueller Maschinen bieten, die Prozessorregister isolieren und einen sicheren Umgang mit verschachtelten Speichertabellen gewährleisten.

Die Schwachstelle entsteht durch die Verwendung des CMAC-Algorithmus zur Überprüfung des Mikrocode anstelle einer sicheren Hash-Funktion. AMD verwendet einen privaten RSA-Schlüssel, um den in den Prozessor geladenen Mikrocode digital zu signieren, während der Patch zusammen mit dem Mikrocode den öffentlichen Schlüssel verteilt. Um zu überprüfen, dass der öffentliche Schlüssel zu dem Original-Paar von RSA-Schlüsseln passt, vergleicht der Prozessor den Hash des öffentlichen AMD-Schlüssels, der während der Herstellung im CPU eingebaut wurde, mit dem Hash des öffentlichen Schlüssels, der im Patch angegeben ist.

Die Authentifizierung des Mikrocodes im Patch erfolgt durch den Vergleich des mit dem Patch gelieferten Hashes, der mit einer digitalen Signatur (RSASSA-PKCS1-v1_5) versehen ist, und des Hashs, der aus dem tatsächlich im Patch gelieferten Mikrocode berechnet wurde. Wenn der Referenz-Hash und der berechnete Hash übereinstimmen, wird der Patch in den internen Speicher der CPU geladen. Das Problem besteht darin, dass anstelle der empfohlenen kryptografisch sicheren Hash-Funktionen der CMAC-Algorithmus verwendet wird, der nicht für solche Vorgänge ausgelegt ist und nicht gegen Kollisionen geschützt ist.

CMAC ist keine Hash-Funktion, sondern implementiert einen Message Authentication Code (MAC), der vom Verschlüsselungsschlüssel abhängt. Die Funktion von AES-CMAC besteht darin, den kryptografischen Algorithmus AES zu verwenden und das Ergebnis seiner Anwendung mit dem nächsten Datenblock durch eine XOR-Operation zu kombinieren. Dieses Schema gewährleistet, dass eine Änderung der Eingabedaten zu unvorhersehbaren Änderungen der Ausgabedaten führt. Dabei ist es unangemessen, CMAC als Hash-Funktion zu verwenden, da jeder, der den ursprünglichen Verschlüsselungsschlüssel kennt, die Zwischenzustände der Verschlüsselung erfahren und Werte berechnen kann, die eine Änderung der Eingabedaten kompensieren, sodass das Ergebnis der Anwendung von CMAC unverändert bleibt.

AMD verwendet für AES-CMAC einen einheitlichen Verschlüsselungsschlüssel, der in allen CPUs seit Zen 1 bereitgestellt wird. Somit reicht es aus, diesen Schlüssel aus einer beliebigen AMD-CPU zu extrahieren, und er ist auf allen anderen CPUs anwendbar. Forscher haben herausgefunden, dass für die AES-CMAC-Verschlüsselung bei AMD ein bekannter Schlüssel aus einem Beispiel verwendet wurde, das in den Empfehlungen zur Verwendung von Blockverschlüsselungen NIST SP 800-38B erwähnt wird. Da AES-CMAC zum Hashing des in den Patch eingebetteten RSA-Schlüssels und des Mikrocodes verwendet wird, ermöglicht die Bestimmung des AES-CMAC-Verschlüsselungsschlüssels die Substitution eines anderen öffentlichen RSA-Schlüssels im Patch sowie eine Änderung des Mikrocodes.

Um einen gefälschten Patch zu erstellen, reicht es aus, einen neuen öffentlichen Schlüssel zu generieren, der denselben Hash erzeugt wie der originale öffentliche Schlüssel von AMD, sowie Kollisionen für die digitale Signatur zu finden. Kollisionen werden durch das Anfügen eines Zusatzblocks zum Mikrocodes erzeugt, der wie eine Ansammlung zufälliger Daten aussieht. Auf ähnliche Weise kann ein geänderter Patch mit Mikrocodes vorbereitet werden, der der digitalen Signatur entspricht, mit der der originale Patch von AMD beglaubigt wurde. Das Werkzeug Zentool, das Hilfsprogramme zur Analyse von Mikrocodes und zur Erstellung von Patches zur Änderung von Mikrocodes enthält, ist unter der Apache 2.0-Lizenz verfügbar. Um Mikrocodes zu ersetzen, sind Rechte zum Ausführen von Code auf Ring 0-Schutzebene erforderlich (VT-x- und AMD-V-Technologien ermöglichen es dem Gastbetriebssystem, mit Ring 0-Rechten auszuführen).

Quelle: opennet.ru

60GB SSD 8Gb DDR4