SLAM — attacco a CPU Intel, AMD e ARM che consente di determinare il contenuto della memoria

Un gruppo di ricercatori dell'Università Vrije di Amsterdam ha presentato una nuova tecnica di attacco chiamata SLAM (Spectre Linear Address Masking), che offre un nuovo modo di sfruttare le vulnerabilità microarchitetturali della classe Spectre, in cui la fuoriuscita di dati avviene durante la traduzione di indirizzi non canonici, mentre per superare i controlli di canonicalità vengono utilizzate le estensioni per la mascheratura degli indirizzi lineari presenti nei nuovi processori. I ricercatori hanno pubblicato un toolkit con l'implementazione del metodo e hanno proposto una dimostrazione che mostra come sia possibile estrarre dalla memoria del kernel dati corrispondenti a una determinata maschera (ad esempio, come ottenere in pochi secondi in Ubuntu una stringa contenente l'hash della password dell'utente root dalla memoria del kernel).

Riproduci video

L'attacco può essere effettuato su sistemi con processori Intel che supportano l'estensione LAM (Linear Address Masking), processori AMD con l'estensione UAI (Upper Address Ignore) e processori ARM con l'estensione TBI (Top Byte Ignore). Le estensioni menzionate consentono di utilizzare parte dei bit degli indirizzi a 64 bit per memorizzare metadati non correlati agli indirizzi (poiché i programmi normali non necessitano di tanto spazio da utilizzare indirizzi a 64 bit, i bit superiori possono essere impiegati, ad esempio, per controlli legati alla sicurezza). È interessante notare che i processori Intel, AMD e ARM che supportano LAM, UAI e TBI sono stati solo annunciati ma non sono ancora in produzione di massa, il che rende SLAM il primo attacco speculativo volto ai futuri CPU. L'attacco può essere eseguito anche su vecchi CPU AMD Zen+ e Zen 2, vulnerabili alla CVE-2020-12965.

Analogamente allo sfruttamento delle vulnerabilità di Spectre, per effettuare l'attacco SLAM è necessaria la presenza nel kernel di specifiche sequenze di istruzioni (gadget) che portano a un'esecuzione speculativa delle istruzioni. Queste istruzioni portano a letture speculative di dati dalla memoria in base a condizioni esterne che possono essere influenzate dall'attaccante. Dopo aver determinato una previsione errata, il risultato dell'esecuzione speculativa viene scartato, ma i dati trattati rimangono nella cache e possono essere poi estratti tramite analisi da canali esterni. I ricercatori hanno utilizzato il metodo Evict+Reload per estrarre i dati rimasti nella cache, basato sulla creazione di condizioni per espellere i dati dalla cache (ad esempio, viene generata un'attività che riempie uniformemente la cache con contenuti standard) e sull'esecuzione di operazioni, il cui tempo di esecuzione consente di dedurre la presenza di dati nella cache del processore.

Per effettuare l'attacco SLAM vengono utilizzati gadget basati su codice in cui i dati controllati dall'attaccante (sotto forma della variabile «secret») sono utilizzati come puntatore. Ad esempio: void unmasked_gadget(long **secret) { **secret; }

Si osserva che tali modelli di codice sono spesso utilizzati nei programmi, ad esempio, nel kernel di Linux sono stati identificati decine di migliaia di gadget simili, di cui almeno alcune centinaia sono adatti per l'uso negli exploit. La fuoriuscita può essere bloccata aggiungendo a tali gadget istruzioni supplementari che bloccano l'esecuzione speculativa. La società Intel prevede di fornire un metodo software per bloccare la fuoriuscita prima dell'inizio della fornitura dei processori con supporto LAM. La società AMD ha raccomandato di utilizzare i metodi esistenti per bloccare gli attacchi della classe Spectre v2. Gli sviluppatori del kernel di Linux hanno deciso di disabilitare il supporto LAM per impostazione predefinita fino alla pubblicazione delle raccomandazioni Intel per bloccare la vulnerabilità.

Fonte: opennet.ru

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