I ricercatori di sicurezza di Google hanno pubblicato informazioni su una vulnerabilità (CVE-2024-56161) nei processori AMD, che interessa il bootloader del microcodice e permette di eludere il meccanismo di verifica della firma digitale durante gli aggiornamenti del microcodice. Il caricamento di microcodice modificato consente di compromettere il meccanismo AMD SEV (Secure Encrypted Virtualization), utilizzato nei sistemi di virtualizzazione per proteggere le macchine virtuali da interferenze da parte del hypervisor o dell'amministratore del sistema host.
La vulnerabilità è causata dall'uso di una funzione hash insicura nel codice che esegue la verifica della firma digitale dopo il caricamento del microcodice nel CPU. Per effettuare un attacco, è necessario avere diritti da amministratore nel sistema locale (la possibilità di eseguire codice a livello di ring0, non trovandosi in una macchina virtuale).
Durante l'attacco è possibile infiltrarsi nel funzionamento dei sistemi ospiti, protetti mediante estensioni AMD SEV (Secure Encrypted Virtualization) e SEV-SNP (Secure Nested Paging), che offrono garanzie di integrità della memoria macchine virtuali, isolando i registri del processore e garantendo un funzionamento sicuro con tabelle di paginazione della memoria nidificate. Il meccanismo AMD SEV è stato creato affinché il personale dei data center e dei fornitori di cloud non potesse modificare o analizzare il contenuto della memoria dei sistemi ospiti protetti, né alterare i calcoli.
I ricercatori hanno preparato un prototipo di exploit, che consente di caricare microcodice arbitrario nel CPU, non firmato digitalmente. Per dimostrare la pericolosità della vulnerabilità, è stata proposta una modifica del microcodice che cambia la logica di funzionamento dell'istruzione RDRAND, utilizzata come una delle fonti di entropia nei generatori di numeri pseudorandomici, impiegati nel processo di generazione delle chiavi, durante l'esecuzione di operazioni crittografiche e per la generazione di identificatori casuali.
La modifica comporta il ritorno dell'istruzione RDRAND solo al numero 4, anziché a una sequenza casuale. Per prevenire attacchi reali ai sistemi di calcolo riservati, il microcodice modificato azzera il flag CF (carry flag), ovvero segna il valore restituito come errato. Ulteriori dettagli e strumenti per la generazione del microcodice modificato saranno pubblicati il 5 marzo, per dare agli utenti il tempo di installare la correzione sui propri sistemi. Un esempio di attacco riuscito è stato dimostrato per server i processori AMD EPYC 7B13 (Milan) e AMD Ryzen 9 7940HS (Phoenix).
Nel rapporto di AMD si segnala che la vulnerabilità si manifesta nei processori AMD basati sulla microarchitettura Zen delle generazioni 1-4. L'aggiornamento del microcodice per risolvere la vulnerabilità è stato rilasciato il 13 dicembre 2024 per i processori delle serie AMD EPYC 7001, 7002 e 7003 (Naples, Rome, Milan e Milan-X), e il 16 dicembre per i processori della serie AMD EPYC 9004 (Genoa, Genoa-X e Bergamo/Siena). Per risolvere la vulnerabilità nei sistemi che utilizzano l'attestazione SEV-SNP, è necessario anche un aggiornamento del firmware AMD SEV (fornito con gli aggiornamenti del BIOS dai produttori di hardware).
Si segnala inoltre un'altra vulnerabilità nei processori AMD, che permette l'esecuzione di attacchi tramite canali laterali per estrarre informazioni sui calcoli in sistemi ospitati protetti utilizzando il meccanismo AMD SEV. Il problema interessa i processori AMD EPYC delle generazioni 1-4 e riguarda la possibilità di estrarre dati dalla cache del processore, residui durante il funzionamento dei sistemi ospitati protetti. Per analizzare il contenuto della cache può essere utilizzato il metodo Prime+Probe, che implica il riempimento della cache con un insieme di valori di riferimento e la determinazione delle variazioni misurando i tempi di accesso durante il riempimento ripetuto. Si rileva che i metodi già proposti per proteggere da attacchi di tipo Spectre sono efficaci nel bloccare questo attacco.
Fonte: opennet.ru
