Partiamo dal principio.
Tutto ha inizio a giugno da una segnalazione del Team Project Zero di Google da parte di Jann Horn, il quale afferma di aver trovato gravi vulnerabilità nelle CPU causate dalla Speculation Execution, ovvero da un ottimizzazione degli attuali microprocessori (in realtà già in uso da molti anni e per questo), utilizzata per la predizione delle diramazioni.
Andando più nello specifico, un istruzione che causa un salto (o una diramazione) detta istruzione di salto, può essere svolta o non svolta: se il salto non viene effettuato, il normale flusso sequenziale delle istruzioni non viene cambiato e l’istruzione seguente da caricare nella coda di prefetch è quella immediatamente dopo l’istruzione di salto.
Se il salto viene eseguito, l’istruzione caricata si trova in una area di memoria indicata esplicitamente o non esplicitamente nell’istruzione di salto.
Un microprocessore con l’esecuzione speculativa esegue alcune attività che potrebbero non essere effettivamente necessarie.
L’idea principale è di fare un lavoro prima che sia noto se quel lavoro sarà necessario, in modo da prevenire un ritardo che dovrebbe essere sostenuto facendo il lavoro dopo che è noto che è necessario. Se si scopre che il lavoro non era necessario, la maggior parte delle modifiche apportate dal lavoro vengono ripristinate e i risultati vengono ignorati.
L’obiettivo è fornire più concorrenza se sono disponibili risorse extra date dalla pipeline dati.
(In informatica per concorrenza si intende quando più processi o sotto-processi sono in esecuzione nello stesso istante, mentre la pipeline dati è una tecnologia implementata nei processori per aumentare la quantità di istruzioni eseguite in un certo lasso di tempo , tramite la parallelizzazione di flussi di elaborazione di più istruzioni)
Questo approccio viene utilizzato in molte aree, tra cui la predizione delle diramazioni in processori con pipeline dati, prefetching di memoria e file e il controllo ottimistico della concorrenza nei sistemi di database.
I difetti, che sono stati resi di pubblico dominio per la prima volta dal sito di notizie tech The Register il 2 gennaio 2018, riguardano i chip forniti da tutti e tre i principali produttori; Intel, AMD e ARM. Google aveva inizialmente pianificato una divulgazione coordinata dell’intero rapporto di Project Zero prevista per martedì 9 gennaio 2018, data in cui sarebbero state rilasciate le patch per la maggior parte dei sistemi operativi.
L’anticipato rilascio di questa notizia non ha quindi permesso ad alcuni sistemi operativi come Ubuntu, Windows 7/8 ed altri di ricevere l’aggiornamento prima della diffusione della notizia a differenza di Windows 10 (KB4056892) e MacOS (10.13.2).
Sembra inoltre che questo difetto colpisca anche i processori Qualcomm.
La differenza tra i difetti è la condizione non consentita che viene ignorata e il mezzo per farlo:
- Meltdown, l’aggressore causa un’esecuzione speculativa per violare il limite di protezione tra lo spazio di memoria di un programma utente e una pagina del kernel protetta, facendo eseguire l’esecuzione speculativa a un indirizzo nella cache. I moderni processori Intel eseguiranno tale codice, quindi recupereranno e memorizzeranno i risultati speculativi, lasciandoli nella cache. Successivamente il codice di sfruttamento può misurare ciò che è accaduto, sia dopo un errore, sia dopo aver preparato il codice originale come parte di una transazione di memoria che annullerà il problema. Alcuni processori, come AMD, sono ritenuti immuni da questo, poiché eseguono il test di accessibilità della pagina prima di eseguire la lettura speculativa, quindi Meltdown sembra essere un esclusiva Intel.
- Spectre (2 Varianti) l’aggressore non fa affidamento su tali meccanismi di errore e piuttosto indirizza un altro processo utente in un modo più generale. Spectre si basa sulla predizione delle diramazioni per eseguire speculativamente un recupero da una cella di matrice, anche se la diramazione precedente ha notato che il recupero sarebbe andato oltre la fine dell’array. Inizia con la predizioni della diramazione formate dal processore per effettuare una predizione errata, attraverso un limite del processo, e quindi manipola il processo di destinazione nell’esecuzione di parte del proprio codice che effettivamente tocca il ramo speculativo. Ancora una volta, ciò che è stato toccato è trapelato tramite un canale laterale temporizzato della cache.
Si pensa che solo i browser che eseguono la compilazione just-in-time (JIT) diJavaScript siano vulnerabili contro questo modo di utilizzare Spectre. Tuttavia, tutti i browser moderni, tra cui Chrome, Firefox, Safari e Edge utilizzano un motore JIT.
Inoltre, Spectre può anche essere usato per sfruttare le predizioni (errate) delle diramazioni in modi diversi, anche se non è coinvolto alcun linguaggio di scripting.
È importante aggiornare i sistemi operativi per proteggersi dai malintenzionati che proprio sfruttando queste speculative execution possono avere accesso alla memoria di sistema, dove sono custoditi dati come password, chiavi crittografiche e altri dati sensibili. Gli obiettivi sensibili di questi bug sono proprio server e cloud (anche quelli governativi), che stanno correndo ai ripari.
A fronte di questo update c’è però da confrontarsi con il calo di prestazioni, all’inizio è stato dichiarato un calo dal 5% al 30% che ha reso restii molti all’aggiornamento sopratutto i gamers, così la maggior parte degli utenti e delle testate ha già iniziato a fare test sulle prestazioni pre e post patch.
Ad ora sembra che il calo sia in realtà molto più basso per l’utente medio tra lo 0% e il 5% che sarà probabilmente mitigato maggiormente nel tempo.
Per i gamers più accaniti non c’è da preoccuparsi, i test parlano di una riduzione dal 1% al 3%.
Grazie a Tech-Hardware.it per l’Articolo.
Fonte Benchmark:
Guru3D Test
TechSpot Test