Azienda Intel aggiornamento del microcodice che corregge (CVE-2019-14607), attraverso manomissioni del meccanismo di gestione dinamica della tensione e della frequenza nella CPU di provocare danni ai contenuti delle celle dati, anche nelle aree utilizzate durante i calcoli negli enclavi isolati Intel SGX. L'attacco è stato denominato Plundervolt e consente potenzialmente a un utente locale di ottenere un aumento dei privilegi di sistema, provocare un'interruzione del servizio e accedere a dati riservati.
L'attacco rappresenta un pericolo solo nel contesto di manipolazioni con i calcoli negli enclave SGX, poiché per eseguirlo è necessario avere diritti di root nel sistema. Nel caso più semplice, un attaccante può ottenere distorsioni nelle informazioni elaborate all'interno dell'enclave, ma nei casi più complessi non si esclude la possibilità di ricreare le chiavi private memorizzate nell'enclave, utilizzate per la crittografia con algoritmi RSA-CRT e AES-NI. La tecnica può anche essere utilizzata per generare errori in algoritmi originariamente corretti al fine di provocare vulnerabilità durante l'uso della memoria, ad esempio, per organizzare accessi a aree oltre il buffer allocato.
Prototipo di codice per effettuare un attacco su GitHub
L'essenza del metodo sta nella creazione di condizioni che portano a distorsioni impreviste dei dati durante i calcoli in SGX, dalle quali l'uso della crittografia e dell'autenticazione della memoria nell'enclave non fornisce protezione. È stato possibile introdurre distorsioni utilizzando le interfacce di programmazione standard per regolare la frequenza e la tensione, normalmente impiegate per ridurre il consumo energetico durante i periodi di inattività del sistema e per attivare la massima prestazione durante carichi di lavoro intensivi. Le caratteristiche di frequenza e tensione ricoprono l'intero chip, influenzando anche l'esecuzione dei calcoli nell'enclave isolata.
Modificando la tensione, è possibile creare condizioni in cui la carica non è sufficiente per rigenerare la cella di memoria all'interno della CPU, causando una modifica del suo valore. La principale differenza rispetto all'attacco è ciò che RowHammer consente di modificare il contenuto di singoli bit nella memoria DRAM, leggendo ciclicamente i dati dalle celle adiacenti, mentre Plundervolt permette di cambiare i bit all'interno della CPU quando i dati sono già stati caricati dalla memoria per eseguire i calcoli. Questa caratteristica consente di eludere i meccanismi di controllo dell'integrità e crittografia dei dati in memoria applicati in SGX, poiché i valori in memoria rimangono corretti, ma possono essere distorti durante le operazioni su di essi, prima che il risultato venga registrato in memoria.
Se questo valore modificato viene utilizzato nel processo di moltiplicazione durante la crittografia, il testo crittografato risultante sarà errato. Avendo la possibilità di accedere al gestore in SGX per crittografare i propri dati, un attaccante può accumulare statistiche sui cambiamenti del testo crittografato in uscita e, in pochi minuti, ripristinare il valore della chiave memorizzata nell'enclave. Il testo originale in entrata e il testo crittografato corretto in uscita sono noti, la chiave non cambia e l'uscita di un testo crittografato errato indica che qualche bit è stato distorto nel valore opposto.
Analizzando le coppie di valori corretti e distorti dei cifrati accumulati in vari guasti, utilizzando metodi di analisi differenziale dei guasti (DFA, ) è possibile le chiavi probabili utilizzate per la crittografia simmetrica AES e, successivamente, analizzando le intersezioni delle chiavi in diversi set, determinare la chiave ricercata.

La problematica riguarda vari modelli di processori Intel, inclusi i CPU Intel Core dalla sesta
alla decima generazione, così come le quinta e sesta generazione Xeon E3, la prima e seconda generazione Intel Xeon Scalable, Xeon D,
Xeon W e Xeon E.
Ricordiamo che la tecnologia SGX () è stata introdotta nei processori Intel Core di sesta generazione (Skylake) e una serie di istruzioni che consentono alle applicazioni di livello utente di isolare aree di memoria riservate - enclavi, il cui contenuto non può essere letto o modificato neppure dal kernel e dal codice eseguito in modalità ring0, SMM e VMM. Passare il controllo al codice nell'enclave non è possibile tramite funzioni di salto tradizionali e manipolazioni dei registri e dello stack: per trasferire il controllo all'enclave viene utilizzata un'istruzione nuova creata appositamente, che esegue un controllo delle autorizzazioni. Allo stesso tempo, il codice inserito nell'enclave può utilizzare metodi classici di chiamata per accedere alle funzioni all'interno dell'enclave e un'istruzione speciale per chiamare funzioni esterne. Per proteggere da attacchi hardware, come la connessione al modulo DRAM, viene applicata la crittografia della memoria dell'enclave.
Fonte: opennet.ru
