Si chiamano 'Meltdown' e 'Spectre' e sono i bug più gravi mai riscontrati nella storia dell'informatica: se avete un computer o un telefonino, ce li avete.
Sì, per tre principali fattori:
Virtualmente tutti i computer prodotti negli ultimi due decenni. Ad essere toccati sono infatti i processori Intel (montati su Pc e – dal 2006 – Mac), Amd (processori 'alternativi' per Pc) e Arm (telefoni e tablet Android). Interpretando quanto scritto da Apple in una recente presa di posizione, sembra che ad esserne affetti siano pure iPhone e iPad. Non l'Apple Watch.
In teoria sì. Va però considerato che non si conoscono attualmente codici malevoli che sappiano sfruttarlo. Inoltre gli sviluppatori di sistemi operativi (Windows, MacOS, iOS, Android, Linux) stanno mettendo le toppe ai buchi lasciati aperti dai produttori di Cpu, i quali sono pur intervenuti (vedi prossima domanda).
Aggiornando il sistema operativo e aggiornando i browser di navigazione in internet. Vedi sotto.
È possibile, dato il lavoro maggiore richiesto dalle soluzioni software che dovrebbero mitigare il problema. Esperti stimano una perdita di velocità tra il 5 e il 30% per i dispositivi Intel. Non ci sono per ora prove sul campo. La società che produce i microchip sostiene invece che la perdita di potenza non sarà notata dai normali utenti e che le 'performance' andranno comunque migliorando con il passare del tempo.
I processori moderni sono un gioiello della tecnica. Tuttavia sono sistemi altamente complessi ed è quindi possibile che nel progettarli possano sfuggire piccoli errori di logica che, se sfruttati, causano poi problemi giganteschi. Va detto che la complessità di una Cpu – oltre a complicare la vita a chi la crea – rende difficile scovare i buchi lasciati dai progettisti. Per questo bachi possono passare inosservati per anni. Anche per decenni.
Attenzione, qui la cosa di fa un po' tecnica. Diciamo prima di tutto che i due bachi non sono identici e non sfruttano gli stessi meccanismi. Giungono però allo stesso risultato: permettono l'accesso a informazioni teoricamente segrete. Il tratto comune è dato dal fatto che sfruttano errori di design di due meccanismi pensati dai produttori di chip per velocizzare ancora di più l'esecuzioni delle operazioni all'interno del cervello del computer, ovvero l'esecuzioni di istruzioni furio dall'ordine prestabilito e il tentativo del processore di "portarsi avanti" col lavoro.
Per capire come si possibile garantire la sicurezza, l'architettura dei microprocessori si basa fondamentalmente sulla separazione della memora. In particolare gli spazi dove vengono registrate le informazioni del sistema operativo (kernel) sono resi inaccessibili agli utenti. Ciò nonostante, sfruttando un meccanismo presente nei moderni microprocessori, i malintenzionati possono leggere (senza diritto) spazi dedicati al kernel, avendo così accesso anche a password e dati personali.
Il cavallo di troia di "Meltdown" in questo caso si chiama 'Out-of-order execution', ovvero l'abilità delle Cpu prodotte negli ultimi decenni, di eseguire le istruzioni non nell'ordine in cui sono state inoltrate, ma secondo la disponibilità dei dati. In questo modo è possibile guadagnare tempo, evitando che il processore rimanga in attesa mentre i dati necessari per il completamento di un'istruzione vengono reperiti. Ciò dà però anche la possibilità di far eseguire un'istruzione per scaricare e salvare il contenuto di una cella di memoria teoricamente inaccessibile nel breve tempo che intercorre tra la richiesta di accesso ai dati e la risposta di accesso negato da parte della Cpu.
La soluzione più veloce a questo problema è quella di utilizzare il "Page Table Isolation", un metodo per rendere gli indirizzi di memoria assegnati al kernel "invisibili" e separati ai normali processi utente. In questo modo, tuttavia, il processore è costretto agli "straordinari" per passare in continuazione tra i due tipi di memoria, con una possibile diminuzione delle prestazioni complessive del sistema.
"Spectre" sfrutta invece la cosiddetta "esecuzione speculativa", una funzionalità con cui i processori, per velocizzare le operazioni, cercano di intuire quale risultato di un'operazione in corso è più probabile. Il processore eseguire quindi le successive operazioni come se il risultato precedente fosse già noto. Qualora la speculazione risulti corretta, la Cpu avrebbe quindi guadagnato tempo, portandosi avanti col lavoro. In questo contesto è possibile ingannare il meccanismo predittivo della Cpu in modo da farle eseguire calcoli anticipati che non occorrerebbero durante l'esecuzione corretta di un programma, ma che nel frattempo permetterebbero di scaricare i contenuti segreti della memoria del processore.
L'ironia sta nel fatto che tanto più un software è stato progettato seguendo le linee guida di sicurezza dei produttori di Cpu, tanto più l'applicazione finale è soggetta a rischi. Ciò significa che il sistema operativo, ora come ora, non può più dare per scontato il fatto che la memoria a lui riservata è inaccessibile grazie al design del microprocessore. Deve quindi assumersi lui stesso l'onere di tenere al sicuro i dati. Ciò richiede tuttavia un quantitativo maggiore di operazioni e, quindi, più tempo.