Zola Bridges із компанії Google для набору компіляторів LLVM патч з реалізацією захисту SESES (Speculative Execution Side Effect Suppression), що допомагає блокувати атаки на механізм спекулятивного виконання CPU Intel, подібні . Метод захисту реалізований на рівні компілятора та заснований на додаванні компілятором при генерації машинного коду інструкцій , які підставляються перед кожною інструкцією читання з пам'яті або запису в пам'ять, а також перед першою інструкцією розгалуження групи інструкцій, що завершує блок.
Інструкція LFENCE очікує фіксації всіх попередніх операцій читання з пам'яті та забороняє попереджувальне виконання наступних після LFENCE інструкцій до завершення фіксації. Застосування LFENCE призводить до суттєвого зниження продуктивності, тому захист пропонується застосовувати у крайніх випадках для особливо критичного коду. Крім повного захисту, патч пропонує три прапори, що дозволяють вибірково відключити певні рівні захисту для зниження негативного впливу на продуктивність.
У проведених тестах застосування захисту SESES для пакету BoringSSL призвело до зниження кількості операцій, що виконуються бібліотекою, в секунду в 14 разів — продуктивність зібраного із захистом варіанта бібліотеки в середньому виявилася всього 7.1% від показників незахищеного варіанту (розкид в залежності від тесту від 4% до 23%). ).
Для порівняння, раніше для GNU Assembler механізм, що здійснює підстановку LFENCE після кожної операції завантаження з пам'яті та перед деякими інструкціями розгалуження, показав зниження продуктивності приблизно в 5 разів (22% коду без захисту). Метод захисту також и інженерами Intel, але результати тестування продуктивності йому поки не опубліковані. Спочатку дослідники, які виявили атаку LVI, прогнозували зниження продуктивності при застосуванні повного захисту у 2-19 разів.
Джерело: opennet.ru
