Предложенная Google программная защита от атаки LVI показала снижение производительности в 14 раз
21 марта 2020 года
Zola Bridges из компании Google предложил для набора компиляторов LLVM патч с реализацией защиты SESES (Speculative Execution Side Effect Suppression), помогающей блокировать атаки на механизм спекулятивного выполнения в CPU Intel, подобные LVI. Метод защиты реализован на уровне компилятора и основан на добавлении компилятором при генерации машинного кода инструкций LFENCE, которые подставляются перед каждой инструкцией чтения из памяти или записи в память, а также перед первой инструкцией ветвления в группе инструкций, завершающей блок.
Инструкция LFENCE ожидает фиксации всех предыдущих операций чтения из памяти и запрещает упреждающее выполнение следующих после LFENCE инструкций, до того как фиксация будет завершена. Применение LFENCE приводит к существенному снижению производительности, поэтому защиту предлагается применять в крайних случаях для особо критичного кода. Помимо полной защиты патч предлагает три флага, позволяющих выборочно отключить определённые уровни защиты для снижения негативного влияния на производительность.
В проведённых тестах применение защиты SESES для пакета BoringSSL привело к снижению числа выполняемых библиотекой операций в секунду в 14 раз - производительность собранного с защитой варианта библиотеки в среднем оказалась всего 7.1% от показателей незащищённого варианта (разброс в зависимости от теста от 4% до 23%).
Для сравнения, предложенный ранее для GNU Assembler механизм, осуществляющий подстановку LFENCE после каждой операции загрузки из памяти и перед некоторыми инструкциями ветвления, показал снижение производительности примерно в 5 раз (22% от кода без защиты). Метод защиты также предложен и реализован инженерами Intel, но результаты тестирования производительности для него пока не опубликованы. Изначально исследователи, выявившие атаку LVI, прогнозировали снижение производительности при применении полной защиты в 2-19 раз.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.