Weitere CPU-Lücken ret2spec und SpectreRSB entdeckt
Nach Bekanntwerden der Sicherheitslücken in modernen Prozessor-Designs – Meltdown und Spectre – Anfang des Jahres, sowie der bisher nicht vollständig veröffentlichten, von der Presse Spectre-NG genannten Schwachstellen, sind nun weitere Lücken öffentlich geworden, die Ähnlichkeiten zu den bisherigen Schwachstellen aufweisen, im Detail aber dennoch anderes sind: ret2spec oder auch Spectre v5 genannt, sowie SpectreRSB. Entdeckt wurden sie von Giorgi Maisuradze und Christian Rossow vom Center for IT-Security, Privacy and Accountability (CISPA) der Uni Saarland, sowie einem Forscherteam der University of California, Riverside (UCR).
Die komplette Familie der seit Januar ans Licht gekommenen Lücken nutzt das Verhalten moderner Out-of-Order-Prozessoren, Befehle nicht wie bei früheren In-Order-Designs strikt in der Reihenfolge ausführen, wie sie im Code stehen. Stattdessen können OoO-Prozessoren Befehle vorziehen, während sie auf das Ergebnis einer anderen Berechnung warten oder sogar mit dessen Ergebnis spekulieren (Speculative Execution) und derweil mal mit dem Ergebnis weiterrechnen, von dem sie “meinen”, dass es am wahrscheinlichsten ist. War die Spekulation korrekt, hat der Prozessor jede Menge Zeit gespart, weil die Berechnung bereits erledigt wurde, wohingegen ein In-Order-Design hätte warten müssen und erst dann hätte weiterrechnen können. Allerdings sind Out-of-Order-Designs wesentlich komplexer, denn die Prozessoren müssen sich merken, ab welcher Codeposition spekuliert wurde und in welcher Reihenfolge der Code ursprünglich war, um das Puzzle aus geänderter Reihenfolge und spekulierten Ergebnissen am Ende wieder so zusammenzusetzen, dass das Ergebnis stimmt.
Dafür werden verschiedene Puffer verwendet. Normalerweise sind diese Daten von außen nicht abgreifbar. Mit den Spectre-Lücken hingegen kann durch trickreiche Programmierung, sogenannte Seitenkanalattacken, ein Weg gefunden werden, trotzdem an diese Daten heranzukommen. Damit wäre es z.B. möglich, per Javascript via Browser eingeschleusten Code dafür zu verwenden, aus eigentlich nicht zugänglichen Speicherbereichen z.B. Passwörter oder Schlüssel abzugreifen. Dafür existieren auch Beispielcodes, wie wir in den letzten Monaten bereits berichtet und verlinkt hatten. Ein echter Angriff, also eine Ausnutzung der Spectre-Lücken in freier Wildbahn, ist bisher jedoch nicht bekannt geworden.
Das Neue an ret2spec/Spectre v5 und SpectreRSB ist nun, dass nicht die Sprungadressen für den Angriff genutzt werden, sondern die Rücksprungadressen, also praktisch ein umgekehrter Spectre-Angriff. Um die Ausnutzung der Lücke zu erschwerden, werden die selben Maßnahmen empfohlen, die bereits bei Spectre zur Linderung angewandt wurden: die Zeitmessung der Browser soll ungenauer werden, denn für einen erfolgreichen Angriff ist das Timing entscheidend. Daher haben die Browser-Hersteller nach Bekanntwerden der ersten Lücken dieser Art im Januar die von Skripten im Browser nutzbaren Timer-Genauigkeit künstlich reduziert. Als Linderung gegen SpectreRSB wird der Linux-Kernel-Patch RSB refilling vorgeschlagen.
In den PDFs der Forscher wird hauptsächlich auf Intel-Prozessoren eingegangen. Ob die Attacken so auch 1:1 auf andere Implementierungen eines Out-of-Order-Designs – z.B. von AMD oder ARM – anwendbar sind, geht aus der Veröffentlichung bisher nicht hervor. Zumindest haben AMD und ARM die Lücken grundsätzlich bestätigt. Ob sie auch für die eigenen Prozessoren gelten, bleibt aber (noch) offen. So war AMD beispielsweise von Meltdown gar nicht betroffen, obwohl auch Meltdown das Prinzip eines OoO-Prozessors nutzt:
Intel: Intel acknowledged this “very interesting” issue of RSB-based speculative execution and will further review the attack and its implications. Their immediate advice is to resort to mitigations similar to Spectre is to defend against our attack (see Section 6.1); this is, however, subject to change as part of their ongoing RSB investigations that we triggered.
Mozilla Foundation: The Mozilla Foundation likewise acknowledged the issue. They decided to refrain from using compiler-assisted defenses, as they would seemingly require complex changes to JIT-compiled and C++ code. Instead, they aim to remove all (fine-granular) timers from Firefox to destroy caching-based feedback channels. Furthermore, they referred to an upcoming Firefox release that includes time jittering features similar to those described in FuzzyFox [23], which further harden against accurate timers.
Google: Google acknowledged the problem in principle also affects Chrome. Similar to Firefox, they do not aim to address the problem with compiler-assisted solutions. Instead, they also refer to inaccurate timers, but more importantly, focus on a stronger isolation between sites of different origins. Chrome’s so-called Site Isolation prevents attackers from reading across origins (e.g., sites of other domains). However, as discussed in Section 6.1, this does not mitigate the problem that attackers can break ASLR with our attack technique.
AMD / ARM: Although we have not tested our attacks against ARM and AMD architectures, they acknowledged the general problem.
Microsoft: Microsoft has acknowledged the problem and is working on fixes, but has not disclosed technical details yet.
Apple: As of 07/23/2018, we have not heard back from Apple yet.
Redhat: Redhat was thankful for our disclosure and mentioned that the current Spectre defenses (especially flushing RSBs)—without considering RSB-based attacks—might otherwise have been removed by the kernel developers in the near future. In particular, Redhat mentioned that fixing RSB underflows will not fully solve the problems pointed out in our paper.
Links zum Thema:
- Weitere Sicherheitslücke in Intel-CPUs: TLBleed trickst HyperThreading aus ()
- Microsoft testet Microcodeupdates für AMD Bulldozer in Windows 10 Build 17672 ()
- Acht neue Spectre Sicherheitslücken in Intel-Prozessoren entdeckt ()
- BIOS-Updates mit AGESA 1.0.0.2 und Spectre-v2-Schutz ()
- April-Patch nutzt Microcode-Updates für AMD-CPUs mit Spectre-Schutz ()
- Intel legt mit Microcode-Updates vor – AMD beginnt mit Epyc ()
- AMD Epyc verliert kaum Leistung durch Spectre-v2-Fix Retpoline ()
- AMD gibt Programmierleitfaden gegen Spectre heraus ()
- AMD stellt klar: MS-Patch nur gegen Spectre auf AMD-Hardware ()
- Massive Sicherheitslücke in Intel-CPUs (Update: AMD, ARM, Bugfixes) ()