Spectre
Vari gruppi di ricercatori hanno recentemente scoperto, ed in seguito reso pubbliche, una serie di vulnerabilità chiamate Meltdown e Spectre, legate a vari microprocessori.
I microprocessori sono sofisticati circuiti integrati che rappresentano i sistemi centrali di elaborazione (detti anche CPU in gergo tecnico) di computer e altre apparecchiature informatiche, incluse quelle medicali.
Recentemente (il 21 maggio scorso) due nuove varianti di Spectre, chiamate 3a e 4, sono state annunciate dal Security Response Center di Microsoft e da Google Project Zero. Intel (il più importante produttore di microprocessori) ha fornito un’analisi e un dettagliato aggiornamento a riguardo.
Più o meno tutti i produttori di microprocessori sono coinvolti (ma in misura diversa): oltre ad Intel, anche AMD, ARM, Apple, Qualcomm, ecc.
I circuiti integrati (detti anche “chip”) prodotti da queste aziende sono presenti in un numero enorme di dispositivi:
Quindi potrebbe sembrare ad un lettore casuale che queste vulnerabilità siano catastrofiche, creando diffidenza nell’uso delle apparecchiature informatiche, incluse quelle di e-health, specialmente se si ascolta certa stampa scandalistica…
La realtà fortunatamente è molto diversa.
Si tratta certamente di vulnerabilità hardware molto significative e con un importante impatto per l’industria, che non vanno assolutamente sottovalutate.
Tuttavia:
Chi è interessato ai dettagli precisi e più tecnici di Meltdown e Spectre, e delle loro contromisure, ma spiegati con parole volutamente semplici, continui a leggere… Gli altri possono saltare alla sezione finale per le raccomandazioni del caso.
I processori moderni utilizzano ormai da decenni tecniche molto sofisticate per ottenere il massimo delle performance (sono tecniche di parallelizzazione dell’esecuzione). Queste tecniche in combinazione con la (per ora) sempre crescente densità dei circuiti dei microprocessori (ossia la famosa legge di Moore, o Moore’s Law in inglese) ha permesso la realizzazione di dispositivi informatici con capacità di calcolo in forte crescita anno dopo anno.
Oggi letteralmente lo smart watch che si porta al polso è più o meno l’equivalente di quello che qualche decennio fa era considerato un supercomputer ed era grosso come un armadio. Inoltre, ai microprocessori moderni si sono potuti accostare anche processori specializzati per ottenere funzionalità impensabili fino a non molti anni fa come il riconoscimento in tempo reale delle impronte digitali, o l’analisi delle immagini tramite intelligenza artificiale, e altro ancora.
Agli enormi progressi ottenuti nelle performance, però, non sono seguiti altrettanti progressi nell’irrobustimento delle tecniche di sicurezza utilizzate. In parte ciò è dovuto alla mancanza di indizi concreti su possibili vulnerabilità legate alle scelte fatte dai progettisti per aumentare le performance e le capacità di questi chip.
Recentemente però vari gruppi di ricercatori hanno scoperto importanti debolezze architetturali di vari componenti hardware, incluse le vulnerabilità dei processori note come Meltdown e Spectre. Ciò ha sicuramente contribuito a rilanciare con forza l’importanza che ricopre la sicurezza nella progettazione dei dispositivi hardware.
Analizziamo quindi le vulnerabilità Meltdown e Spectre individualmente per capire meglio di cosa si tratta.
Per completezza, ecco l’elenco delle varianti scoperte fino ad oggi (maggio 2018):
Come spiegato in un dettagliato documento dai ricercatori che hanno scoperto Meltdown, i processori moderni per poter funzionare più velocemente eseguono alcune operazioni fuori ordine. Ciò permette loro di accelerare in certe condizioni e di rimettere tutto in ordine più tardi in modo che il risultato delle operazioni risulti corretto e coerente.
Queste tecniche, chiamate di esecuzione speculativa, sono usate da moltissimo tempo e sono generalmente ben note e spesso anche ben documentate (con leggere variazioni tra processori diversi). Quindi i ricercatori hanno potuto sfruttare in maniera mirata comportamenti molto ben conosciuti.
In pratica, quando queste tecniche di esecuzione speculativa vengono usate, anche se formalmente sono invisibili ai programmi che girano sui computer, lasciano tuttavia delle tracce latenti (che la stampa specializzata chiama “microarchitectural disturbances” o semplicemente “effetti collaterali osservabili”).
Queste tracce latenti sono come delle “ombre”, lasciate ad esempio all’interno di certe memorie interne del processore (e non solo lì… possono infatti anche interessare altri componenti).
In teoria non dovrebbero essere rilevabili e soprattutto quantificabili, ma in pratica purtroppo lo sono utilizzando delle tecniche di attacco piuttosto sofisticate (ma anche relativamente lente).
La rilevazione di queste tracce permette la lettura indiretta bit a bit di informazioni che dovrebbero essere completamente inaccessibili, essendo protette dalle barriere di sicurezza presenti nei processori.
Questa classe di attacchi viene genericamente chiamata in inglese “physical side channel attacks”.
Non si tratta quindi di bug hardware.
Nel caso di Meltdown, questo tipo di vulnerabilità produce gli effetti più gravi.
È stato dimostrato che è possibile leggere ad una velocità di circa 503 KB/s (che varia però da caso a caso) tutta la memoria fisica di sistemi che girano Linux o Mac OS X, e la maggior parte di quella di sistemi con Windows.
Inoltre, è stato notato che per motivi di performance i microprocessori Intel erano normalmente programmati in modo tale da rendere possibile questa complessa violazione delle barriere di protezione, mentre nel caso dei microprocessori di AMD, produttore concorrente di Intel, un livello di protezione aggiuntiva rendeva la CPU “non suscettibile” a questo tipo di attacco.
Fortunatamente i ricercatori nel loro articolo hanno individuato sia la debolezza architectturale che la sua contromisura naturale: si tratta di una tecnica già nota chiamata KAISER per contrastare altri tipi simili di vulnerabilità (ai lettori più tecnici facciamo notare che nel kernel Linux e quindi anche in Android viene chiamata kernel page-table isolation (KPTI)).
Quindi gli sviluppatori di sistemi operativi come Linux, Mac OS X, Android e Windows hanno potuto implementare la contromisura prima ancora (o quasi…) che la vulnerabilità venisse resa pubblica (viste le numerose voci che già circolavano tra gli addetti ai lavori e non, è difficile definire il quando la notizia potesse considerarsi pubblica…).
Caso chiuso, dunque?
Sì, tuttavia…
Dal momento che le ottimizzazioni delle performance che permettevano questo tipo di attacco sono state annullate dalla tecnica KAISER, come vedremo dopo, su certi sistemi si è misurata una perdita di performance che varia a seconda del tipo di carico e delle operazioni svolte.
Molti microprocessori della famiglia ARM (anch’essi di uso molto comune) sono risultati completamente immuni a questa vulnerabilità.
Fa eccezione però la serie Cortex-A75 ad alte prestazioni, di cui ad esempio il processore Snapdragon 845 di Qualcomm fa parte.
Questo chip è usato in numerosi telefoni al top di gamma come: Samsung Galaxy S9 e S9 Plus, Xiaomi Mi Mix 2S e OnePlus 6.
Da quello che sappiamo in base alle informazioni pubblicate dai vari costruttori, Meltdown è un problema che affligge non solo quasi tutti i processori Intel ma anche alcune architetture ARM ad alte performance (Cortex-A75, come menzionato sopra).
I processori dell’iPhone usano un’architettura ARM proprietaria (ossia “non standard”) ad alte performance sviluppata da Apple, che evidentemente condivide lo stesso problema documentato da ARM per i suoi design di top della gamma.
Fortunatamente Meltdown è facilmente risolvibile e aggiornamenti software (iOS 11.2 nel caso dell’iPhone, iPad e iPod Touch) sono stati rilasciati ben prima che il problema diventasse noto ai più.
Apple ha in contemporanea anche rilasciato aggiornamenti per:
Invece, WatchOS per l’Apple Watch non richiede aggiornamenti, nonostante usi un processore stile ARM sviluppato da Apple.
Come mai?
Come vedremo in seguito, molti processori (ad esempio della famiglia ARM) a medio-basse performance devono anche preoccuparsi di limitare al massimo il consumo di energia (ad esempio, per estendere la durata della batteria, quando presente).
Quindi, la buona notizia è che in molti processori di uso piuttosto comune le tecniche di ottimizzazione delle performance che permettono le vulnerabilità Meltdown e Spectre non sono usate.
Il motivo è che queste tecniche aumentano sensibilmente le performance a scapito del consumo di energia. Perciò ad esempio dispositivi wearable a basso consumo come l’Apple Watch (e molti altri ancora) sono generalmente immuni sia da Meltdown che da Spectre. (Ovviamente future versioni di questi processori che volessero aumentare sensibilmente le loro prestazioni potrebbero dover prima o poi affrontare questi problemi…)
Rispetto a Meltdown la vulnerabilità Spectre, nelle sue quattro varianti note, è un problema più grave visto che colpisce praticamente tutti i processori ad alte performance, inclusi quelli di AMD (che però si dice immune da Variant 3a).
Sfrutta tracce latenti lasciate da tecniche di ottimizzazione di performance che sono molto comuni e che vengono utilizzate da quasi tutte le architetture di microprocessori moderni.
I ricercatori che hanno inizialmente scoperto questa classe di vulnerabilità sono riusciti a riprodurre l’attacco su processori Intel delle serie chiamate Ivy Bridge, Haswell e Skylake.
Inoltre, hanno anche verificato l’applicabilità dell’attacco alle CPU AMD Ryzen. Per entrambi la verifica è avvenuta sia su Linux che su Windows.
Infine, hanno implementato con successo attacchi di tipo Spectre su diversi processori Samsung e Qualcomm usati in molti telefoni cellulari.
No, come abbiamo spiegato sopra, i processori più semplici (tipicamente ottimizzati in termini di consumo di energia e non di performance) non sono interessati. Per esempio l’Apple Watch non è interessato né da Meltdown né da Spectre (mentre iPhone, iPad, ecc. sono vulnerabili).
Ciò significa anche che si può generalmente stare tranquilli per il proprio spazzolino intelligente, o il sensore intelligente di pressione arteriosa, o altri dispositivi IoT similari: questi semplici dispositivi non dovrebbero mai essere interessati da Meltdown e Spectre. (In campo automobilistico, invece, per certi sistemi come quello di infotainment alcuni processori ad alte performance utilizzati potrebbero essere vulnerabili.)
La natura multiforme e molto sofisticata di Spectre e il suo sfruttamento di una serie di tecniche molto comuni lo rende più subdolo e difficile da eradicare di Meltdown. Per esempio, la contromisura nota come KAISER usata contro Meltdown è inefficace contro Spectre.
Inoltre, i ricercatori sono stati in grado di usare Spectre in due casi diversi: all’interno di un’applicazione nativa e addirittura all’interno di codice Javascript che può essere scaricato da Internet e che gira su qualsiasi browser!
Questo ha portato alcuni a pensare che un hacker potrebbe in pratica usare un attacco Spectre di questo tipo all’interno di un browser per ottenere maggiori privilegi per poi scaricare del codice che lanci un attacco più pesante tramite Meltdown.
Quindi Spectre richiede contromisure sinergiche con quelle per Meltdown. Inoltre le contromisure per Spectre interessano un gran numero di componenti software e perciò vanno implementate in maniera capillare nel codice.
Fortunatamente, Spectre è anche abbastanza difficile da sfruttare e risulta essere ancora più lento di Meltdown: il codice dimostrativo dei ricercatori è stato in grado di leggere la memoria protetta ad una velocità di circa 10 KB/secondo su un tablet Surface Pro 3 di Microsoft.
In ogni caso, gli sviluppatori di browser si sono mobilitati celermente e hanno rilasciato una serie di contromisure per bloccare la tecnica usata da Spectre per estrarre informazioni utili dalle tracce latenti di cui abbiamo parlato sopra.
Per esempio nel browser open source WebKit (che è alla base di tutte le versioni del browser Safari di Apple) si è implementato un cambiamento della precisione dei timer, oltre all’eliminazione di strutture di memoria e di controlli che possono essere usati per implementare la vulnerabilità Spectre all’interno di codice Javascript nelle pagine web.
La prima serie di contromisure di WebKit contro Spectre è stata rilasciata tempestivamente l’8 gennaio 2018 con:
Invece, per computer Macintosh é necessario:
Anche i browser Microsoft Edge ed Internet Explorer, Mozilla Firefox e Google Chrome sono stati aggiornati prontamente con modifiche simili per annullare la possibilità di esecuzione di attacchi Spectre.
Google ed Apple hanno fornito molti dettagli sulle contromisure per le vulnerabilità Meltdown e Spectre implementate su tutte le rispettive piattaforme (inclusi quindi iOS, come menzionato sopra, ed Android, che è basato su kernel Linux).
Anche il variegato mondo delle distribuzioni del sistema operativo Linux si è mosso velocemente per rilasciare le contromisure per questi attacchi (alcune delle distribuzioni più comuni hanno pubblicato note in merito: Red Hat, Ubuntu, Debian, SUSE, Fedora, ecc.).
Microsoft ha rilasciato prontamente aggiornamenti contro entrambe le vulnerabilità Meltdown e Spectre a Gennaio 2018.
Per quel che riguarda Android, le prime contromisure contro Meltdown e Spectre sono state implementate a Gennaio 2018 con un over-the-air update (OTA) e con Android 2018-01-05 Security Patch Level(SPL), e poi estese in Android 2018-05-05 Security Patch Level (SPL).
Oltre ai dispositivi Pixel e Nexus di Google, queste contromisure dovrebbero essere state rese disponibili anche su:
Tuttavia, una ricerca della ditta italiana riCompro.it ha rilevato che:
“la maggior parte dei produttori non prevedono aggiornamenti per proteggere modelli rilasciati più di 12 mesi fa.”
E inoltre aggiunge:
“L’ultima ricerca di riCompro conferma i dati già emersi a Giugno dell’anno scorso: dopo 12 Mesi i produttori tendono ad aggiornare gli smartphone in ritardo o non aggiornarli più. Una ricerca pubblicata da riCompro dimostra che non solo non venivano aggiornati la maggior parte degli smartphone dopo 12 mesi, ma spesso venivano già rilasciati con versioni di Android datate.
Ecco i risultati della ricerca:
- I telefoni che ricevono update per più di 4 anni dopo il rilascio sono solamente gli iPhone di Apple
- HTC prova ad aggiornare qualsiasi device che utilizza Android 6 e successivi, ma garantisce solo aggiornamenti per i 24 mesi dopo la uscita del dispositivo
- Samsung non aggiorna smartphone rilasciati più di 24 mesi fa, rendendo gia il modello S5 insicuro per l’uso di applicazioni sensibili
- Modelli di Huawei e Honor vengono aggiornati in media per 24 mesi
Dopo 20 mesi dal rilascio solo pochi modelli Android vengono ancora aggiornati e rimangono non protetti contro nuove vulnerabilità.
Questa ricerca dimostra che i dispositivi Android non possono essere considerati sicuri sia per l’utilizzo dell’Online Banking sia per l’utilizzo aziendale, dopo 24 mesi dal rilascio, mentre gli iPhone rimangono aggiornati e sicuri per oltre 40 mesi.”
Se si possiede un dispositivo recente che gira un software menzionato nell’elenco sopra, sicuramente il numero di contromisure messe in campo è rassicurante.
Infatti, anche Intel, AMD, ARM ecc. hanno fornito ulteriori tecniche di protezione che alterano il comportamento dei propri processori per rendere l’esecuzione di attacchi Spectre molto difficile. Queste tecniche sono particolarmente utili per server e servizi cloud che devono assolutamente essere impenetrabili a questo tipo di attacchi.
La raccomandazione generale è di aggiornare il software alla versione più recente che contiene tutte le contromisure rilasciate dai vari produttori hardware/software.
Tuttavia purtroppo, vista la complessità intrinseca di Spectre, il problema non è risolto del tutto. Esiste ancora la possibilità che un’applicazione nativa (virus, trojan, ecc.) sfrutti questa classe multiforme di vulnerabilità insieme con altre potenziali vulnerabilità del sistema.
Ad una soluzione completa stanno lavorando sia i progettisti hardware (per future versioni dei microprocessori, che dovrebbero essere rese completamente invulnerabili) sia gli sviluppatori di strumenti software chiamati compilatori, il quali servono a produrre le applicazioni software per tutte le piattaforme (esistenti e future).
Un caso notevole è quello del compilatore open source promosso da Apple e chiamato LLVM, a cui contribuiscono anche Google, Intel, AMD, NVIDIA, ecc. che ha introdotto misure aggiuntive di sicurezza per la generazione di codice più robusto e meno facile da sfruttare per attacchi di tipo Spectre.
Si è parlato molto dell’impatto che gli aggiornamenti software contro Meltdown e Spectre avrebbero causato.
La verità è che non esiste una singola risposta alla domanda del titolo: l’impatto sulle performance dei sistemi è molto variabile e dipende dal tipo di carico di lavoro (workload, in inglese) che gira sul processore, sul modello e marca del processore, sul sistema operativo, ecc.
La stampa specializzata ha preso un sistema economico ($445) prodotto da Intel che gira Windows 10 (quindi un sistema recente ma con caratteristiche che lo rendono alla portata di tutti) e lo ha testato con e senza le patch (ossia le contromisure) rilasciate da Microsoft per le vulnerabilità Meltdown e Spectre.
I risultati ottenuti usando dei benchmark (ossia dei programmi specializzati di test) sono abbastanza variabili: si va da un impatto impercettibile in caso di applicazioni di lavoro (-0.83%), a un impatto trascurabile (~-2%) in caso di applicazioni per uso domestico e grafico/artistico, fino a raggiungere livelli più importanti (-8%) per applicazioni di produttività.
Purtroppo, applicazioni che fanno grande uso di memorie di massa veloci e alcune applicazioni professionali vengono impattate maggiormente (fino a -10.48% e -12.82% rispettivamente). Anche il benchmark Futuremark PCMark 8 – Storage Bandwidth (che misura la velocità di accesso alle memorie di massa) viene impattato in maniera notevole.
Ciò ha fatto presumere che la perdita di performance maggiore sarà probabilmente notata da servizi cloud e clienti di server farm, piuttosto che dagli utenti comuni (con possibili eccezioni in caso di applicazioni professionali o con elevato uso di memorie di massa veloci).
Anche Microsoft ha testato l’impatto delle contromisure contro Meltdown e Spectre, riassumendo così i loro risultati:
Intel ha pubblicato una serie di test basati sulle loro famiglie di processori più recenti usando Windows 10 e Windows 7:
Apple ha commentato sulle performance dicendo che le contromisure per Meltdown hanno avuto un impatto trascurabile:
I nostri test con benchmark pubblici hanno rivelato che i cambiamenti apportati con gli aggiornamenti di dicembre 2017 non hanno prodotto riduzioni quantificabili nelle prestazioni di macOS e iOS, in base al benchmark GeekBench 4 o ai comuni benchmark di navigazione sul web quali Speedometer, JetStream e ARES-6.
mentre quelle per Spectre hanno causato un rallentamento inferiore al 2,5% nel benchmark JetStream per il browser Safari:
Dall’analisi di queste tecniche è emerso che, sebbene siano estremamente difficili da sfruttare, persino da un’app in esecuzione in locale su un Mac o un dispositivo iOS, potrebbero consentire exploit in JavaScript all’interno di un browser web. L’8 gennaio Apple ha rilasciato aggiornamenti per Safari su macOS e iOS contenenti soluzioni per queste tecniche di exploit. I nostri test attuali indicano che le soluzioni in Safari non hanno alcun impatto quantificabile sui test Speedometer e ARES-6 e hanno un impatto inferiore al 2,5% sul benchmark JetStream. Apple è tuttora impegnata a sviluppare e testare ulteriori soluzioni per Spectre, che verranno rilasciate nei prossimi aggiornamenti di iOS, macOS e tvOS.
Le due nuove varianti scoperte a maggio 2018 (variant 3a e 4) sfruttano altre ottimizzazioni presenti in molti microprocessori, ma sono sostanzialmente analoghe alle due varianti originarie. (Tecnicamente queste due nuove varianti sono chiamate rispettivamente Rogue System Register Read (RSRE) e Speculative Store Bypass (SSB).)
Vista la forte analogia con le varianti precedentemente scoperte, si prevede che le contromisure adottate finora siano sufficienti.
Tuttavia aziende come Intel e Microsoft rilasceranno patch aggiuntive che però consigliano di usare solo se strettamente necessarie: l’impatto ulteriore alle performance infatti sarebbe basso, ma non nullo, specialmente nel caso di variant 4. Intel ha rilasciato questo commento a riguardo:
Our data here is preliminary, but we have not observed any performance impacts on client or server benchmarks when mitigating variant 3a. We don’t expect any of the existing production browser-based changes for variant 4 to further impact system performance. In preliminary analysis, we have observed impacts on some benchmarks and very specific configurations when mitigating variant 4 with updated microcode and accompanying system software changes. More information on considerations for their use can be found in our whitepapers.
In poche parole, la semplice conclusione di questo lungo articolo è di non lasciarsi prendere dai sensazionalismi.
Come abbiamo spiegato, Meltdown e Spectre non sono hardware bug.
Sono solo delle vulnerabilità (piuttosto difficili da sfruttare peraltro) di meccanismi hardware usati da lungo tempo. Alcuni di questi meccanismi sono estremamente comuni perché sono necessari per tutti i microprocessori ad alte performance (di qualsiasi produttore).
La buona notizia è che, come menzionato in vari paragrafi sopra, in pratica i più colpiti dalle vulnerabilità Meltdown e Spectre sono i servizi cloud e i browser, e per entrambi sono state prese rapidamente delle contromisure ritenute efficaci.
Mentre Meltdown è considerato pienamente risolto, Spectre rimane un problema aperto a causa della sua complessità e multiformità.
Nessuno lo sa, ma è sicuramente possibile. In senso lato, anche Meltdown può infatti considerarsi una variante speciale di Spectre: alcuni lo chiamano la variante 3…
Per gli utenti si tratta semplicemente di trattare Spectre come una delle tante vulnerabilità che un virus o un trojan può sfruttare in aggiunta alle altre potenzialmente esistenti.
Per essere pericoloso Spectre deve poter essere eseguito sul dispositivo della vittima: questo però è solo possibile utilizzando altre vulnerabilità già presenti nel sistema.
Quindi la raccomandazione più importante per gli utenti è quella di utilizzare la versione più recente del software per il proprio computer, telefono cellulare, tablet ecc. che incorpori tutte le contromisure (ossia le patch) rilasciate per correggere TUTTE le vulnerabilità note, incluse quelle per Meltdown e Spectre (a questo riguardo, si vedano i comunicati dei vari costruttori riportati sopra).
Inoltre, si devono seguire le stesse raccomandazioni standard che valgono per difendersi dai comuni virus/trojan, chiamati genericamente “malware” in inglese:
Quindi, in conclusione, usare il buon senso e seguire pratiche basilari di sicurezza serve a rimanere immuni dalla stragrande maggioranza di vulnerabilità di qualsiasi dispositivo.
Per imparare di più sull’importanza delle nuove tecnologie mediche in rapida evoluzione, e per un elenco di riferimenti ad esempi ed applicazioni pratiche in cui si utilizza l’eHealth per migliorare la vita umana, consigliamo il lettore di partire dalla pagina dedicata: Cos’è l’e-Health (Digital Health), che abbiamo aggiornato ed espanso recentemente. Ulteriori approfondimenti e spunti sono disponibili in articoli come l’Editoriale: eHealth per Salvare Vite, Allarme dell’FBI: Tutti i Router Wireless Sono Infettati da VPNFilter? E i PC? e Come Aumentare la Sicurezza del Telefono Cellulare.
Volete rimanere aggiornati sull’affascinante mondo dell’e-health? E continuare a leggere di come la salute digitale dopo aver segnato l’inizio di una rivoluzione epocale nel fare medicina e nel curare i pazienti evolverà in futuro? Di come la digital health (ad esempio con la mobile health) possa entrare ogni giorno nelle case di tutti e fornire importanti ausili per prendersi maggior cura del nostro bene più prezioso, ossia la nostra salute? Allora iscrivetevi alla nostra newsletter!
Che cosa ne pensate delle vulnerabilità dei dispositivi informatici? Vi è chiaro cosa sono Meltdown e Spectre? Le considerate semplicemente dei ”bug hardware”, che prima o dopo verranno eliminati, oppure preferite la prospettiva dell’articolo che promuove un ruolo più attivo dell’utente a riguardo delle pratiche basilari di sicurezza dei dispositivi informatici? Avete delle domande che vi possiamo aiutare a rispondere? O dei commenti o dei suggerimenti che possono essere utili a noi o agli altri lettori? Se sì, per favore condivideteli nella sezione dei commenti qui sotto!
Leave a Comment