Meltdown: considerazioni sull'impatto sui sistemi classificati

(di Alessandro Rugolo)
04/04/18

Meltdown, un termine il cui significato è sinonimo di "disastroso collasso", oppure "catastrofe nucleare" è entrato nell'uso comune a causa dei problemi di sicurezza evidenziati su alcune tipologie di processori tra cui praticamente tutti i processori Intel, parte dei processori AMD e così via, realizzati dal 2010 ad oggi. Sono veramente pochi i processori non colpiti da questa vulnerabilità (o da Spectre, per certi versi molto simile), tra questi buona parte degli ARM, gli SPARC e i Raspberry.

Ma di che si tratta? Cosa è realmente Meltdown? E soprattutto, quale impatto può avere sui sistemi informatici ed in particolare sui sistemi classificati impiegati in ambiente militare?

Con questo articolo cercherò di fare un po' di chiarezza su questa vulnerabilità e sul potenziale impatto nel mondo della sicurezza.

Tanto per cominciare, è utile ribadire che la vulnerabilità è hardware e non software. Questo fa un po' la differenza rispetto a ciò che siamo abituati a sentire. In pratica, per fare un paragone con il mondo delle automobili, è come se in (quasi) tutte le auto del mondo si scoprisse che un particolare del motore per un difetto di progettazione sia soggetto a rottura, probabilmente in un caso del genere le case produttrici sarebbero costrette a ritirare dal mercato il modello incriminato e a risarcire il consumatore, oppure a richiamare in fabbrica le auto per una sostituzione gratuita del pezzo.
Con Meltdown questo non è avvenuto, forse perchè ancora non vi è una vera consapevolezza dei diritti del consumatore e forse perchè nonostante il clamore suscitato dalla notizia sono ancora troppo pochi coloro che sono in grado di capire la reale dimensione del problema.
In ogni caso ribadisco che Meltdown colpisce determinate famiglie di processori di diverse marche, indipendentemente dal Sistema Operativo che vi è installato sopra!

Il malfunzionamento

Per capire come agisce Meltdown occorre sapere come funziona un sistema operativo, almeno nelle sue linee essenziali.
In primo luogo è utile dire che il compito principale di un sistema operativo consiste nel fornire una serie di servizi e garanzie di sicurezza affinchè i programmi che vi girano sopra si comportino come il progettista della sicurezza vuole.

L'approccio progettuale alla sicurezza è particolarmente sentito per i sistemi militari o, più in generale, per sistemi che trattano informazioni che hanno un elevato valore.

Una delle caratteristiche principali dei Sistemi Operativi consiste nella capacità di garantire la "separazione della memoria" tra processi e utenti differenti in quanto ogni utente o processo deve poter accedere solo alla memoria che gli viene riservata.
I Sistemi Operativi moderni, affinchè siano impiegabili, anche allo scopo di sfruttare al massimo le caratteristiche delle CPU di nuova generazione, hanno introdotto alcune caratteristiche che velocizzano determinate operazioni, teoricamente senza diminuirne la sicurezza.

1. La prima di queste caratteristiche consiste nella possibilità di eseguire più processi in parallelo, ovvero di svolgere compiti differenti o a favore di utenti o programmi differenti dando loro l'impressione che siano gli unici a poter disporre di tutte le potenzialità del computer. Per fare ciò è necessario usare particolari tecniche di assegnazione della memoria che vanno sotto il nome di "virtual page memory".

2. Per evitare che utenti o processi potessero disturbarsi a vicenda e causare danni scrivendo dei dati in uno spazio di memoria già impiegato, magari proprio dal Sistema Operativo, è stato introdotto il concetto di "protection domain". In pratica il Sistema Operativo assegna ad ogni utente o processo un livello al quale è associata la possibilità di poter impiegare una certa area di memoria. Quando un processo cerca di accedere ad un'area di memoria per cui non è autorizzato generalmente viene "terminato".

3. La terza caratteristica legata alla architettura dei nuovi processori, normalmente dotati di più unità di calcolo, consiste nella possibilità di eseguire istruzioni o operazioni in parallelo o, in certi casi, di eseguire la stessa istruzione su valori diversi per velocizzare determinate operazioni. Si tratta di funzionalità conosciute come "instruction pipeline" e "speculative execution". Su ciò si basa il concetto di "Out-of-order execution" ovvero l'esecuzione di istruzioni di un programma non ancora necessarie ma che probabilmente dovranno essere eseguite.

4. Infine, per sfruttare l'enorme velocità di calcolo dei moderni processori sono state introdotte particolari tipi di memoria il cui accesso in scrittura e lettura avviene in tempi molto inferiori rispetto alla memoria presente in un hard disk normale. La presenza di queste memorie chiamate di "cache", associate all'analisi dei dati più utilizzati, consente al processore di non rimanere troppo spesso disoccupato in attesa che gli vengano forniti i dati necessari che si trovano nell'hard disk.

Bene, la questione è semplice. Se è vero che le caratteristiche suindicate sono state introdotte per sfruttare le caratteristiche dei nuovi processori, è altrettanto vero che quanto fatto ha aumentato non di poco la complessità dei sistemi e di conseguenza la possibilità di introdurre delle vulnerabilità non banali, ed è questo il caso di Meltdown.
Ora, occorre sapere che uno degli utenti del computer è il Sistema Operativo, esso è considerato "utente privilegiato" e può compiere particolari operazioni, non concesse ad un utente generico.

Meltdown permette di superare il concetto di "separazione della memoria", consentendo ad un processo o utente non autorizzato di venire a conoscenza dei dati presenti in spazi di memoria non propri sfruttando un tipo di attacco chiamato "side channel attack", in particolare un tipo di side channel attack chiamato "chache side channel attack" che consiste nel dedurre il contenuto della cache misurando i tempi di caricamento dei dati da parte di un altro processo in esecuzione.

Meltdown riesce a fare ciò utilizzando a suo vantaggio le caratteristiche dei moderni processori a 64 bit viste sopra per raggiungere il suo obiettivo ovvero rubare i dati dall'area di memoria destinata ai processi del kernel del Sistema Operativo.

Dato lo scopo di questo articolo e la complessità dell'argomento non ha senso proseguire nella descrizione dei particolari di funzionamento di questo tipo di attacco, quanto piuttosto cercare di comprendere le implicazioni di sicurezza di questo attacco in relazione ai sistemi informatici militari.
Una prima considerazione va fatta sul concetto di verifica e certificazione dei sistemi.
Questo perchè, come spero sia ora chiaro, quasi tutti i processori in combinazione con i Sistemi Operativi più utilizzati risultano essere soggetti all'attacco Meltdown, tra questi vi sono anche i sistemi operativi Windows 7 client e Windows server 2008 R2 a 64 bit, che se si va a vedere sul sito dei sistemi certificati Common Criteria sono certificati per l'uso nei sistemi classificati di buona parte delle nazioni del mondo.

Possibile che nel corso dei test nessuno abbia notato il comportamento insicuro dei sistemi?
Occorre forse ripensare alle modalità con cui i Centri di Validazione eseguono i test, forse troppo incentrati sul testare quanto dichiarato dalle case produttrici, senza indagare (molto) oltre?
Eppure vi sono chiare indicazioni di possibili problemi sulle architetture dei processori sin dal lontano 1995, ad opera della National Security Agency.

Una seconda considerazione riguarda invece la possibilità di applicazione di patch di sicurezza.
Non appena si è saputo di Meltdown, le principali case produttrici di software hanno cercato di porre rimedio attraverso modifiche software ai problemi architetturali dell'hardware.
Tra queste la Microsoft che ha immediatamente rilasciato la patch, ma con che risultato? The hacker news in un articolo di qualche giorno fa ha pubblicato lo studio del ricercatore indipendente Ulf Frisk che ha mostrato come la patch abbia solo peggiorato la situazione, consentendo che il furto di dati ora sia ancora più veloce di quanto lo era senza l'applicazione della patch.
Questo è un altro punto da considerare con attenzione: l'applicazione di una patch, quando pure sia possibile (e non sempre lo è senza ricertificare il sistema!), potrebbe essere ancora più dannosa del lasciare le cose come stanno.

Ma allora come occorre comportarsi di fronte a problemi così profondamente insiti nell'architettura dei sistemi?

Quali certezze, quali garanzie, ci possono dare sistemi militari che potenzialmente sono stati oggetto di attacchi simili a Meltdown per anni?

Conosciamo Meltdown pubblicamente dal luglio del 2017 ma non sappiamo se qualche organizzazione conoscesse e sfruttasse precedentemente questa vulnerabilità, potenzialmente insita nei processori di nuova generazione a partire dal 2010. Non ho una risposta, ma solo un suggerimento: nel mondo attuale niente è più sicuro, forse perchè difficilmente una persona, anche preparata, è in grado di governare la complessità dei sistemi.

In ogni caso, trattandosi di sicurezza nazionale, forse sarebbe opportuno potenziare le strutture deputate all'analisi dei sistemi informatici e delle vulnerabilità, anche facendo ricorso alle Università, invece che fidarsi di quanto dichiarato dalle società produttrici di hardware e software.

L'Intelligenza Artificiale potrà aiutarci... o forse, più probabilmente, complicherà ulteriormente il problema?

 
Per approfondire:

- https://meltdownattack.com/meltdown.pdf
- https://thehackernews.com/2018/03/microsofts-meltdown-vulnerability.html
- Cenni su processori INTEL: https://www.tomshw.it/differenze-i-processori-intel-75496
- Cenni su processori ARM: https://www.ilsoftware.it/articoli.asp?tag=Differenza-tra-processori-ARM...
- Cenni sui processori SPARC: http://www.pcpedia.it/Il-Processore/ultrasparc.html
- Cenni sui processori Raspberry: https://opensource.com/resources/raspberry-pi
- https://www.commoncriteriaportal.org