Certamente avrete sentito parlare della scoperta di una vulnerabilità su molti dei processori (Intel, AMD e ARM) di cui sono dotati molti dispositivi elettronici. Molte sono le categorie dei dispositivi coinvolti: dai computer, agli smartphone sino ai dispositivi di rete, ai server e ai dispositivi IOT. L’enorme numero dei processori affetti da tale vulnerabilità e le diverse tipologie dei prodotti/servizi che utilizzano tali processori determinano la potenziale pericolosità delle vulnerabilità accertate. Amazon, AMD, Android, Apple, Citrix, Fortinet, Google, Huawey, IBM, Intel, Lenovo, Linux, Microsoft, Microsoft Azure, Red Hat, sono solo alcuni dei Brand che sono, in queste ore,  alle prese con un aumentato rischio di sicurezza nei loro prodotti e servizi. Fate un rapido calcolo circa il numero di dispositivi/servizi che tali Brand hanno prodotto o fornito e capirete la dimensione della potenziale minaccia.

L’industria 4.0 è pienamente coinvolta ed esposta rispetto a questo tipo di minacce.

L’US-CERT (United States Computer Emergency Readiness Team) ha emesso, per queste vulnerabilità l’Alert (TA18-004A) richiamando la Vulnerability Note VU#584653, consiglio vivamente la lettura delle raccomandazioni CERT su tali vulnerabilità :https://www.us-cert.gov/Meltdown-Spectre-Guidance

La Nota evidenzia 3 differenti varianti

Variant 1 (CVE-2017-5753, Spectre)

Variant 2 (CVE-2017-5715, Spectre)

Variant 3 (CVE-2017-5754, Meltdown)

Iniziamo con il precisare che una vulnerabilità non è¨ un attacco ma è  la certificazione, in questo caso evidenziata da due differenti Team di ricerca (Google Project Zero e l’Università  di Graz) dell’esistenza di una falla che potrebbe essere sfruttata per portare l’attacco. E’ la finestra, colpevolmente o non colpevolmente, lasciata aperta, attraverso la quale, un intruso, potrebbe entrare, in casa nostra, nonostante tutte le porte siano dotate di sistema di allarme.

Il tema, sul quale stanno in queste ore lavorando tutti i team che si occupano di sicurezza informatica, è  triplice:

1) Ci sono stati attacchi che hanno sfruttato la vulnerabilità ?

2) Come si può correggere la vulnerabilità  ?

3) A quali costi ?

Iniziamo con spiegare, in termini ovviamente non troppo tecnici, in cosa consistono le vulnerabilità  accertate.

L’US-CERT ha definito le vulnerabilità di cui stiamo parlando di tipo “side-channel” (canali laterali) e cioè vulnerabilità, che espongono ad attacchi, prevalentemente con metodi statistici ,condotti verso memorie cache, sistemi di alimentazione, radiazioni elettromagnetiche ed altri fonti.

Vediamo ora le due vulnerabilità iniziando da quella denominata Spectre

Nei primi elaboratori i programmi erano caricati ed eseguiti, sequenzialmente, direttamente sulla macchina.

Con il passare degli anni e con la necessità  di far crescere le performances e la gestione della complessità, sono stati implementati dei software specializzati, chiamati Kernel, che hanno il compito di garantire, ai processi in esecuzione sull’elaboratore, un accesso sicuro e controllato alle risorse hardware. Mediante questi software si possono eseguire più processi simultaneamente assegnando, ad ogni processo, una porzione di tempo macchina e un accesso, specifico, alle risorse hardware. Il Kernel può essere considerato, a pieno titolo, il nucleo (nocciolo) di ogni Sistema Operativo.

Come è abbastanza noto i programmi software prevedono comportamenti diversi per diverse situazioni (valori di alcune variabili). In termini elementari: se è vera questa condizione esegui la serie di istruzioni chiamata A (subroutine A) se invece è falsa esegui la serie di istruzioni chiamata B (subroutine B). In ogni programma commerciale le diramazioni (Branch) che l’elaboratore valuta e poi esegue sono milioni.

Le CPU moderne includono una funzione che stima (statisticamente) i possibili valori delle variabili di controllo e di conseguenza quali routine saranno utilizzate e quindi, per risparmiare tempo ed ottimizzare l’uso della risorsa hardware, esegue la Routine che ritiene più probabile che verrà successivamente utilizzata. Questa modalità di esecuzione di una routine su base previsionale è detta “speculativa”.

Ogni Routine esegue delle operazioni quali la modifica di alcuni valori e la scrittura o la lettura di alcune  locazioni di memoria.

Se la previsione di utilizzo di tale serie di istruzioni si sarà rivelata esatta si sarà effettivamente risparmiato tempo e la memoria (Main Memory) e le variabili del programma saranno aggiornate rispetto a quanto eseguito dalla routine; se viceversa, la previsione si sarà rivelata errata, i valori prodotti “direttamente”, sulle variabili e sulla Main Memory, dalla routine speculativa, verranno annullati.

La vulnerabilità Spectre ha evidenziato che l’annullamento dei dati prodotti erroneamente, dalla routine speculativa rivelatasi poi errata, non comprende anche i dati contenuti nella “Memory Cache” della CPU.

Ricordo, sempre in estrema sintesi, che la “Memory Cache” è una memoria, di ridotte dimensioni, rispetto alla “Main Memory”, ma di tipo più veloce, che viene utilizzata, dalla CPU, come memoria di lavoro durante i suoi processi operativi.

Misurando la latenza delle operazioni di accesso alla memoria cache, gli Hacker, potrebbero estrarre i valori di alcuni dati determinati dall’esecuzione, speculativa, di alcune istruzioni.

Come riportato nella Nota di Allarme, potrebbero quindi crearsi delle condizioni nelle quali si possano realizzare la perdita di dati sensibili o l’accesso ad altre parti dello spazio di memoria che altrimenti, non sarebbe consentito.

 

La vulnerabilità Meltdown sfrutta un comportamento, non sicuro, nelle CPU Intel che potrebbero influire anche su sistemi di altri fornitori che utilizzano, tragli altri, tali processori Intel.

Sempre in termini non rigorosi; Quando un processore, per qualunque causa, non riesce ad eseguire una istruzione si determina una condizione definita di “Eccezione”.

Le eccezioni possono quindi essere di tipo inatteso (per esempio un guasto o una condizione non prevista) , di tipo previsto (per esempio se al processore viene chiesto di dividere un valore per una quantità pari a zero) o di tipo forzato dal programmatore (un interrupt derivante dal tasto on/off).

Al verificarsi di una eccezione, il processore, sospende l’esecuzione del programma corrente per avviare una routine, speciale, definita, per il singolo tipo di eccezione dal Sistema Operativo.

Il possibile attacco alla vulnerabilità Meltdown si concretizzerebbe in questo modo: L’attacco, mediante una serie di istruzioni, tenta di leggere, senza i necessari titoli di privilegio, un valore di memoria del Kernel; il sistema reagisce generando una condizione di eccezione che determina l’avvio della routine che induce la CPU a ripristinare le condizioni precedenti alla condizione che ha determinato l’eccezione. Tuttavia, tra il momento del sollevamento dell’eccezione e il momento in cui, da parte della CPU,  viene forzata la condizione di ripristino, alcune istruzioni possono essere state eseguite con effetti sulla “Memory Cache” che NON VIENE RIPRISTINATA. La vulnerabilità Meltdown determina quindi una condizione nella quale, i dati provenienti da istruzioni indebite, persistono oltre il punto in cui è stata sollevata l’eccezione.

Quanto finora descritto si colloca, perfettamente, all’interno dello schema di flusso e delle raccomandazioni che ho già descritto nel post

http://www.lorenzoferrante.it/2017/12/03/lincubo-della-cyber-security-le-3-regole-da-adottare/

Come sempre, in questi casi, i diversi fornitori hanno definito delle correzioni (Patch) volte a chiudere la falla evidenziata dalla vulnerabilità. Nel caso specifico, mentre i primi allarmi ipotizzavano che le correzioni da apportare ai sistemi avrebbero fatto perdere una cospicua percentuale di efficienza ( i primi allarmi stimavano una riduzione di circa il 30% delle prestazioni delle CPU) con gli immaginabili riflessi sul “Capacity Planning”, soprattutto dei Service Providers, gli ultimi annunci (Google) dichiarano che gli effetti delle correzioni,  in termini di perdita di prestazioni, potrebbero essere molto più contenuti.

Permangono tutte, invece, le necessità e di conseguenza gli oneri, della pianificazione di introduzione delle patch su tutti i dispositivi potenzialmente interessati secondo la seguente sequenza:

Identificazione dei sistemi che hanno a bordo i chip incriminati.
Verifica della pubblicazione da parte dei vendor di specifiche patch.
Verifica impatto operativo installazione patch.
Pianificazione attività installazione patch.
Verifica dei sistemi operativi
Verifica della pubblicazione da parte di Linux e Microsoft di eventuali patch
Verifica impatto operativo dell’installazione di patch afferenti al Sistema Operativo.
Pianificazione attività installazione patch dei Sistemi Operativi.

Un costo enorme, per le Aziende, ma anche per la collettività poiché ognuno di noi dovrà aggiornare il proprio PC, i propri smartphone ma anche i propri Routers, Modem, sistemi video etc….

La raccomandazione rimane la stessa: il contenimento del rischio informatico è fatto essenziale destinato ad accompagnare la vita di imprese ed individui. Ad esso deve essere dedicata attenzione e risorse, anche economiche, adeguate.

Cosa ne pensi?

Se vuoi contribuire, scrivi nei commenti e se pensi che questo post ti sia stato utile, condividilo.

Grazie.