Kasper, uno scanner per problemi di esecuzione speculativa di codice nel kernel Linux, è ora disponibile

Un team di ricercatori della Libera Università di Amsterdam ha pubblicato un toolkit Kasper progettato per identificare frammenti di codice nel kernel Linux che possono essere utilizzati per sfruttare le vulnerabilità di classe Spectre causate dall'esecuzione speculativa di codice sul processore. Il codice sorgente del toolkit è distribuito sotto la licenza Apache 2.0.

Ricordiamo che per effettuare attacchi come Spectre v1, che consentono di determinare il contenuto della memoria, è richiesta la presenza nel codice privilegiato di una determinata sequenza di comandi (gadget), che portano all'esecuzione speculativa di istruzioni . Per scopi di ottimizzazione, il processore inizia ad eseguire tali gadget in modalità speculativa, quindi determina che la previsione del ramo non era giustificata e ripristina le operazioni al loro stato originale, ma i dati elaborati durante l'esecuzione speculativa finiscono nella cache e nei buffer della microarchitettura e è disponibile per il recupero da loro utilizzando vari metodi di determinazione dei dati residui attraverso canali di terze parti.

Gli strumenti precedentemente disponibili per la scansione dei gadget per la vulnerabilità Spectre, basati sulla ricerca di modelli tipici, hanno mostrato un livello molto elevato di falsi positivi, mentre mancavano molti gadget reali (gli esperimenti hanno dimostrato che il 99% dei gadget identificati da tali strumenti non poteva essere utilizzato per attacchi , e il 33% dei gadget funzionanti che potrebbero portare ad un attacco non sono stati notati).

Per migliorare la qualità dell'identificazione dei gadget problematici, Kasper modella le vulnerabilità che un utente malintenzionato può sfruttare in ogni fase dell'esecuzione di attacchi di classe Spectre: vengono modellati problemi che consentono il controllo dei dati (ad esempio, sostituendo i dati dell'utente malintenzionato in strutture microarchitettoniche per influenzare la successiva esecuzione speculativa utilizzando attacchi di classe LVI), ottengono l'accesso a informazioni riservate (ad esempio, quando si oltrepassano i limiti del buffer o utilizzano la memoria dopo che è stata liberata) e perdono informazioni riservate (ad esempio, analizzando lo stato della cache del processore o utilizzando il metodo MDS).

Kasper, uno scanner per problemi di esecuzione speculativa di codice nel kernel Linux, è ora disponibile

Durante il test, il kernel è collegato alle librerie runtime di Kasper e controlla l'esecuzione a livello LLVM. Il processo di controllo emula l'esecuzione speculativa del codice, implementata utilizzando il meccanismo di ripristino del checkpoint, che esegue specificamente un ramo di codice previsto in modo errato, quindi ripristina lo stato originale prima dell'inizio del ramo. Kasper tenta inoltre di simulare varie vulnerabilità software e hardware, analizza l'impatto degli effetti architettonici e microarchitettonici ed esegue test fuzz delle possibili azioni degli aggressori. Per analizzare i flussi di esecuzione, viene utilizzato il port DataFlowSanitizer per il kernel Linux e per i test fuzzing viene utilizzata una versione modificata del pacchetto syzkaller.

Kasper, uno scanner per problemi di esecuzione speculativa di codice nel kernel Linux, è ora disponibile

Una scansione del kernel Linux utilizzando Kasper ha identificato 1379 gadget precedentemente sconosciuti che potenzialmente portano alla fuga di dati durante l'esecuzione speculativa delle istruzioni. Va notato che forse solo alcuni di essi possono porre problemi reali, ma per dimostrare che esiste un pericolo reale, e non solo teorico, è stato sviluppato un prototipo funzionante di un exploit per uno dei frammenti di codice problematici, portando a informazioni perdita dalla memoria del kernel.

Fonte: opennet.ru

Aggiungi un commento