Suicide
23.03.2020, 23:36
Zola Bridges из компании Google предложил (https://reviews.llvm.org/D75939) для набора компиляторов LLVM патч с реализацией защиты SESES (Speculative Execution Side Effect Suppression), помогающей блокировать атаки на механизм спекулятивного выполнения в CPU Intel, подобные LVI (https://www.opennet.ru/opennews/art.shtml?num=52517). Метод защиты реализован на уровне компилятора и основан на добавлении компилятором при генерации машинного кода инструкций LFENCE (https://www.felixcloutier.com/x86/lfence), которые подставляются перед каждой инструкцией чтения из памяти или записи в память, а также перед первой инструкцией ветвления в группе инструкций, завершающей блок.
Инструкция LFENCE ожидает фиксации всех предыдущих операций чтения из памяти и запрещает упреждающее выполнение следующих после LFENCE инструкций, до того как фиксация будет завершена. Применение LFENCE приводит к существенному снижению производительности, поэтому защиту предлагается применять в крайних случаях для особо критичного кода. Помимо полной защиты патч предлагает три флага, позволяющих выборочно отключить определённые уровни защиты для снижения негативного влияния на производительность.
В проведённых тестах применение защиты SESES для пакета BoringSSL привело к снижению числа выполняемых библиотекой операций в секунду в 14 раз - производительность собранного с защитой варианта библиотеки в среднем оказалась всего 7.1% от показателей незащищённого варианта (разброс в зависимости от теста от 4% до 23%).
Для сравнения, предложенный (http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=b353a8069ba1b7691aa198115e047211c93f09c4) ранее для GNU Assembler механизм, осуществляющий подстановку LFENCE после каждой операции загрузки из памяти и перед некоторыми инструкциями ветвления, показал снижение производительности примерно в 5 раз (22% от кода без защиты). Метод защиты также предложен (https://software.intel.com/security-software-guidance/insights/deep-dive-load-value-injection) и реализован (https://reviews.llvm.org/D75937) инженерами Intel, но результаты тестирования производительности для него пока не опубликованы. Изначально исследователи, выявившие атаку LVI, прогнозировали снижение производительности при применении полной защиты в 2-19 раз.
21.03.2020
https://www.opennet.ru/opennews/art.shtml?num=52581
Инструкция LFENCE ожидает фиксации всех предыдущих операций чтения из памяти и запрещает упреждающее выполнение следующих после LFENCE инструкций, до того как фиксация будет завершена. Применение LFENCE приводит к существенному снижению производительности, поэтому защиту предлагается применять в крайних случаях для особо критичного кода. Помимо полной защиты патч предлагает три флага, позволяющих выборочно отключить определённые уровни защиты для снижения негативного влияния на производительность.
В проведённых тестах применение защиты SESES для пакета BoringSSL привело к снижению числа выполняемых библиотекой операций в секунду в 14 раз - производительность собранного с защитой варианта библиотеки в среднем оказалась всего 7.1% от показателей незащищённого варианта (разброс в зависимости от теста от 4% до 23%).
Для сравнения, предложенный (http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=b353a8069ba1b7691aa198115e047211c93f09c4) ранее для GNU Assembler механизм, осуществляющий подстановку LFENCE после каждой операции загрузки из памяти и перед некоторыми инструкциями ветвления, показал снижение производительности примерно в 5 раз (22% от кода без защиты). Метод защиты также предложен (https://software.intel.com/security-software-guidance/insights/deep-dive-load-value-injection) и реализован (https://reviews.llvm.org/D75937) инженерами Intel, но результаты тестирования производительности для него пока не опубликованы. Изначально исследователи, выявившие атаку LVI, прогнозировали снижение производительности при применении полной защиты в 2-19 раз.
21.03.2020
https://www.opennet.ru/opennews/art.shtml?num=52581