Vulnerabilità nel sottosistema eBPF che consentono di eludere la protezione contro attacchi di tipo Spectre

Nel kernel di Linux è stata individuata una vulnerabilità (CVE-2021-33624) che consente di utilizzare il sottosistema eBPF per eludere la difesa contro le vulnerabilità di tipo Spectre, permettendo di determinare il contenuto della memoria a seguito della creazione di condizioni per l'esecuzione speculativa di determinate operazioni. Per un attacco Spectre è necessaria la presenza nel codice privilegiato di una particolare sequenza di istruzioni che conduca all'esecuzione speculativa di istruzioni. Attraverso la manipolazione dei programmi BPF inviati per l'esecuzione, è possibile generare istruzioni simili in eBPF e ottenere perdite di contenuti della memoria del kernel e aree fisiche di memoria arbitraria attraverso canali secondari.

La vulnerabilità è causata da carenze nel verificatore, che viene utilizzato per rilevare errori e attività non valide nei programmi BPF. Il verificatore esplora i possibili percorsi di esecuzione del codice, ma ignora le varianti di ramificazione non valide dal punto di vista semantico dell'architettura del set di istruzioni. Durante l'esecuzione di un programma BPF, tali varianti di ramificazione, non considerate dal verificatore, possono essere previste erroneamente dal processore ed eseguite in modalità speculativa. Ad esempio, analizzando l'operazione

Il problema si manifesta a partire dal rilascio del kernel 4.15 ed è stato risolto attraverso patch (1, 2, 3, 4). Nei vari distributivi la vulnerabilità rimane ancora irrisolta (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).

Vale la pena notare un commento sull'impatto delle misure di protezione contro le vulnerabilità di tipo Spectre. Nel commento sono sintetizzati i risultati dell'ottimizzazione del debugger rr (Record and Replay), sviluppato in Mozilla per il debugging di errori difficilmente riproducibili in Firefox. La memorizzazione nella cache delle chiamate di sistema utilizzate per controllare l'esistenza delle directory ha consentito di ridurre il tempo di esecuzione dell'operazione "rr sources" per un progetto di test da 3 minuti e 19 secondi a 36 secondi.

L'autore dell'ottimizzazione ha deciso di verificare quanto cambierà le prestazioni dopo aver disattivato la protezione contro Spectre. Dopo il caricamento del sistema con il parametro "mitigations=off", il tempo di esecuzione di "rr sources" senza ottimizzazione è stato di 2 minuti e 5 secondi (1,6 volte più veloce), mentre con l'ottimizzazione è stato di 33 secondi (il 9% più veloce). È interessante notare che disattivare la protezione contro Spectre ha non solo ridotto il tempo di esecuzione del codice a livello di kernel (da 2m9s a 1m32s) di 1,4 volte, ma ha anche dimezzato il tempo di esecuzione nello spazio utente (da 1m9s a 0m33s), presumibilmente a causa della diminuzione dell'efficacia della cache della CPU e dei reset TLB con la protezione contro Spectre attivata.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster