Ist der Raspberry Pi für den Spectre- oder Meltdown-Exploit anfällig?


58

Es wurden zwei neue schwerwiegende Sicherheitslücken entdeckt, Spectre und Meltdown .

Ist der Raspberry Pi anfällig für Spectre und / oder Meltdown?


1
Den Forschern zufolge: Derzeit ist unklar, ob ARM- und AMD-Prozessoren ebenfalls von Meltdown betroffen sind.
Janghou

1
Es gibt ein Beispiel, dass Sie ein Passwort mit Javascript in einem Browser (Chrome / Firefox) stehlen können.
Janghou

4
@ alex2003super: Nicht ausflippen. Obwohl die Anzahl der betroffenen Geräte schwankend ist, ist die Wahrscheinlichkeit, dass Sie tatsächlich von diesem Problem betroffen sind, sehr gering. Und selbst wenn sie es nicht wären, würde ein Ausflippen nicht helfen. :)
Leichtigkeit Rennen mit Monica

1
Es scheint, dass sie nicht anfällig sind, hier ist ein neuer Artikel zum Thema raspberrypi.org/blog/…
Omar Elabd

5
Vielleicht fanden Sie diesen Beitrag interessant: raspberrypi.org/blog/…
pfm

Antworten:


61

Laut ARM selbst sind die in allen Modellen vor dem Pi 4 verwendeten Prozessorkerne nicht anfällig .

Die Mehrheit der Arm-Prozessoren ist von keiner Variation dieses Seitenkanal-Spekulationsmechanismus betroffen. Eine endgültige Liste der kleinen Teilmengen von Prozessoren, die von Arm entwickelt wurden und anfällig sind, finden Sie unten. [siehe Link zur Tabelle]

Die von den älteren Pis verwendeten Prozessorkerne sind:

Keiner der oben genannten Kerne ist für eine bestimmte Version des Angriffs als anfällig eingestuft (sie sind in der Tat überhaupt nicht aufgeführt, da für diese Angriffe keine bekannte Anfälligkeit besteht).

Der Raspberry Pi 4 verwendet den Cortex-A72 , der als anfällig für die Varianten 1, 2, 3a und 4 eingestuft ist. Wie unter Ist der Raspberry Pi 4 anfällig für die Spectre-Exploits? , Raspbian enthält Softwareminderungen für diese Sicherheitsanfälligkeiten, sodass das Risiko einer Ausnutzung gering sein sollte. Andere Betriebssysteme enthalten möglicherweise keine geeigneten Schutzmaßnahmen. ARM gibt an, dass für den Cortex-A72 eine Hardware-Schutzmaßnahme veröffentlicht wurde. Es ist jedoch unklar, ob dies auf den Pi 4 angewendet wurde.

Beachten Sie, dass die Varianten 1 und 2 (CVE-2017-5753 und CVE-2017-5715) als Spectre bezeichnet werden und die Varianten 3 (CVE-2017-5754) und 3a (ein von ARM untersuchter verwandter Angriff) als Meltdown bezeichnet werden . Daher wird angenommen, dass keines der Raspberry Pi-Geräte vor Pi 4 für Spectre oder Meltdown anfällig ist.


Ich frage mich, ob die Änderungen am Linux-Kernel, die für andere Architekturen erforderlich sind, auf die Linux-Versionen übertragen werden, die auf dem Raspberry Pi ausgeführt werden. Angeblich werden diese Änderungen das System verlangsamen, sodass der RP möglicherweise beeinträchtigt wird, obwohl die Patches nicht benötigt werden.
Bobby Durrett

4
Der Kernel-Patch erkennt, auf welchem ​​Prozessor er ausgeführt wird, und deaktiviert sich automatisch, wenn es sich nicht um ein betroffenes Modell handelt. Darüber hinaus sind die Kernel für Raspberry Pi (und die meisten anderen Single-Board-Computer) speziell für die verfügbare Hardware entwickelt worden, und es gibt keinen Grund für die Betreuer, den betreffenden Patch einzuschließen oder zu aktivieren.
Perkins

1
@BobbyDurrett, die Meltdown-Änderungen am Kernel befinden sich im x86-spezifischen Abschnitt der Codebasis. Die Spectre-bezogenen Änderungen sind allgegenwärtig, aber die meisten befinden sich in prozessorspezifischen Abschnitten des Codes oder werden vom Compiler verarbeitet. Einige Bits, z. B. strukturelle Änderungen am Netzwerkcode, können in den Pi gelangen, die meisten jedoch nicht.
Mark

Danke für die Kommentare. Es ist interessant darüber nachzudenken, welche Teile des Linux-Kernel-Codes prozessorspezifisch sind. Ich denke, mit einem Betriebssystem, das auf vielen verschiedenen CPU-Typen läuft, muss man den Code, der für jeden Prozessor spezifisch ist, gut aufteilen.
Bobby Durrett

22

Der Pi (alle Versionen) ist nicht anfällig.

Spectre und Meltdown erfordern eine Ausführung außerhalb der Reihenfolge. Der im frühen Pi 2 verwendete Cortex-A7 und der im späteren Pi 2 und Pi 3 verwendete Cortex-A53 sind streng geordnet. Das im Pi 1 verwendete ARM11 ist teilweise außer Betrieb, jedoch nicht so, dass Spectre oder Meltdown funktionieren.

ARM bestätigt dies : Nur eine sehr begrenzte Anzahl von ARM-Prozessoren verfügt über Hardware, die sie für Spectre anfällig macht. Eine noch begrenzte Anzahl von Prozessoren ist für Meltdown anfällig. Es wird davon ausgegangen, dass alle diese Prozessoren eine Minderung der Bedrohung ermöglichen.


10

Ich würde gerne meine andere Sichtweise dazu anbieten.

In Bezug auf Meltdown handelt es sich bei einigen Prozessoren um eine sehr spezielle Sicherheitsanfälligkeit. Wenn ARM also angibt, dass die CPU in Raspberry Pi nicht anfällig ist, kann sie wahrscheinlich als vertrauenswürdig eingestuft werden.

Spectre ist jedoch eine allgemeinere Sicherheitsanfälligkeit. Bisher wurden nur zwei Varianten demonstriert, aber ich bin mir ziemlich sicher, dass es weitere Varianten gibt. Der Fehler in der CPU besteht darin, dass der Verzweigungsvorhersagestatus bei einem Kontextwechsel nicht gelöscht wird und dieser Verzweigungsvorhersagestatus durch die niederwertigen Bits der Verzweigungsbefehlsadresse indiziert und überhaupt nicht markiert wird. Sie können also auch über Prozessgrenzen hinweg zwei Zweige haben, die denselben Zweigvorhersagestatus haben.

Ich bin sehr zuversichtlich, dass die CPU in allen Raspberry Pi-Modellen praktisch allen anderen CPUs auf dem Markt ähnelt, da der Verzweigungsprädiktor nur ein großes Array von 2-Bit-Sättigungszählern ist (stark genommen, schwach genommen, schwach nicht genommen, stark genommen) nicht vergeben). Der Index für dieses Array sind die niederwertigen Bits der Verzweigungsbefehlsadresse, und es gibt kein Tag, und dieser Prädiktorzustand wird niemals gelöscht.

Wenn nun zwei Zweige denselben Prädiktorstatus haben, können Sie messen, welchen Weg ein bestimmter Zweig in der jüngsten Vergangenheit eingeschlagen hat. Das Informationsleck von Spectre ist also da! Wenn Sie den Browser zuverlässig dazu veranlassen können, eine Code-Verzweigung Ihres Passworts von JavaScript aus auszuführen und zu messen, in welche Richtung die Verzweigungen gegangen sind, können Sie das Passwort tatsächlich extrahieren. Dies ist ein extremes Beispiel. Niemand, der vernünftig ist, würde auf jedes einzelne Bit Ihres Kennworts auf eine Weise verzweigen, die von JavaScript ausgelöst werden kann, aber dies demonstriert das Problem.

Glauben Sie nicht alles, was ARM sagt. ARM bedeutet wahrscheinlich, dass die von Google entwickelten Exploits auf diesen ARM-CPUs nicht funktionieren. Dies bedeutet nicht, dass sie für Spectre unverwundbar wären. Eine andere Art von Exploit könnte funktionieren.

Siehe diese Frage: https://security.stackexchange.com/questions/176678/is-branch-predictor-flush-instruction-a-complete-spectre-fix und verstehe die Auswirkungen seiner Antwort. Ein betrügerischer JavaScript-Code, der in Ihrem Browser ausgeführt wird, kann aufgrund von Spectre messen, auf welche Weise andere Zweige in den Prozess gegangen sind. Sogar ein Befehl zum Löschen eines Verzweigungsprädiktors kann dieses unerwünschte JavaScript-Problem nicht beheben, es sei denn, der Browser löscht den Verzweigungsprädiktor aktiv, bevor er nicht vertrauenswürdigen Code ausführt.

Spectre wird sehr, sehr lange bei uns sein, da der Verzweigungsprädiktor, der 14 Bit als Index verwendet, nicht mit den verbleibenden 18 Bit eines 32-Bit-Adressraums markiert ist, da er dann 20 Bit (2 Bit Sättigungszähler) benötigt , 18-Bit-Tag) statt nur 2 Bit. Dies würde die Größe des Verzweigungsprädiktors mit zehn multiplizieren! Ich erwarte von den CPU-Herstellern, dass sie einen Branch Predictor-Flush-Befehl hinzufügen, der auch im Benutzerbereich ohne spezielle Berechtigungen funktioniert, und den Kernel, der ihn beim Kontextwechsel verwendet, und den Benutzerbereich, der ihn verwendet, wenn nicht vertrauenswürdiger JITed-Code ausgeführt wird. Dies würde die meisten Spectre-Probleme in der Praxis beheben, theoretisch jedoch nicht alle.


" Wenn nun zwei Zweige denselben Prädiktorstatus haben, können Sie messen, welchen Weg ein bestimmter Zweig in der jüngsten Vergangenheit eingeschlagen hat. " Wie geht das ohne spekulative Ausführung?
Peter Taylor

@PeterTaylor Diese ARM-CPUs verfügen über eine Verzweigungsvorhersage und daher über eine spekulative Ausführung. Was sie vermissen, ist eine nicht ordnungsgemäße Ausführung.
juhist

Es ist dokumentiert, dass sie spekulative Anweisungen abrufen, dies ist jedoch keine spekulative Ausführung. Es ist ein fairer Punkt, dass es immer noch möglich sein könnte, es als Orakel zu benutzen.
Peter Taylor

Sogar spekulativer Abruf kann ausreichen, da es einen geringfügigen, aber messbaren Latenzunterschied gibt.
Juhist

Linux fügte bereits eine zufällige Kerneladressierung hinzu. Sie können die Adresse einer Niederlassung nicht vorhersagen.
MSalters
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.