Negli ultimi giorni hanno fatto discutere una serie di difetti piuttosto gravi in alcuni processori Intel. Come viene sottolineato, alcuni di questi difetti possono essere sfruttati da processi utente per violare i meccanismi di sicurezza del processore. Molta della discussione riguarda comunque uno specifico bug, per il quale è possibile una correzione (aggiornamento del microcodice via BIOS, pare). Vale la pena di sottolineare la gravità di questo tipo di problemi. I meccanismi di sicurezza implementati dai sistemi operativi si appoggiano necessariamente su quelli implementati dai processori, nella solta logica a livelli. Nel momento in cui i meccanismi di sicurezza del processore falliscono, un processo può spesso violare le protezioni del sistema senza che il sistema operativo possa in alcun modo intervenire. Non si tratta di una novità: ci sono precedenti, vedi ad esempio The Intel 80×86 Processor Architecture: Pitfalls for Secure Systems. Tuttavia adesso i problemi sembrano essere più diffusi, e forse non bisognerà aspettare molto per vedere del codice che li sfrutti. Il grosso problema naturalmente è che un difetto nel processore non può essere semplicemente patchcato come quello in un applicativo, anche se come detto in alcuni casi sono disponibili degli aggiornamenti del microcodice da installare via BIOS. Non tutti i difetti verranno corretti, e immagino che per alcuni non basterebbero comunque degli aggiornamenti.
Quello delle vulnerabilità nei processori è quindi un problema nello stesso tempo grave (permette di aggirare molte protezioni) e di difficile gestione. Si tratta anche di un problema in generale piuttosto trascurato, perché il processore è visto forse come un oggetto monolitico e affidabile. È anche un’area in cui probabilmente c’è poca “ricerca”, nel senso di ricerca delle vulnerabilità, anche perché i difetti spesso ci sono solo in alcune versioni dei processori. Non mi stupirebbe se in seguito al rumore di questi giorni, ci fossero più persone interessate a indagare maggiormente sui difetti dei processori. E naturalmente mi stupirebbe ancor meno se le vulnerabilità risultassero essere molte più di quelle finora riportate.
Cosa si può fare? Per fortuna, alcuni dei difetti riportati possono essere contrastati con aggiornamenti al sistema operativo o al BIOS. Certo, aggiornare il BIOS per motivi di sicurezza non è nella normale gestione delle vulnerabilità, e può essere quantomeno oneroso in molti contesti. Alcune vulnerabilità non saranno comunque corrette. Per poter sfruttare questo tipo di vulnerabilità, l’attaccante deve poter eseguire codice (macchina) arbitrario. È bene sottolineare di nuovo che, in generale, non hanno importanza i privilegi gestiti dal sistema operativo; in effetti, l’uso più probabile di attacchi di questo tipo sono attacchi di privilege escalation, da parte di utenti locali o dopo aver compromesso un account non privilegiato. Mentre per gli attacchi esterni i meccanismi abituali costituiscono quindi delle valide linee di difesa per impedire che gli attaccanti arrivino a sfruttare queste vulnerabilità, per quanto riguarda gli utenti locali (comprese eventuali macchine virtuali) il discorso non è così semplice. Se il sistema operativo non è in grado di impedire la violazione, probabilmente la via più efficace è riconoscere i tentativi. È probabile, ma non ho abbastanza informazioni al riguardo, che molti dei problemi siano non deterministici, e quindi l’attaccante nel tentativo di sfruttarli causi ad esempio molti errori di violazione prima di un successo. Rilevare questi errori può essere il modo per riconoscere che qualcosa sta succedendo e che bisogna intervenire. Comunque sia, è una strada di indagine ancora, che io sappia, piuttosto poco battuta.