Le CPU AMD Zen 5 sono vulnerabili a un difetto che consente la modifica del microcodice e l'aggiramento dell'isolamento SEV-SNP

L'azienda AMD ha incluso i processori basati sull'architettura microarchitetturale Zen 5 nell'elenco dei prodotti vulnerabili all'EntrySign, che consente di aggirare il meccanismo di verifica della firma digitale durante l'aggiornamento del microcodice. Inizialmente, si pensava che la vulnerabilità riguardasse solo le CPU AMD delle generazioni 1-4 dell'architettura Zen. Di conseguenza, la vulnerabilità si è rivelata applicabile a processori come Ryzen 9000 (Granite Ridge), EPYC 9005 (Turin), Ryzen AI 300 (Strix Halo, Strix Point, Krackan Point) e Ryzen 9000HX (Fire Range).

Oltre all'aggiornamento del microcodice, per risolvere la vulnerabilità nei sistemi che utilizzano la certificazione SEV-SNP, è anche necessario un aggiornamento del firmware AMD SEV, fornito con gli aggiornamenti del BIOS. Si afferma che AMD abbia fornito ai produttori di hardware un firmware modificato (ComboAM5PI 1.2.0.3c AGESA) necessario per risolvere il problema, ma gli aggiornamenti finali del BIOS disponibili per i consumatori potrebbero essere rilasciati dai produttori settimane o mesi dopo.

I dipendenti di AMD hanno anche proposto di includere nel kernel di Linux una patch che blocchi il caricamento di aggiornamenti del microcodice non ufficiali (si osserva che gli aggiornamenti corretti del microcodice devono essere installati insieme al BIOS del produttore dell'hardware, ma già sono emerse tentativi di creazione da parte degli appassionati di correzioni non ufficiali, basate su frammenti di microcodice estratti dal BIOS). Si raccomanda agli utenti di attendere gli aggiornamenti ufficiali del BIOS.

La vulnerabilità fornita da EntrySign permette di modificare il microcodice e può compromettere il meccanismo AMD SEV (Secure Encrypted Virtualization), utilizzato nei sistemi di virtualizzazione per la protezione macchine virtuali da interferenze da parte dell'iperdispositivo o dell'amministratore del sistema host. Durante un attacco, è possibile infiltrarsi nel funzionamento dei sistemi guest protetti mediante le estensioni AMD SEV (Secure Encrypted Virtualization) e SEV-SNP (Secure Nested Paging), le quali offrono garanzie di integrità per la memoria delle macchine virtuali, isolando i registri del processore e garantendo un funzionamento sicuro con le tabelle di pagina di memoria annidate.

La vulnerabilità è causata dall'utilizzo nel processo di verifica del microcodice dell'algoritmo di inserimento CMAC anziché di una funzione hash affidabile. L'azienda AMD utilizza una chiave RSA segreta per firmare digitalmente il microcodice caricato nel processore, mentre nel patch del microcodice distribuisce la chiave pubblica. Per verificare che la chiave pubblica corrisponda alla coppia originale di chiavi RSA, il processore esegue un confronto dell'hash dalla chiave pubblica AMD, incorporata durante la produzione nel CPU, con l'hash dalla chiave pubblica specificata nel patch.

L'autenticazione del microcodice nel patch avviene confrontando l'hash fornito con il patch, firmato digitalmente (RSASSA-PKCS1-v1_5), e l'hash calcolato sulla base del microcodice effettivamente fornito nel patch. Se gli hash di riferimento e calcolati coincidono, il patch viene caricato nella memoria interna del CPU. Il problema è che invece di utilizzare funzioni hash crittograficamente sicure raccomandate, è stato utilizzato l'algoritmo CMAC, non progettato per tali operazioni e non protetto dai tentativi di collisione.

CMAC non è una funzione hash, ma implementa un codice di autenticazione del messaggio (Message Authentication Code) che dipende dalla chiave di crittografia. Il funzionamento di AES-CMAC consiste nell'utilizzare l'algoritmo crittografico AES e combinare il risultato della sua applicazione con il blocco di dati successivo tramite un'operazione XOR. Questo schema garantisce che la modifica dei dati in ingresso porterà a un cambiamento imprevedibile dei dati in uscita. Pertanto, CMAC non può essere utilizzato come funzione hash, poiché chiunque conosca la chiave di crittografia originale può scoprire gli stati intermedi della crittografia e calcolare valori che possano compensare le modifiche nei dati di ingresso, mantenendo invariato il risultato dell'applicazione di CMAC.

AMD utilizza una chiave di crittografia univoca per AES-CMAC, fornita su tutte le CPU a partire da Zen 1. Pertanto, è sufficiente estrarre questa chiave da qualsiasi CPU AMD e sarà applicabile a tutte le altre CPU. I ricercatori hanno scoperto che per la crittografia AES-CMAC, AMD ha utilizzato una chiave nota, presa da un esempio menzionato nelle raccomandazioni sull'uso degli algoritmi a blocchi NIST SP 800-38B. Poiché AES-CMAC è usato per l'hashing della chiave RSA incorporata nel patch e del contenuto del microcodice, determinando la chiave di crittografia AES-CMAC, è possibile sostituire nel patch un'altra chiave RSA pubblica e modificare il contenuto del microcodice.

Per creare un patch fasullo, è sufficiente generare una nuova chiave pubblica che produce lo stesso hash della chiave pubblica originale di AMD, oltre a trovare collisioni per la firma digitale. Le collisioni si formano allegando al microcodice un blocco supplementare che appare come un insieme di dati casuali. In questo modo è possibile preparare un patch modificato con microcodice corrispondente alla firma digitale con cui era stato autenticato il patch originale di AMD. L'insieme di strumenti Zentool, che include utilità per l'analisi del microcodice e la creazione di patch per modificarlo, è disponibile sotto licenza Apache 2.0. Per sostituire il microcodice è necessario avere diritti per eseguire codice a livello di ring 0 (le tecnologie VT-x e AMD-V consentono al sistema ospite di funzionare con diritti di Ring 0).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster