Линус Торвальдс предложил (https://lkml.org/lkml/2018/11/19/37) пересмотреть механизм активации патчей STIBP (Single Thread Indirect Branch Predictors), предлагающих дополнительную защиту от проявления уязвимостей класса Spectre v2. Данные патчи недавно были включены (https://lkml.org/lkml/2018/10/23/469) в находящуюся в разработке ветку 4.20 и бэкпортированы в стабильный выпуск 4.19.2. При применении STIBP в текущем виде пользователи отметили существенное снижение производительности выполнения некоторых приложений при применении технологии одновременной многопоточности (SMT или Hyper-Threading).
Так как падение производительности достигает 50%, по мнению Линуса, применение STIBP лишено смысла, так как проще и надёжнее вообще отключить SMT/Hyper-Threading, что обычно и делают люди, озабоченные безопасностью. Возникает вопрос, нужно ли включать STIBP по умолчанию, когда у тех, кому действительно важна безопасность, SMT/Hyper-Threading уже отключен. Для обычных пользователей потеря производительности в 50% является существенным фактором и возникает сомнение, стоят ли данные потери блокирования теоретической уязвимости.
Линус считает (https://lkml.org/lkml/2018/11/19/69) маловероятным появление практических атак на базе Spectre v2, так как в обычных пользовательских системах основной целью атаки являются браузеры, которые уже добавили защиту на своём уровне (угроза остаётся для изолированных процессов с JIT, для которых может быть выработан метод выборочной защиты). Предлагается по умолчанию применять только методы защит от Spectre, не приводящие к большому падению производительности, а дополнительные методы применять выборочно или в виде опции.
Арьян ван де Вен (Arjan van de Ven) из компании Intel рассказал (https://lkml.org/lkml/2018/11/19/69), что Intel и AMD не рекомендуют применять STIBP по умолчанию, так как данную функциональность можно сравнить с очень тяжёлым молотком, который не используется в повседневной работе, но необходим при определённых обстоятельствах. Предложенный в обновлении микрокода механизм STIBP позволяет через установку специального бита в регистре CR0 управлять отключением кэшей процессора, что следует делать не повсеместно, а только в выборочных особо критичных ситуациях. Тип Чен (Tim Chen) из Intel
предложил (https://lkml.org/lkml/2018/11/19/85) для выборочного блокирования атак на sandbox включать STIBP только при явном запросе через prctl (http://man7.org/linux/man-pages/man2/prctl.2.html) или для процессов запрещающих создание core-дампов памяти (PR_SET_DUMPABLE), таких как sshd.
Что касается падения производительности при применении STIBP-патчей в ядре 4.20, то результат очень сильно зависит от вида нагрузки. Например, тестирование в пакете SpecInt Rate 2006 показывает уменьшение пропускной способности на 21%, а тесты Phoronix демонстрируют (https://www.phoronix.com/scan.php?page=article&item=linux-42...) снижение производительности от 3 до 20%. Инго Молнар (Ingo Molnar), известный разработчик Linux ядра и автор планировщика задач CFS, комментируя (https://lkml.org/lkml/2018/11/19/266) ситуацию, предложил сделать обязательным отражение в списках изменений сведений о тестировании производительности при добавлении любых механизмов обхода проблем.
URL: https://www.theregister.co.uk/2018/11/20/linux_kernel_spectr.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=49636