Предложенная Google программная защита от атаки LVI показала снижение производительности в 14 раз

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 раз.

Источник: http://www.opennet.ru/opennews/art.shtml?num=52581