Zola Bridges von Google für die LLVM-Compiler-Suite ein Patch zur Implementierung des SESES (Speculative Execution Side Effect Suppression), der dabei hilft, Angriffe auf den Mechanismus der spekulativen Ausführung in Intel-CPUs zu blockieren, ähnlich wie . Die Schutzmethode wird auf Compiler-Ebene implementiert und basiert darauf, dass der Compiler bei der Generierung des Machine Codes die Anweisung , die vor jeder Speicherlese- oder -schreiboperation sowie vor der ersten Sprunganweisung in einer Gruppe von Anweisungen, die einen Block abschließt, eingefügt wird.
Die LFENCE-Anweisung wartet, bis alle vorhergehenden Speicheroperationen abgeschlossen sind, und verhindert die spekulative Ausführung der Anweisungen nach LFENCE, bis die Feststellung abgeschlossen ist. Der Einsatz von LFENCE führt zu einem erheblichen Leistungsabfall, weshalb der Schutz nur in Ausnahmefällen für besonders kritischen Code empfohlen wird. Neben dem vollständigen Schutz bietet der Patch drei Flags, um bestimmte Schutzebenen selektiv zu deaktivieren, um die negativen Auswirkungen auf die Leistung zu verringern.
In durchgeführten Tests führte der Einsatz des SESES-Schutzes für das BoringSSL-Paket zu einem Rückgang der von der Bibliothek pro Sekunde ausgeführten Operationen um das 14-Fache – die Leistung der geschützten Version der Bibliothek betrug im Durchschnitt nur 7,1% der Werte der ungeschützten Version (mit einer Streuung je nach Test von 4% bis 23%).
Zum Vergleich, zuvor für den GNU Assembler hat der Mechanismus, der LFENCE nach jeder Speicherladeoperation und vor bestimmten Sprunganweisungen einfügt, einen Leistungsabfall von ungefähr dem 5-fachen gezeigt (22% des Codes ohne Schutz). Die Schutzmethode wurde ebenfalls und von Ingenieuren von Intel, aber die Testergebnisse zur Leistung sind bisher noch nicht veröffentlicht worden. Ursprünglich hatten die Forscher, die den LVI-Angriff identifizierten, einen Leistungsabfall bei vollständigem Schutz von 2-19 mal prognostiziert.
Quelle: opennet.ru
