Meltdown & Spectre: Microsofts C/C++-Compiler schĂĽtzt vor bestimmten Angriffen

Microsoft hat seinen C/C++Compiler um eine Option erweitert, mit der er Befehle in den erzeugten Code einbaut, die die ĂĽbersetzte Anwendung vor Angriffen nach Spectre Variante 1 schĂĽtzen soll.

In Pocket speichern vorlesen Druckansicht 105 Kommentare lesen
Meltdown & Spectre: Microsofts C/C++-Compiler schĂĽtzt vor bestimmten Angriffen
Lesezeit: 2 Min.
Von
  • Hajo Schulz

Entwickler, deren Code mit Daten umgeht, die die Grenzen von Vertrauenszonen überschreiten, sollten sich die neueste Version von Microsofts C/C++-Compiler herunterladen, ihre Anwendung mit der Option /d2guardspecload neu übersetzen und ihren Kunden möglichst schnell die neuen Binaries zukommen lassen. Das empfiehlt Microsoft in einem Beitrag im Visual C++ Team Blog.

CPU-SicherheitslĂĽcken Meltdown und Spectre

Der Schalter bewirkt, dass der Compiler den Code nach Passagen durchsucht, die Trittbrettfahrer für Angriffe benutzen könnten, die die kürzlich entdeckte Sicherheitslücke Spectre Variante 1 (Bounds Check Bypass, CVE-2017-5753) ausnutzen. An diesen Stellen fügt der Compiler dann Befehle in den Maschinencode ein, die der CPU verbieten, den folgenden Code spekulativ auszuführen. Eine solche Ausführung von Code "auf Verdacht", die eigentlich dazu dient, die Rechenleistung einer CPU möglichst optimal auszunutzen, ist das Einfallstor für Spectre-1-Angriffe.

Die Auswirkungen der Compiler-Option auf die Ausführungsgeschwindigkeit des erzeugten Codes ist Microsoft zufolge vernachlässigbar. Trotzdem lässt sich die Prüfung für besonders Performance-kritische Code-Passagen mit dem Befehl __declspec(spectre(nomitigation)) abschalten.

Die bislang undokumentierte Option steckt bereits in den C/C++-Compilern von Visual Studio 2017 Version 15.5 und in den Previews zu Version 15.6. Offiziell soll der Schalter eigentlich /Qspectre heiĂźen, diese Option werden aber erst kĂĽnftige Versionen des Compilers verstehen. Der in der kommenden Version 15.6 von Visual Studio 2017 enthaltene Compiler soll /Qspectre ab der Preview 4 unterstĂĽtzen. Die Compiler in Visual Studio 2017 Version 15.5, Visual Studio 2017 "RTW" und Visual Studio 2015 Update 3 sollen mit Patches nachgerĂĽstet werden. (hos)