I ricercatori del Centro Helmholtz per la sicurezza informatica (CISPA) hanno pubblicato un nuovo metodo di attacco chiamato CacheWarp, che consente 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 dell'hypervisor o dell'amministratore del sistema host. Il metodo proposto consente a un attaccante con accesso all'hypervisor di eseguire codice non autorizzato e di ottenere privilegi elevati in una macchina virtuale protetta tramite AMD SEV.
L'attacco si basa sull'utilizzo di una vulnerabilità (CVE-2023-20592), causata da un'errata gestione della cache durante l'esecuzione dell'istruzione di processore INVD, attraverso la quale è possibile ottenere un disallineamento dei dati nella memoria e nella cache, eludendo i meccanismi di integrità della memoria delle macchine virtuali implementati con 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 una riduzione delle prestazioni). Per le prime e seconde generazioni di AMD EPYC (Zen 1 e Zen 2), non è prevista alcuna protezione, poiché in queste CPU manca il supporto per l'estensione SEV-SNP, che garantisce il controllo dell'integrità. macchine virtuali. La quarta generazione di processori AMD EPYC "Genoa", basata sull'architettura microarchitetturale "Zen 4", non è vulnerabile.
La tecnologia AMD SEV è utilizzata per isolare le macchine virtuali da fornitori di cloud come Amazon Web Services (AWS), Google Cloud, Microsoft Azure e Oracle Compute Infrastructure (OCI). La protezione AMD SEV è attuata tramite la crittografia a livello hardware della memoria delle macchine virtuali. Inoltre, mediante l'estensione SEV-ES (Encrypted State) viene protetta anche la registrazione dei CPU. Solo il sistema operativo guest attivo ha accesso ai dati decrittografati, mentre gli altri macchine virtuali e l'hypervisor, quando tentano di accedere a questa memoria, ottengono un insieme di dati crittografati.
Nella terza generazione dei processori AMD EPYC è stata implementata un'estensione aggiuntiva 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, in SEV-SNP sono stati introdotti ulteriori strumenti per proteggere l'integrità della memoria, impedendo modifiche alle VM da parte dell'iperpartizionatore. La gestione delle chiavi di crittografia avviene lato PSP (Platform Security Processor), integrato nel chip del processore, realizzato sulla base dell'architettura ARM.
Il metodo d'attacco proposto si basa sull'uso dell'istruzione INVD per invalidare i blocchi (linee) nella cache delle pagine sporche (dirty) senza azzerare i dati accumulati nella cache nella memoria (write-back). In questo modo, il metodo consente di espellere i dati modificati dalla cache senza alterare lo stato della memoria. Per attuare l'attacco, si suggerisce di usare eccezioni software (fault injection) per interrompere il funzionamento della macchina virtuale in due punti: nel primo punto, l'attaccante invoca l'istruzione "wbnoinvd" per inviare tutte le operazioni di scrittura accumulate nella cache alla memoria, e nel secondo punto invoca l'istruzione "invd" per ripristinare le operazioni di scrittura non riflesse nella memoria nel loro stato precedente.
Per verificare la vulnerabilità dei propri sistemi, è stato pubblicato un prototipo di exploit che consente di effettuare un'assegnazione di eccezione a una macchina virtuale protetta tramite AMD SEV, e di ripristinare nello stato precedente le modifiche non salvate nella memoria nella VM. Il ripristino delle modifiche può essere utilizzato per modificare il flusso di esecuzione del programma, riportando un vecchio indirizzo di ritorno nello stack o per l'entrata dei parametri di una vecchia sessione, per la quale era già stata eseguita l'autenticazione, restituendo il valore di un segnale di autenticazione.
Ad esempio, i ricercatori hanno dimostrato la possibilità di utilizzare il metodo CacheWarp per eseguire un attacco Bellcore all'implementazione dell'algoritmo RSA-CRT nella libreria ipp-crypto, permettendo di recuperare la chiave privata tramite la sostituzione di errori nel calcolo della firma digitale. È stato inoltre mostrato come è possibile sostituire i parametri di verifica della sessione con OpenSSH durante la connessione remota a un sistema ospite, e quindi modificare lo stato di verifica durante l'esecuzione dello strumento sudo per ottenere i diritti di root in Ubuntu 20.04. Il funzionamento dell'exploit è stato verificato su sistemi con processori AMD EPYC 7252, 7313P e 7443.
Fonte: opennet.ru
