Vulnerabilità nel meccanismo di esecuzione speculativa dei processori AMD

Il progetto Grsecurity ha pubblicato i dettagli e una dimostrazione del metodo di attacco per una nuova vulnerabilità (CVE-2021-26341) nei processori AMD relativa all'esecuzione speculativa di istruzioni dopo operazioni di inoltro incondizionato. Se l'attacco ha successo, la vulnerabilità consente di determinare il contenuto di aree di memoria arbitrarie. Ad esempio, i ricercatori hanno preparato un exploit che consente loro di determinare il layout degli indirizzi e di aggirare il meccanismo di protezione KASLR (kernel memory randomization) eseguendo codice non privilegiato nel sottosistema del kernel ePBF. Non si possono escludere altri scenari di attacco che potrebbero portare alla perdita del contenuto della memoria del kernel.

La vulnerabilità consente di creare condizioni in cui il processore, durante l'esecuzione preemptive, elabora speculativamente l'istruzione immediatamente successiva all'istruzione di salto in memoria (SLS, Straight Line Speculation). Inoltre, tale ottimizzazione funziona non solo per gli operatori di salto condizionato, ma anche per le istruzioni che implicano un salto incondizionato diretto, come JMP, RET e CALL. Seguendo le istruzioni di salto incondizionato, possono essere inseriti dati arbitrari che non sono destinati all'esecuzione. Dopo aver determinato che un ramo non implica l'esecuzione dell'istruzione successiva, il processore esegue semplicemente il rollback dello stato e ignora l'esecuzione speculativa, ma la traccia dell'esecuzione dell'istruzione rimane nella cache condivisa ed è disponibile per l'analisi utilizzando tecniche di recupero del canale laterale.

Come per lo sfruttamento della vulnerabilità Spectre-v1, l'attacco richiede la presenza di determinate sequenze di istruzioni (gadget) nel kernel che portano ad un'esecuzione speculativa. Il blocco di una vulnerabilità in questo caso si riduce all'identificazione di tali gadget nel codice e all'aggiunta di ulteriori istruzioni che bloccano l'esecuzione speculativa. Le condizioni per l'esecuzione speculativa possono essere create anche da programmi non privilegiati in esecuzione nella macchina virtuale eBPF. Per bloccare la possibilità di costruire gadget utilizzando eBPF, si consiglia di disabilitare l'accesso non privilegiato a eBPF nel sistema (“sysctl -w kernel.unprivileged_bpf_disabled=1”).

La vulnerabilità colpisce i processori basati sulla microarchitettura Zen1 e Zen2, comprese la prima e la seconda generazione di processori AMD EPYC e AMD Ryzen Threadripper, nonché AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper. Processori serie PRO e APU A. Per bloccare l'esecuzione speculativa delle istruzioni, si consiglia di chiamare le istruzioni INT3 o LFENCE dopo le operazioni di salto (RET, JMP, CALL).

Fonte: opennet.ru

Aggiungi un commento