La fine del 2017 ha visto sul banco degli imputati Intel ed un nuovo caso legato alla sicurezza, che ha agitato e non poco gli addetti del settore. I social si sono scatenati con gli hashtag #Meltdown e #Spectre. Per qualche motivo, non ancora chiaro, l’azienda di Santa Clara ha costruito le CPU degli ultimi 10 anni, lasciando aperto un canale tra la memoria protetta del Kernel ed i normali processi degli utenti. La cosa grave è che pare Intel sapesse di questo problema e non ha mai informato i player di sistemi operativi per avvisarli del rischio o per collaborare assieme, al fine di creare una soluzione.
L’errore di progettazione consente di accedere a questa memoria attraverso dei semplici programmi eseguiti a livello utente, comprese app JavaScript eseguire da un browser. Mancando uno strato di isolamento, gli attacchi possono essere classificati in due tipologie:
- Semplice: creazione di malware per creare danni minori
- Critico: leggere dati sensibili come password e chiavi di login presenti nella memoria del Kernel
Il Prezzo del Fix
Non è la prima volta che assistiamo a problemi di sicurezza ed ormai siamo tutti abituati a vedere una patch risolutiva, ma questa volta è diverso…pesantemente diverso. In primis, questa falla non si risolve con una “toppa” bensì come una parziale riscrittura del Kernel e nel modo in cui separare in modo completo la memoria del Kernel dai processi eseguiti normalmente, utilizzando un sistema chiamato Kernel Page Table Isolation (KPTI); quest’ultimo gestirà in maniera diversa il passaggio tra user-mode e kernel-mode, eseguendo quest’ultima modalità in uno spazio totalmente isolato.
Lo svantaggio di questa separazione è costoso, in termini di tempo, e si traduce nel costruire un passaggio tra due spazi di indirizzi separati per ogni chiamata di sistema e per ogni interrupt dall’hardware. Questi cicli non avverranno istantaneamente e costringeranno il processore a scaricare i dati memorizzati nella cache ed a ricaricare le informazioni dalla memoria. Il risultato è il sovraccarico del kernel ed il rallentamento del computer.
L’impatto sugli utenti finali è una perdita di prestazioni che variano dal 5 al 30%, a seconda della CPU ma anche dall’applicazione. Gli ambienti virtuali potrebbero pagare lo scotto più elevato, vista l’aggiunta di uno strato di complessità nella gestione dei processi.
Le Varianti
Come detto in apertura, le varianti dei bug sono due:
Meltdown
- Consente ai programmi di leggere all’interno della memoria privata del Kernel
- Colpisce CPU a 32 e 64bit
- Colpisce tutte le CPU Intel dal 1995 al 2013 (inclusa la famiglia Haswell Xeon)
- Colpisce alcune CPU ARM della famiglia Cortex A15, A57 A72 e A75
Spectre
- Consente alle applicazioni user-mode di estrarre informazioni da altri processi
- Colpisce CPU a 32 e 64bit
- Colpisce tutte le CPU Intel
- Colpisce alcune CPU ARM della famiglia Cortex A15, A17, A57 A72, A73, A75, R7, R8, A7, A8
- Colpisce alcune CPU AMD della famiglia Ryzel, FX ed Pro
La Patch in Arrivo
Microsoft è già al lavoro su questa patch da dicembre e dovrebbe rilasciare la versione definitiva con il Tuesday-Patch di gennaio. Sono state anche rese disponibili delle pagine web per spiegare il problema, quali sono i servizi maggiormente esposti e come verificare che gli accessi speculativi siano attivi o meno:
- Windows Client: https://support.microsoft.com/en-us/help/4073119/windows-client-guidance-for-it-pros-to-protect-against-speculative-exe
- Windows Server: https://support.microsoft.com/en-us/help/4072698/windows-server-guidance-to-protect-against-the-speculative-execution-s
- SQL Server: https://support.microsoft.com/en-us/help/4073225/guidance-for-sql-server
Linux, invece, riceverà una KAISER patch, che verrà estesa anche al Kernel ARM a 64bit in modo da separare il Kernel User Spaces. Anche Apple, la quale ha annunciato che sia macOS che iOS sono soggette al problema, è corsa ai ripari con il rilascio della versione 10.13.3 (High Sierra).
Soluzione Drastica
La patch non è l’unica risposta, perchè in alcuni casi potrebbe essere necessario cambiare la CPU, soprattutto in quegli scenari in cui la data di rilascio risulta veramente datata. Non una notizia da poco, soprattutto per quelle aziende che hanno molti server, con più di 4 anni.
AMD
Benché i ricercatori abbiano confermato il problema anche per AMD, attraverso una email inviata da Tom Lendacky, la casa costruttrice ha dichiarato:
AMD processors are not subject to the types of attacks that the kernel page table isolation feature protects against. The AMD microarchitecture does not allow memory references, including speculative references, that access higher privileged data when running in a lesser privileged mode when that access would result in a page fault.
Lendacky parla di accessi speculativi e che pare siano alla base della problematica di Intel. Per velocizzare l’esecuzione dei thread, le CPU di Intel eseguono speculativamente codice potenzialmente senza eseguire controlli di sicurezza, consentendo al codice utente Ring-3 level di leggere i dati del kernel a livello Ring-0. E’ possibile creare software in modo tale che il processore inizi a eseguire un’istruzione che normalmente sarebbe bloccata, come leggere la memoria del kernel dalla modalità utente, e completa tale istruzione prima che si verifichi il controllo del livello di privilegio.
Ambienti Condivisi
Una perdita di performance così elevate non è una cosa da poco ed il cloud sarà il più grande ecosistema che sarà colpito da questo problema. Microsoft Azure, Amazon Web Services e Google dovranno correre ai ripari per correggere i bug ed aggiornare il loro parco macchine, per evitare che i clienti notino in modo pesante una diminuzione di prestazioni.
In casa Microsoft, si sta già preparando la grande operazione e molti utenti hanno ricevuto un avviso che mercoledì 10 gennaio le loro macchine virtuali saranno riavviate, indipendentemente se basate su Linux o Windows. Maggiori informazioni su quanto verrà fatto è disponibile all’interno di questo articolo: Securing Azure customers from CPU vulnerability.
Per sapere se le vostre macchine virtuali saranno soggette a manutenzione, potete usare il servizio Planned Maintenance del portale Azure: https://portal.azure.com/#blade/Microsoft_Azure_Health/AzureHealthBrowseBlade/plannedMaintenance.
Impatto sugli Utenti
Server, Workstation, PC, Tablet, Smartphone e Smart Device: tutti i device sono colpiti da questo problema e in un’epoca in cui i dispositivi domestici, ma non solo, sono esposti su Internet, ecco come questo bug mette a rischio miliardi di utenti in tutto il mondo!
Oltre alla perdita di performance, che magari in futuro verrà recuperata con un nuovo design della gestione del Kernel, per le aziende si prospetta un pesante investimento per aggiornare il parco macchine troppo datato.
Impatto su Intel
Intel non esce bene da questa debacle ed a livello di immagine sicuramente dovrà fare molto per rimettersi in carreggiata, ma il vantaggio di non avere più un vero competitor (AMD) rende l’operazione forse più facile del previsto. Di sicuro in borsa l’azienda ha perso diversi punti percentuali e se dovesse essere accertato che l’azienda sapeva da sempre del problema, potrebbero esserci molti cambiamenti per l’azienda di Santa Clara.