Zaproponowana przez Google ochrona oprogramowania przed atakami LVI wykazała 14-krotny spadek wydajności

Zola Bridges od Google sugerowane dla zestawu kompilatora LLVM łatka z implementacją zabezpieczenia SESES (Speculative Execution Side Effect Suppression), która pomaga blokować ataki na mechanizm wykonywania spekulatywnego w procesorach Intel, takie jak LVI. Metoda ochrony jest realizowana na poziomie kompilatora i polega na dodawaniu instrukcji przez kompilator podczas generowania kodu maszynowego LFENCJA, które wstawiane są przed każdą instrukcją odczytu lub zapisu pamięci, a także przed pierwszą instrukcją rozgałęzienia w grupie instrukcji kończących blok.

Instrukcja LFENCE czeka na zatwierdzenie wszystkich poprzednich odczytów pamięci i wyłącza wywłaszczanie kolejnych instrukcji po LFENCE do czasu zakończenia zatwierdzenia. Użycie LFENCE prowadzi do znacznego spadku wydajności, dlatego proponuje się stosowanie zabezpieczeń w skrajnych przypadkach dla szczególnie krytycznego kodu. Oprócz pełnej ochrony, łatka oferuje trzy flagi, które pozwalają selektywnie wyłączać określone poziomy ochrony, aby zmniejszyć negatywny wpływ na wydajność.

W przeprowadzonych testach zastosowanie zabezpieczenia SESES dla pakietu BoringSSL doprowadziło do 14-krotnego zmniejszenia liczby operacji wykonywanych przez bibliotekę na sekundę – wydajność chronionej wersji biblioteki wynosiła średnio tylko 7.1% wydajności wersja niezabezpieczona (różnica w zależności od testu od 4% do 23%).

Dla porównania proponowane Poprzednio w przypadku GNU Assemblera mechanizm wykonujący podstawienie LFENCE po każdej operacji ładowania pamięci i przed niektórymi instrukcjami rozgałęzień wykazywał około 5-krotny spadek wydajności (22% kodu bez zabezpieczenia). Metoda ochrony również proponowane и wdrożone przez inżynierów Intela, ale wyniki testów wydajności dla niego nie zostały jeszcze opublikowane. Początkowo badacze, którzy zidentyfikowali atak LVI, przewidywali spadek wydajności od 2 do 19 razy w przypadku zastosowania pełnej ochrony.

Źródło: opennet.ru

Dodaj komentarz