Azienda Intel informazioni su una nuova nei loro processori — (Microarchitectural Data Sampling). Come i precedenti attacchi della classe Spectre, i nuovi problemi possono portare a perdite di dati riservati del sistema operativo, di macchine virtuali e di processi di terze parti. Si sostiene che le problematiche siano state inizialmente identificate dai dipendenti e dai partner di Intel durante un audit interno, dopo di che informazioni su problemi simili in Intel siano state trasferite a ricercatori indipendenti. I processori AMD e ARM non sono affetti da questo problema.
Sulla base dei problemi identificati dai ricercatori dell'Università Tecnica di Graz (Austria) alcuni attacchi pratici attraverso canali esterni:
- () — consente di estrarre informazioni riservate da altri processi, dal sistema operativo, da macchine virtuali e da enclave protette (TEE, Trusted Execution Environment). Ad esempio, è stata dimostrata la possibilità di definire la cronologia di apertura delle pagine nel Tor browser, in esecuzione in un'altra macchina virtuale, così come la determinazione delle chiavi di accesso e delle password utilizzate nelle applicazioni;
- () — consente di organizzare perdite di informazioni tra diverse zone isolate nei processori Intel, come i buffer di riempimento, i buffer di memorizzazione e le porte di caricamento. Vengono mostrati esempi di attacchi per estrarre informazioni da altri processi, dal sistema operativo, dalle macchine virtuali e dagli enclavi protetti. Ad esempio, viene mostrato come recuperare il contenuto dell'hash della password root da /etc/shadow durante tentativi di autenticazione periodici (l'attacco ha richiesto 24 ore);

Inoltre, viene mostrato un esempio di attacco utilizzando JavaScript e WebAssembly aprendo una pagina dannosa nel motore SpiderMonkey (in moderni browser completi, un attacco simile è poco probabile a causa delle limitazioni di precisione del timer e delle misure di protezione contro Spectre);

- () — consente di leggere dati recentemente scritti dal sistema operativo e di determinare la disposizione della memoria del SO per semplificare l'esecuzione di altri attacchi;
- — sfrutta le ottimizzazioni della CPU nella gestione del buffer di memorizzazione e può essere utilizzato per bypassare il meccanismo di randomizzazione dello spazio degli indirizzi del kernel (KASLR), per monitorare lo stato del sistema operativo o per fughe in combinazione con gadget basati su metodi Spectre.
Identificati :
- CVE-2018-12126 — MSBDS (Microarchitectural Store Buffer Data Sampling), recupero del contenuto dei buffer di archiviazione. Utilizzato nell'attacco Fallout. Il grado di pericolosità è stato definito in 6.5 punti (CVSS);
- CVE-2018-12127 — MLPDS (Microarchitectural Load Port Data Sampling), recupero del contenuto delle porte di caricamento. Utilizzato nell'attacco RIDL. CVSS 6.5;
- CVE-2018-12130 — MFBDS (Microarchitectural Fill Buffer Data Sampling), recupero del contenuto dei buffer di riempimento. Utilizzato negli attacchi ZombieLoad e RIDL. CVSS 6.5;
- CVE-2019-11091 — MDSUM (Microarchitectural Data Sampling Uncacheable Memory), recupero del contenuto della memoria non cacheabile. Utilizzato nell'attacco RIDL. CVSS 3.8.
problematiche identificate riguardo all'applicabilità dei metodi di analisi tramite canali laterali ai dati nelle strutture microarchitetturali, a cui le applicazioni non hanno accesso diretto. Si parla di strutture a bassissimo livello, come i buffer di riempimento (Line Fill Buffer), i buffer di memorizzazione (Store Buffer) e le porte di caricamento (Load Port), che sono più piccoli dei blocchi di composizione del cache L1D, del cache di caricamento dati (RDCL) o dell'L1TF (L1 Terminal Fault), e di conseguenza includono meno informazioni e vengono aggiornati più frequentemente.

Gli attacchi tramite canali laterali su strutture microarchitetturali sono sostanzialmente più complessi da realizzare rispetto ai metodi di recupero dei contenuti della cache e richiedono il monitoraggio e l'analisi di significativi volumi di dati per determinare la loro connessione con indirizzi specifici in memoria (in sostanza, l'attaccante non può mirare a intercettare specifici dati, ma può accumulare perdite per lungo tempo e applicare metodi statistici per ricostruire determinati tipi di dati). Inoltre, l'attacco riguarda solo i dati sullo stesso core CPU fisico in cui risiede il codice dell'attaccante.
I metodi proposti per determinare il contenuto delle microarchitetture si basano sul fatto che queste strutture vengono utilizzate nell'elaborazione speculativa delle eccezioni (fault) o delle operazioni di load e store.
Durante l'esecuzione speculativa, il contenuto delle strutture interne viene reindirizzato per l'elaborazione nei registri o nella cache. Le operazioni speculativa non vengono completate e il risultato viene scartato, ma il contenuto reindirizzato può essere determinato attraverso metodi di analisi della cache tramite canali secondari.
Le porte di caricamento sono utilizzate dal processore per ottenere dati dalla memoria o dal sottosistema di input/output e fornire le informazioni ricevute nei registri CPU. A causa della peculiarità della loro implementazione, i dati delle vecchie operazioni di caricamento rimangono nelle porte fino a quando non vengono sovrascritti da nuovi dati, il che consente di determinare indirettamente lo stato dei dati nella porta di caricamento attraverso manovre con eccezioni (fault) e istruzioni SSE/AVX/AVX-512 che caricano più di 64 bit di dati. In tali condizioni, le operazioni di caricamento rivelano in modo speculativo valori obsoleti dai dati delle strutture interne nelle operazioni dipendenti. Allo stesso modo, viene gestita la fuoriuscita attraverso il buffer di archiviazione, utilizzato per accelerare la scrittura nella cache CPU e che include una tabella di indirizzi, valori e flag, nonché attraverso il buffer di riempimento, che contiene dati non presenti nella cache L1 (cache-miss), fino al loro caricamento dalle cache di altri livelli.
Problema modelli di processori Intel, prodotti a partire dal 2011 (a partire dalla sesta generazione). Le vulnerabilità hardware sono bloccate a partire da alcuni modelli delle ottava e nona generazione Intel Core e della seconda generazione Intel Xeon Scalable (è possibile controllare tramite il bit ARCH_CAP_MDS_NO nell'IA32_ARCH_CAPABILITIES MSR). Le vulnerabilità sono già a livello di firmware, microcodice e sistemi operativi. Secondo Intel, la perdita di prestazioni dopo l'attivazione della correzione per la maggior parte degli utenti il 3%. Disattivando la tecnologia Hyper-Threading, il calo delle prestazioni può raggiungere il 9% nel test SPECint_rate_base, fino all'11% durante i calcoli interi e fino al 19% nell'esecuzione di applicazioni Java server (con HT attivato, il calo delle prestazioni è praticamente assente). Le correzioni influiscono praticamente poco sulle operazioni relative all'input/output.
Nel kernel Linux, la protezione da MDS negli aggiornamenti odierni 5.1.2, 5.0.16,
si basa sulla pulizia del contenuto dei buffer della microarchitettura al momento del ritorno dal kernel allo spazio utente o durante il passaggio di controllo al sistema ospite, per il quale viene utilizzata l'istruzione VERW. Per funzionare correttamente, è necessaria la supporto della modalità MD_CLEAR, implementata nell'ultimo aggiornamento del microcodice. Si consiglia inoltre di disabilitare l'Hyper Threading per una protezione completa. Per controllare la vulnerabilità del sistema nel kernel Linux gestore "/sys/devices/system/cpu/vulnerabilities/mds". Per gestire l'attivazione dei vari modelli di blocco delle vulnerabilità nel kernel, è stato aggiunto il parametro "mds=", che può assumere i valori "full", "full,nosmt" (disabilitazione degli Hyper-Threads), "vmwerv" e "off".
Gli aggiornamenti dei pacchetti sono già stati rilasciati per e , ma al momento rimangono non disponibili per , e .
La correzione per bloccare le perdite di dati dalle macchine virtuali è disponibile anche per il hypervisor Xen. Per proteggere i sistemi di virtualizzazione che effettuano la chiamata del comando L1D_FLUSH prima di passare il controllo a un'altra macchina virtuale, e per proteggere gli enclavi Intel SGX, è sufficiente l'aggiornamento del microcodice.
Fonte: opennet.ru


