Raspberry Pi è vulnerabile all'exploit Spectre o Meltdown?


58

Sono stati scoperti due nuovi gravi difetti di sicurezza, Spectre e Meltdown .

Raspberry Pi è vulnerabile per Spectre e / o Meltdown?


1
Secondo i ricercatori: Al momento, non è chiaro se anche i processori ARM e AMD siano influenzati da Meltdown.
Janghou

1
C'è un esempio che puoi rubare una password con Javascript in un browser (Chrome / Firefox).
Janghou

4
@ alex2003super: non impazzire. Sebbene la scala dei dispositivi interessati sia sconcertante, le probabilità che tu sia effettivamente interessato da questo problema in qualsiasi modo reale sono piuttosto basse. E anche se non lo fossero, andare fuori di testa non sarebbe d'aiuto. :)
Lightness Races con Monica

1
Sembra che non siano vulnerabili, ecco un recente articolo sull'argomento raspberrypi.org/blog/…
Omar Elabd

5
Potresti trovare questo post interessante: raspberrypi.org/blog/…
pfm,

Risposte:


61

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:

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.


Mi chiedo se le modifiche al kernel Linux richieste su altre architetture verranno trasferite alle versioni di Linux eseguite su Raspberry Pi? Presumibilmente queste modifiche rallenteranno il sistema, quindi forse il RP sarà interessato anche se le patch non sono necessarie.
Bobby Durrett,

4
La patch del kernel rileva su quale processore è in esecuzione e si disabilita automaticamente se non è un modello interessato. Inoltre, i kernel di Raspberry Pi (e la maggior parte degli altri computer a scheda singola) sono creati appositamente per l'hardware disponibile e non c'è motivo per cui i manutentori includano o abilitino la patch in questione.
Perkins,

1
@BobbyDurrett, le modifiche di Meltdown al kernel si trovano nella sezione specifica x86 della base di codice. Le modifiche relative allo Spettro sono ovunque, ma la maggior parte di esse si trova in sezioni del codice specifiche del processore o sono gestite dal compilatore. Alcuni bit, come le modifiche strutturali al codice di rete, possono infiltrarsi nel Pi, ma la maggior parte non lo farà.
Segna il

Grazie per i commenti È interessante pensare a quali parti del codice del kernel Linux sono specifiche del processore. Immagino che con un sistema operativo che gira su molti tipi diversi di CPU devi fare un buon lavoro nel suddividere il codice specifico per ogni processore.
Bobby Durrett,

22

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.


10

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.


" Ora, se due rami condividono lo stesso stato predittore, è possibile misurare la direzione presa da un ramo in un passato molto recente. " Come si fa senza l'esecuzione speculativa?
Peter Taylor,

@PeterTaylor queste CPU ARM hanno un predittore di diramazioni e quindi hanno un'esecuzione speculativa. Quello che manca è l'esecuzione fuori servizio.
juhist

È stato documentato il recupero delle istruzioni speculative, ma non si tratta di un'esecuzione speculativa. È giusto che sia ancora possibile usarlo come oracolo.
Peter Taylor,

Anche il recupero speculativo può essere sufficiente, poiché ci sarà una differenza di latenza minore ma misurabile.
juhist

Linux stava già aggiungendo la randomizzazione dell'indirizzo del kernel; non è possibile prevedere l'indirizzo di una filiale.
MSalter
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.