Zola Bridges z firmy Google dla zestawu kompilatorów LLVM łatka z realizacją ochrony SESES (Suppression Execution Side Effect Suppression), pomagająca blokować ataki na mechanizm spekulatywnego wykonania w CPU Intel, podobne do . Metoda ochrony jest realizowana na poziomie kompilatora i opiera się na dodawaniu przez kompilator przy generowaniu kodu maszynowego instrukcji , które są wstawiane przed każdą instrukcją odczytu z pamięci lub zapisu do pamięci, a także przed pierwszą instrukcją rozgałęzienia w grupie instrukcji kończącej blok.
Instrukcja LFENCE czeka na zakończenie wszystkich poprzednich operacji odczytu z pamięci i zakazuje spekulatywnego wykonania następujących po LFENCE instrukcji, do momentu zakończenia tego procesu. Stosowanie LFENCE prowadzi do znacznego spadku wydajności, dlatego ochronę zaleca się stosować w skrajnych przypadkach dla wyjątkowo krytycznego kodu. Oprócz pełnej ochrony łatka oferuje trzy flagi, które pozwalają selektywnie wyłączyć określone poziomy ochrony w celu zredukowania negatywnego wpływu na wydajność.
W przeprowadzonych testach zastosowanie ochrony SESES dla pakietu BoringSSL spowodowało spadek liczby operacji wykonywanych przez bibliotekę w sekundę o 14 razy – wydajność skompilowanej z ochroną wersji biblioteki wyniosła średnio zaledwie 7,1% wskaźników wersji niechronionej (zakres w zależności od testu od 4% do 23%).
Dla porównania, wcześniej dla GNU Assembler mechanizm, który realizował wstawianie LFENCE po każdej operacji ładowania z pamięci oraz przed niektórymi instrukcjami rozgałęzienia, pokazał spadek wydajności o około 5 razy (22% kodu bez ochrony). Metoda ochrony została również i opracowana przez inżynierów Intela, jednak wyniki testów wydajnościowych dla niej nie zostały jeszcze opublikowane. Początkowo badacze, którzy zidentyfikowali atak LVI, prognozowali spadek wydajności przy zastosowaniu pełnej ochrony od 2 do 19 razy.
Źródło: opennet.ru
