AMD ha rivelato informazioni su una nuova classe di attacchi microarchitetturali ai suoi processori — TSA (Transient Scheduler Attack). Questo attacco consente a un malintenzionato di eludere i meccanismi di isolamento della CPU e di identificare i dati trattati in altri contesti, ad esempio, di determinare informazioni elaborate a livello del nucleo partendo dallo spazio utente o di accedere ai dati utilizzati in un'altra macchina virtuale dalla macchina virtuale ospite.
Le vulnerabilità sono state identificate durante lo sviluppo di un toolkit creato da ricercatori di Microsoft e dell'École Polytechnique Fédérale de Lausanne per il test di stress dell'isolamento microarchitetturale tra diverse aree di confine di accesso, come il nucleo, le macchine virtuali e i processi.
Il metodo di attacco si basa sulla dipendenza temporale dell'esecuzione di alcune istruzioni dallo stato delle strutture microarchitettoniche. Quando il processore si aspetta una rapida conclusione dell'istruzione di lettura dei dati dalla memoria (ad esempio, supponendo che i dati siano nella cache L1), ma non riesce a ottenere i dati con successo, si verifica uno stato di "falsa conclusione" dell'istruzione. In questo caso, il processore, ancora prima di determinare questo stato, può pianificare l'esecuzione speculativa di altre operazioni che dipendono dal risultato dell'istruzione di caricamento dalla memoria.
Poiché il caricamento non è andato a buon fine, i dati associati vengono considerati non validi dal processore e l'operazione di caricamento viene ripetuta in seguito. Anche le operazioni dipendenti vengono rieseguite dopo la disponibilità dei dati corretti. In questo caso, non viene eseguita la svuotatura della pipeline dopo l'esecuzione dell'istruzione per la quale è stato fissato lo stato di "falsa conclusione", e dati non corretti possono essere reindirizzati nelle operazioni dipendenti.
L'esecuzione di tali operazioni non modifica lo stato della cache e del TLB (Translation Lookaside Buffer), ovvero i dati non possono essere recuperati tramite i metodi tradizionali di valutazione dello stato della cache. Tuttavia, questi dati influiscono sui tempi di esecuzione di altre istruzioni. L'analisi dei tempi di esecuzione può essere utilizzata come fonte di fuga di informazioni dalle strutture microarchitetturali, rimaste dopo l'esecuzione speculativa di altre operazioni.
A seconda della fonte di estrazione dei dati residui, sono state identificate due vulnerabilità:
- CVE-2024-36350 (TSA-SQ — TSA Store Queue) — fuga dal buffer di memorizzazione delle operazioni di scrittura (Store Queue), che consente di determinare il risultato delle istruzioni di scrittura in memoria.
- CVE-2024-36357 (TSA-L1 — TSA L1 Data Cache) — fuga attraverso la cache L1D.
Le vulnerabilità si manifestano nella famiglia di processori AMD (Fam19h) basata sulle microarchitetture Zen 3 e Zen 4. Ad esempio, il problema è presente nelle serie CPU AMD Ryzen 5000/6000/7000/8000, AMD EPYC Milan/Milan-X/Genoa/Genoa-X/Bergamo/Siena, AMD Instinct MI300A, AMD Ryzen Threadripper PRO 7000 WX, AMD EPYC Embedded 7003/8004/9004/97X4, AMD Ryzen Embedded 5000/7000/V3000.
Le modifiche necessarie per bloccare la vulnerabilità sono incluse nell'aggiornamento di microcodice e firmware PI (Platform Initialization) di dicembre, fornito ai produttori OEM. Le patch per la protezione dalla vulnerabilità sono state trasmesse per l'inclusione nel kernel Linux (per disabilitare la protezione che influisce negativamente sulle prestazioni, è disponibile l'opzione della riga di comando del kernel "tsa=off"). La correzione è stata anche aggiunta all'hypervisor Xen. Per bloccare la vulnerabilità è necessario sia l'aggiornamento del microcodice che l'attivazione della modalità di protezione a livello di kernel o hypervisor.
Fonte: opennet.ru
