I ricercatori del Centro Helmholtz per la Sicurezza Informatica (CISPA) hanno pubblicato un nuovo metodo di attacco chiamato CacheWarp, in grado di compromettere il meccanismo di protezione 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. Il metodo proposto consente a un aggressore con accesso al hypervisor di eseguire codice esterno e ottenere privilegi elevati in una macchina virtuale protetta tramite AMD SEV.
L'attacco si basa su una vulnerabilità (CVE-2023-20592) causata da una gestione errata della cache durante l'esecuzione dell'istruzione del processore INVD, che consente di ottenere incoerenza tra i dati in memoria e nella cache, bypassando i meccanismi di integrità della memoria delle macchine virtuali implementati tramite le estensioni SEV-ES e SEV-SNP. La vulnerabilità interessa 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 porta a una riduzione delle prestazioni). Per la prima e la seconda generazione di AMD EPYC (Zen 1 e Zen 2), non è prevista alcuna protezione, poiché questi CPU non supportano l'estensione SEV-SNP, che garantisce il controllo dell'integrità. di macchine virtuali. La quarta generazione di processori AMD EPYC «Genoa» basati sull'architettura micro «Zen 4» non è vulnerabile.
La tecnologia AMD SEV viene utilizzata per l'isolamento delle macchine virtuali da parte di fornitori di cloud come Amazon Web Services (AWS), Google Cloud, Microsoft Azure e Oracle Compute Infrastructure (OCI). La protezione AMD SEV è implementata tramite la crittografia a livello hardware della memoria delle macchine virtuali. Inoltre, grazie all'estensione SEV-ES (Encrypted State), viene protetto anche il registro del CPU. Solo il sistema operativo guest attuale può accedere ai dati decrittografati, mentre gli altri macchine virtuali e l'hypervisor, nel tentativo di accedere a questa memoria, ricevono un insieme di dati crittografati.
Nella terza generazione di processori AMD EPYC è stata implementata una nuova estensione SEV-SNP (Secure Nested Paging), che garantisce un funzionamento sicuro con le tabelle di pagine di memoria annidate. Oltre alla crittografia della memoria e all'isolamento dei registri, SEV-SNP include ulteriori strumenti per proteggere l'integrità della memoria, impedendo qualsiasi modifica alle VM da parte dell'ipervisore. La gestione delle chiavi di crittografia avviene attraverso un processore PSP (Platform Security Processor) integrato nel chip, basato su architettura ARM.
L'essenza del metodo d'attacco proposto è l'uso dell'istruzione INVD per annullare i blocchi (linee) nella cache delle pagine sporche (dirty) senza azzerare i dati accumulati nella cache in memoria (write-back). In questo modo, il metodo consente di espellere i dati modificati dalla cache, senza alterare lo stato della memoria. Per realizzare l'attacco, si suggerisce di utilizzare eccezioni software (fault injection) per interrompere il funzionamento della macchina virtuale in due punti: nel primo punto, l'attaccante invoca l'istruzione "wbnoinvd" per azzerare tutte le operazioni di scrittura accumulate nella cache in memoria, e nel secondo punto, invoca l'istruzione "invd" per ripristinare le operazioni di scrittura non riflettenti in memoria a uno stato precedente.
È stato pubblicato un prototipo di exploit per verificare la vulnerabilità dei sistemi, che consente di eseguire la sostituzione dell'eccezione in una macchina virtuale protetta tramite AMD SEV e di riportare a uno stato precedente le modifiche non scritte in memoria nella VM. Il ripristino delle modifiche può essere utilizzato per alterare il flusso di esecuzione del programma ripristinando un vecchio indirizzo di ritorno nello stack o per utilizzare i parametri di un vecchio sessione per la quale era stata eseguita in precedenza l'autenticazione, restituendo il valore del flag di autenticazione.
Ad esempio, i ricercatori hanno dimostrato la possibilità di applicare il metodo CacheWarp per effettuare un attacco Bellcore all'implementazione dell'algoritmo RSA-CRT nella libreria ipp-crypto, permettendo il ripristino della chiave privata attraverso la sostituzione degli errori durante il calcolo della firma digitale. È stato anche dimostrato come è possibile alterare i parametri di verifica della sessione in OpenSSH durante la connessione remota al sistema ospite, e poi modificare lo stato della verifica durante l'esecuzione dell'utilità sudo per ottenere i privilegi di root su Ubuntu 20.04. L'exploit è stato testato su sistemi con processori AMD EPYC 7252, 7313P e 7443.
Fonte: opennet.ru
