Vulnerabilità nelle CPU AMD che consente di aggirare il meccanismo di protezione SEV (Secure Encrypted Virtualization).

I ricercatori dell'Helmholtz Center for Information Security (CISPA) hanno pubblicato un nuovo metodo di attacco CacheWarp per compromettere il meccanismo di sicurezza AMD SEV (Secure Encrypted Virtualization) utilizzato nei sistemi di virtualizzazione per proteggere le macchine virtuali dalle interferenze dell'hypervisor o dell'amministratore del sistema host. Il metodo proposto consente a un utente malintenzionato con accesso all'hypervisor di eseguire codice di terze parti e aumentare i privilegi in una macchina virtuale protetta utilizzando AMD SEV.

L'attacco si basa sull'utilizzo di una vulnerabilità (CVE-2023-20592) causata da un funzionamento errato della cache durante l'esecuzione dell'istruzione del processore INVD, con l'aiuto della quale è possibile ottenere una mancata corrispondenza dei dati in memoria e cache e meccanismi di bypass per mantenere l'integrità della memoria della macchina virtuale, implementati in base alle estensioni SEV-ES e SEV-SNP. La vulnerabilità colpisce i processori AMD EPYC dalla prima alla terza generazione.

Per i processori AMD EPYC di terza generazione (Zen 3), il problema è stato risolto nell'aggiornamento del microcodice di novembre rilasciato ieri da AMD (la correzione non comporta alcun degrado delle prestazioni). Per la prima e la seconda generazione di AMD EPYC (Zen 1 e Zen 2), la protezione non è fornita, poiché queste CPU non supportano l'estensione SEV-SNP, che fornisce il controllo dell'integrità delle macchine virtuali. La quarta generazione di processori AMD AMD EPYC “Genoa” basati sulla microarchitettura “Zen 4” non è vulnerabile.

La tecnologia AMD SEV viene utilizzata per l'isolamento delle macchine virtuali da fornitori cloud come Amazon Web Services (AWS), Google Cloud, Microsoft Azure e Oracle Compute Infrastructure (OCI). La protezione AMD SEV è implementata tramite crittografia a livello hardware della memoria della macchina virtuale. Inoltre, l'estensione SEV-ES (Encrypted State) protegge i registri della CPU. Solo il sistema ospite corrente ha accesso ai dati decrittografati e quando altre macchine virtuali e l'hypervisor tentano di accedere a questa memoria, ricevono un set di dati crittografati.

La terza generazione di processori AMD EPYC ha introdotto un'estensione aggiuntiva, SEV-SNP (Secure Nested Paging), che garantisce il funzionamento sicuro delle tabelle di pagine di memoria nidificate. Oltre alla crittografia generale della memoria e all'isolamento dei registri, SEV-SNP implementa misure aggiuntive per proteggere l'integrità della memoria impedendo modifiche alla VM da parte dell'hypervisor. Le chiavi di crittografia vengono gestite da un processore PSP (Platform Security Processor) separato integrato nel chip, implementato sulla base dell'architettura ARM.

L'essenza del metodo di attacco proposto è utilizzare l'istruzione INVD per invalidare i blocchi (righe) nella cache delle pagine sporche senza scaricare in memoria i dati accumulati nella cache (write-back). Pertanto, il metodo consente di eliminare i dati modificati dalla cache senza modificare lo stato della memoria. Per effettuare un attacco si propone di utilizzare eccezioni software (fault injection) per interrompere il funzionamento della macchina virtuale in due punti: in primo luogo, l'aggressore richiama l'istruzione “wbnoinvd” per resettare tutte le operazioni di scrittura sulla memoria accumulate in la cache, e in secondo luogo richiama l'istruzione “invd” per riportare al vecchio stato le operazioni di scrittura non riflesse in memoria.

Per verificare le vulnerabilità dei vostri sistemi, è stato pubblicato un prototipo di exploit che permette di inserire un'eccezione in una macchina virtuale protetta tramite AMD SEV e ripristinare le modifiche nella VM che non sono state reimpostate in memoria. Il rollback di una modifica può essere utilizzato per modificare il flusso di un programma restituendo un vecchio indirizzo di ritorno nello stack o per utilizzare i parametri di accesso di una vecchia sessione precedentemente autenticata restituendo un valore di attributo di autenticazione.

I ricercatori hanno ad esempio dimostrato la possibilità di sferrare un attacco Bellcore con il metodo CacheWarp all'implementazione dell'algoritmo RSA-CRT nella libreria ipp-crypto, che permetteva di recuperare la chiave privata mediante sostituzione di errore durante il calcolo di un valore digitale firma. Mostra anche come modificare i parametri di verifica della sessione su OpenSSH quando ci si connette in remoto a un sistema ospite e quindi modificare lo stato di verifica quando si esegue l'utilità sudo per ottenere i diritti di root in Ubuntu 20.04. L'exploit è stato testato su sistemi con processori AMD EPYC 7252, 7313P e 7443.

Fonte: opennet.ru

Aggiungi un commento