Intel: grave falla sulle CPU, fix pronto e distribuito

Dopo la notizia di MINIX, l’OS installato su CPU Intel di ultima generazione, che ha accesso a informazioni importanti a nostra insaputa, nelle ultime 48 ore The Register, ne ha scoperto un nuovo bug sulle. Così riferisce AMD:

«L’esecuzione speculativa del bug sul kernel a livello hardware è da incolpare a Intel; non può essere fixato utilizzando un aggiornamento del microcode e richiederà una patch a livello KPTI per tutti gli OS colpiti.»

Prima di entrare in altri dettagli, una spiegazione sul problema: il bug è stato scoperto a livello hardware e riguarda un exploit che è in grado di garantire l’accesso a livello del kernel da malintenzionati. Dal momento che questo esiste a livello hardware, una patch tramite microcode non è apparentemente possibile. L’unica soluzione nota è intervenire tramite il sistema operativo, che richiederebbe una riprogettazione del l’OS stesso, su cui WindowsLinux e Apple hanno già lavorato.
Microsoft ha già rilasciato una patch per i propri sistemi Windows 10, con il codice KB4056892. Comunque, il problema è che qualsiasi patch potrebbe introdurre una penalità temporale cruciale per il sistema, il ché significa che in alcuni casi le CPU potrebbero rallentare drasticamente. Abbiamo visto numeri quotati fino al 30%, ma le stime approssimative indicano un rallentamento di circa il 17%. Quindi, qual è esattamente il problema?
Prima di entrare nei dettagli, ecco la dichiarazione di AMD, che fondamentalmente ha dato più dettagli su quale sia il problema:

«I processori AMD non sono soggetti ai tipi di attacchi a livello kernel. La microarchitettura AMD non consente riferimenti di memoria, inclusi riferimenti speculativi, che accedono a dati con privilegi più elevati quando vengono eseguiti in una modalità con privilegi minori quando tale accesso comporterebbe un errore di pagina.»

Dato che Intel ha parlato a lungo di questo problema, possiamo dedurre abbastanza facilmente da questa affermazione che il problema ha a che fare con riferimenti speculativi nei processori Intel. L’esecuzione speculativa è fondamentalmente una forma di preemption che cerca di prevedere quale codice verrà eseguito, quindi lo preleva e lo esegue prima che l’ordine effettivo arrivi. Quindi si dovrebbe avere un kernel assolutamente pronto per ogni comando, invece di lasciarlo aspettare.
Il problema, come risulta dai commenti di AMD, è che è possibile sfruttare questa funzione per eseguire in modo speculativo un codice che normalmente verrebbe bloccato, finché si interrompe l’esecuzione effettiva del codice prima che sia possibile eseguire un controllo. Questo significa che un utente di livello 3 può leggere i dati del kernel di livello 0 utilizzando l’esecuzione speculativa, poiché il controllo dei privilegi non verrà effettivamente attuato finché il codice non viene eseguito sul main.
Il layer Kernel è attualmente presente nello spazio di indirizzamento della memoria virtuale di tutti i processi per garantire una consegna rapida durante l’esecuzione del codice, ma è completamente invisibile a tutti i programmi. Il kernel proverà fondamentalmente a prevedere quale codice verrà eseguito successivamente e quando un programma effettua una chiamata di sistema a esso, sarà già pronto per la consegna. Ciò può aumentare significativamente i tempi di esecuzione ma, rappresenta anche un fastidioso errore di sicurezza poiché nessun controllo dei privilegi è presente allo stadio del kernel. L’unico modo per aggirare questa caratteristica di livello hardware è usare quella che viene chiamata una tecnica Kernal Page Table Isolation (KPTI) che renderà il kernel completamente cieco al sistema e lo rimuoverà dallo spazio di memoria virtuale, fino a quando non si verificherà una chiamata di sistema. Inutile dire che questo potrebbe introdurre severe penalità nel tempo in situazioni di commutazione di contesto in cui sono richieste molte chiamate di sistema. Il team di Linux ha anche rimuginato su FUCKWIT (Forcefully Unmap Complete Kernel with Interrupt Trampolines) che dovrebbe dare un’idea di quanto sia frustrante il bug per gli sviluppatori.
Secondo alcune fonti, questo numero può variare dal 5% al ​​30% a seconda del tipo di processore in uso, poiché le moderne CPU hanno una funzionalità denominata PCID che può ridurre l’impatto sulle prestazioni. Secondo una soluzione KPTI esistente pubblicata su Postgresql, ci si dovrebbe aspettare un rallentamento del caso migliore del 17% e un rallentamento del 23% nel caso peggiore. In ogni caso, tutte le fonti concordano sul fatto che un rallentamento si verificherà quasi sicuramente e questo non è qualcosa che Intel può semplicemente applicare a un microcodice. I processori AMD in questo momento non sono interessati dal momento che non utilizzano l’esecuzione speculativa. Quindi la domanda è: chi avrà questo impatto e come questo inciderà sugli utenti finali? La buona notizia per tutti i gamer o utenti “normali” è che non si noterà quasi nessuna differenza una volta applicata la patch poiché i videogiochi e il rendering di base non sono carichi abbastanza pesanti per avere quei rallentamenti. I client aziendali come Google EC2 e Amazon Compute Engine, tuttavia, subiranno un drastico impatto dal momento che utilizzano macchine virtuali che possono seriamente compromettere le prestazioni. In secondo luogo, come utente generico, le password e altre informazioni sensibili sono memorizzate nel kernel e questo bug potrebbe potenzialmente garantirne un accesso aperto.
Nelle ultime ore il team di Phoronix ha eseguito dei test con KPTI attivo su due CPU, un Intel Core i7 6800K e un Intel Core i7 8700K; i grafici mostrano un sostanziale degrado di performance che parte dall’ 1% al 53% nei casi peggiori,  ma comunque ciò non comprometterebbe l’utilizzo dei videogiochi.

Il comunicato stampa ufficiale da parte di Intel

Come detto si parla che la patch possa risolvere il problema almeno parzialmente ma a discapito delle prestazioni in modo variabile. Intel però si è subito fatta sentire ed ecco cosa dice nel suo comunicato stampa:

«Intel e altre aziende tecnologiche sono state messe a conoscenza di una nuova ricerca di sicurezza che descrive metodi di analisi software che, se usati per scopi dannosi, hanno il potenziale per raccogliere impropriamente dati sensibili da dispositivi informatici che funzionano come progettato. Intel ritiene che questi exploit non abbiano il potenziale per corrompere, modificare o eliminare dati. Le recenti notizie secondo cui questi exploit sono causati da un “bug” o una “falla”, unicamente legati ai prodotti Intel sono scorrette. In base all’analisi fino a questo momento, molti tipi di dispositivi – con processori di aziende differenti e sistemi operativi – sono suscettibili a questi exploit. Intel è impegnata nel garantire la sicurezza dei prodotti e dei clienti e sta lavorando a stretto contatto con molte altre aziende tecnologiche tra cui AMD, ARM Holdings e diversi fornitori di sistemi operativi, per sviluppare un approccio a livello industriale per risolvere questo problema in modo rapido e costruttivo. Intel ha iniziato a fornire aggiornamenti software e firmware per mitigare questi exploit. Contrariamente ad alcune notizie, qualsiasi impatto sulle prestazioni è legato al carico di lavoro e, per l’utente medio di un PC, non dovrebbe essere importante e sarà mitigato nel tempo. Intel si impegna a seguire le best practice industriali nella divulgazione responsabile di potenziali problemi di sicurezza, e per questo motivo Intel e altre aziende avevano intenzione di parlare di questo problema la prossima settimana quando gli aggiornamenti di software e firmware saranno disponibili. Intel si trova tuttavia costretta a pubblicare questo comunicato in seguito ai report inaccurati dei media. Rivolgetevi al fornitore del sistema operativo o al produttore del sistema e applicate tutti gli aggiornamenti non appena disponibili. In generale seguire le buone pratiche di sicurezza che proteggono dai malware aiuterà anche a proteggervi dal possibile sfruttamento della falla fino a quando gli aggiornamenti non saranno applicati. Intel ritiene che i suoi prodotti siano i più sicuri al mondo e che, con il supporto dei suoi partner, le attuali soluzioni a questo problema offrano la migliore sicurezza possibile per i propri clienti.»

Anche se la questione non è per niente conclusa, in attesa di nuovi aggiornamenti, ecco il riassunto di cosa Intel ha detto in modo specifico per capire meglio la situazione:

  • Intel ritiene che questi exploit non possono corrompere, modificare o eliminare i dati.
  • Intel afferma che non sono solo i suoi prodotti a essere coinvolti. Si parla di prodotti con CPU diverse e sistemi operativi differenti, quindi anche smartphone.
  • Intel fa i nomi di AMD e ARM. Un saggia mossa che sposta l’attenzione, fino ad ora focalizzata sul proprio brand.
  • Intel afferma che l’impatto prestazionale per chi usa il PC in modo tradizionale – come la stragrande maggioranza di noi, e quindi per giocare, navigare ecc… sarà di poco conto e sarà mitigato ulteriormente in futuro.
  • Intel ritiene che i suoi prodotti siano i più sicuri al mondo.

Test svolti dalla redazione

Abbiamo fatto due semplici benchmark su lato CPU ovviamente con Windows 10, prima della patch e dopo la patch (KB4056892) per vedere se ci sono dei cambiamenti. Abbiamo usato una CPU Intel Core i5 6600K portato a 4,60 GHz stabili, e come programmi: Geekbench 4 e Aida 64:

Da come si può vedere dai benchmark la situazione è cambiata poco e, se i valori su Geekbench 4 nel prima sono più alto è da attribuirsi a tanti fattori tra cui servizi aperti, cosa stava facendo il PC in quel momento ecc… Su Aida 64 invece alcuni valori sono aumentati, per il motivo descritto prima. Quindi in conclusione, dai primi test nei benchmark, si spera in gaming le cose non dovrebbero cambiare. A breve faremo delle verifiche su lato gaming se ci sono cambiamento e aggiorneremo questo articolo, quindi rimanete aggiornati con noi !