Es wurden zwei neue schwerwiegende Sicherheitslücken entdeckt, Spectre und Meltdown .
Ist der Raspberry Pi anfällig für Spectre und / oder Meltdown?
Es wurden zwei neue schwerwiegende Sicherheitslücken entdeckt, Spectre und Meltdown .
Ist der Raspberry Pi anfällig für Spectre und / oder Meltdown?
Antworten:
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:
Pi 1 und Null (W) : ARM11
Pi 2 V1 : ARM Cortex-A7
Pi 2 V1.2 und Pi 3 : ARM Cortex-A53
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.
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.
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.