EntrySign: una vulnerabilità che colpisce i processori AMD Zen

Il logo della vulnerabilità EntrySign

Recentemente, il Gli ingegneri di Google hanno annunciato dettagli su una vulnerabilità critica identificata come CVE-2024-56161. Battezzato sotto il nome di Segno di entrata, questo fallimento consente di eludere il meccanismo di verifica della firma digitale durante l'aggiornamento del microcodice sui processori AMD che utilizzano le prime quattro generazioni della microarchitettura Zen.

Segno di entrata colpisce un'ampia gamma di processori, consente a un aggressore di aggirare i controlli di sicurezza che garantiscono l'integrità del microcodice, aprendo potenzialmente la porta a modifiche dannose al comportamento dell'hardware.

A proposito di vulnerabilità

L'origine di questa vulnerabilità risiede nell'uso dell'algoritmo AES-CMAC durante la verifica della firma digitale invece di una funzione hash attendibile. AMD ha utilizzato questo algoritmo per firmare il microcodice, utilizzando una chiave RSA privata e aggiungendo una chiave pubblica alla patch.

Il processo di verifica prevede che il processore confronti l'hash della chiave pubblica incorporata durante la produzione con l'hash della chiave specificata nella patch. Tuttavia, poiché è stato utilizzato CMAC, che in realtà non è una funzione hash ma un codice di autenticazione trasmissione del messaggio, si è aperta una falla nella sicurezza.

CMAC si basa sull'algoritmo AES e utilizza le operazioni XOR per combinare blocchi di dati, ma poiché non è progettato per resistere alle collisioni, consente a un aggressore che conosce la chiave di crittografia di calcolare valori intermedi che compensano le modifiche nell'input, lasciando invariato il risultato dell'operazione.

Sia Intel che AMD hanno progettato set di istruzioni microcodice unici basati su RISC, entrambi non documentati, ma concettualmente simili ad altri set di istruzioni RISC come ARM o RISC-V. Come il software, anche l'implementazione corretta di hardware complesso è una sfida; Storicamente, ciò ha portato alla comparsa di numerosi bug noti, come il bug FDIV di Intel nel Pentium nel 1994.

AMD fornisce una singola chiave di crittografia per AES-CMAC in tutti i suoi processori da Zen 1 a Zen 4, il che significa che se qualcuno estrae questa chiave da una CPU, può applicarla a tutte le altre. Infatti, i ricercatori hanno scoperto che questi processori utilizzano una chiave nota, tratta da un esempio nelle linee guida NIST SP 800-38B.

Ciò ha permesso, in teoria, di generare false patch sostituendo la chiave pubblica della patch con una che produce lo stesso hash, e selezionare le collisioni per la firma digitale. Tali collisioni vengono ottenute aggiungendo un ulteriore blocco di dati apparentemente casuali al microcodice, in modo che la patch modificata mantenga la firma digitale originale di AMD.

EntrySign, la vulnerabilità CVE-2024-56161 che consente agli aggressori di aggirare i controlli di sicurezza

Per affrontare questo problemaPer esplorare nuovi modi per manipolare il microcodice nei processori AMD, gli ingegneri di Google Hanno sviluppato Zentool, una raccolta di strumenti combinati per l'esame delle patch del microcodice, tra cui lo smontaggio limitato e la creazione di patch del microcodice utilizzando una quantità limitata di assemblaggio mediante reverse engineering.

Zentool è stato progettato per facilitare l'analisi e la modifica del microcodice, offrendo una serie di comandi che consentono di modificare i parametri, sostituire le istruzioni, caricare il microcodice modificato nella CPU e correggere la firma digitale della patch.

Ad esempio, il comando "zentool edit" consente la modifica dei parametri nei file di microcodice, mentre "zentool print" visualizza informazioni dettagliate sulle strutture interne del microcodice. Inoltre, «zentool load» carica il microcodice nella CPU e «zentool resign» ricalcola la firma digitale, tenendo conto delle modifiche apportate. Inoltre, il pacchetto include utilità come mcas e mcop, che forniscono funzionalità di assemblaggio e disassemblaggio per lavorare direttamente con il microcodice.

Le capacità di Zentool consente agli sviluppatori di preparare e applicare le proprie patch sui processori AMD Zen. Come esempio illustrativo, è stata preparata una patch che modifica la logica dell'istruzione RDRAND. Dopo aver applicato questa patch, l'istruzione RDRAND smette di generare sequenze pseudo-casuali e inizia a restituire in modo coerente il numero 4, dimostrando così la potenza della modifica del microcodice e dell'alterazione del comportamento previsto del processore.

Vale la pena menzionarlo Zentool viene fornito con una guida dettagliata sulla microarchitettura RISC86 utilizzata nel microcodice AMD, nonché una nota didattica che spiega come creare un microcodice personalizzato. La guida mostra, tra le altre cose, come progettare nuove istruzioni per il processore, modificare il comportamento delle istruzioni esistenti e caricare tali modifiche direttamente nella CPU.

Infine, se sei interessato a saperne di più, puoi consultare i dettagli nel seguente link