Sono stati scoperti due nuovi gravi difetti di sicurezza, Spectre e Meltdown .
Raspberry Pi è vulnerabile per Spectre e / o Meltdown?
Sono stati scoperti due nuovi gravi difetti di sicurezza, Spectre e Meltdown .
Raspberry Pi è vulnerabile per Spectre e / o Meltdown?
Risposte:
Secondo ARM stessi, i core del processore utilizzati in tutti i modelli prima del Pi 4 non sono vulnerabili .
La maggior parte dei processori Arm non è influenzata da alcuna variazione di questo meccanismo di speculazione del canale laterale. Di seguito è riportato un elenco definitivo del piccolo sottoinsieme di processori progettati da Arm che sono sensibili. [vedi link per la tabella]
I core del processore utilizzati dal vecchio Pis sono:
Pi 1 e Zero (W) : ARM11
Pi 2 V1 : ARM Cortex-A7
Pi 2 V1.2 e Pi 3 : ARM Cortex-A53
Nessuno dei suddetti core è elencato come vulnerabile a nessuna versione dell'attacco (non è elencato affatto, infatti, perché non esiste alcuna vulnerabilità nota a questi attacchi).
I lampone Pi 4 usi il Cortex-A72 , che viene indicato come vulnerabile alle varianti 1, 2, 3a e 4. Come risulta è il lampone Pi 4 vulnerabile allo spettro sfrutta? , Raspbian contiene mitigazioni del software per queste vulnerabilità, quindi il rischio di sfruttamento dovrebbe essere basso. Altri sistemi operativi potrebbero non contenere mitigazioni appropriate e, sebbene ARM affermi che è stata rilasciata una mitigazione hardware per Cortex-A72, non è chiaro se questo sia stato applicato a Pi 4.
Si noti che le varianti 1 e 2 (CVE-2017-5753 e CVE-2017-5715) sono note come Spettro e le varianti 3 (CVE-2017-5754) e 3a (un attacco correlato indagato da ARM) sono chiamate Meltdown . Pertanto, nessuno dei dispositivi Raspberry Pi prima di Pi 4 è ritenuto vulnerabile a Spectre o Meltdown.
Il Pi (tutte le versioni) non è vulnerabile.
Spectre e Meltdown richiedono entrambi l'esecuzione fuori servizio. Il Cortex-A7 usato all'inizio del Pi 2 e il Cortex A53 usato nel successivo Pi 2 e il Pi 3 è un'architettura rigorosamente in ordine. L' ARM11 utilizzato nel Pi 1 è parzialmente fuori servizio, ma non in un modo che permetta a Spectre o Meltdown di funzionare.
ARM lo conferma : solo un sottoinsieme molto limitato di processori ARM ha hardware che li rende vulnerabili a Spectre, un sottoinsieme ancora più limitato è vulnerabile a Meltdown e si ritiene che tutti consentano di mitigare la minaccia.
Vorrei offrire la mia diversa opinione su questo.
A proposito di Meltdown, è una vulnerabilità molto specifica in alcuni processori, quindi se ARM dice che la CPU in Raspberry Pi non è vulnerabile, allora probabilmente ci si può fidare.
Tuttavia, Spectre è una vulnerabilità più generale. Finora sono state dimostrate solo due varianti, ma sono abbastanza sicuro che ci siano più varianti. L'errore nella CPU è che lo stato del predittore di diramazione non viene cancellato quando si esegue un cambio di contesto e che lo stato del predittore di diramazione è indicizzato dai bit di ordine inferiore dell'indirizzo dell'istruzione di diramazione e non è affatto contrassegnato. Quindi potresti avere due rami che condividono lo stesso stato predittore di rami, anche oltre i confini del processo.
Sono molto fiducioso che la CPU in tutti i modelli Raspberry Pi sia simile praticamente a tutte le altre CPU là fuori in quanto il predittore di ramo è solo una vasta gamma di contatori saturi a 2 bit (fortemente presi, debolmente presi, debolmente non presi, fortemente non preso). L'indice di questo array sono i bit di ordine inferiore dell'indirizzo dell'istruzione di diramazione e non è presente alcun tag e questo stato predittore non viene mai cancellato.
Ora, se due rami condividono lo stesso stato predittore, è possibile misurare la direzione presa da un ramo in un passato molto recente. La perdita di informazioni di Spectre è quindi lì! Se puoi attivare in modo affidabile il browser per eseguire alcune ramificazioni di codice sulla tua password da JavaScript e misurare in che modo sono andati i rami, puoi effettivamente estrarre la password. Ora questo è un esempio estremo, nessuno sano di mente si diramerebbe su ogni singolo bit della tua password in un modo che può essere attivato da JavaScript, ma questo dimostra il problema.
Non credere a tutto ciò che dice ARM. Ciò che ARM indica è probabilmente che gli exploit sviluppati da Google non funzionano su queste CPU ARM. Ciò non significa che sarebbero invulnerabili allo Spettro. Qualche altro tipo di exploit potrebbe funzionare.
Vedi questa domanda: https://security.stackexchange.com/questions/176678/is-branch-predictor-flush-instruction-a-complete-spectre-fix e capire le implicazioni della sua risposta. Un codice JavaScript canaglia in esecuzione nel tuo browser può a causa di Spectre misurare in che modo sono andati altri rami nel processo. Anche un'istruzione di svuotamento del predittore di diramazione non risolverà questo problema JavaScript non valido, a meno che il browser non svuoti attivamente il predittore di diramazione prima di eseguire codice non attendibile.
Lo spettro sarà con noi per molto, molto tempo, poiché il predittore di diramazione che utilizza 14 bit come indice non è taggato con i restanti 18 bit di uno spazio di indirizzi a 32 bit, perché richiederebbe quindi 20 bit (contatore di saturazione a 2 bit , Tag a 18 bit) anziché solo 2 bit. Ciò moltiplicherebbe la dimensione del predittore del ramo per dieci! Mi aspetto che i produttori di CPU aggiungano un'istruzione flush predittore di ramo che funzioni anche nello spazio utente senza privilegi speciali e che il kernel lo usi quando si cambia contesto e lo spazio utente lo usa quando si esegue codice JIT non attendibile. Ciò risolverebbe la maggior parte dei problemi di Spettro in pratica, ma in teoria, non tutti.