Как Отключить Защиту Spectre: В Ядро ​​Linux Добавлена ​​Новая Опция

В ядре Linux появился флаг, отключающий защиту от уязвимости Spectre v4 во всех дочерних процессах, запущенных на сервере.

Более подробная информация о новом параметре — под катом.



Как отключить защиту Spectre: в ядро ​​Linux добавлена ​​новая опция

/Фликр/ Ри Х / CC BY / Фото изменено



Зачем вообще нужно было отключать защиту?

О группе уязвимостей процессоров Spectre впервые стало известно в начале 2018 года, и в последующие месяцы это семейство пополнилось новыми дырами в безопасности.

Уязвимости связаны с работой систем, повышающих производительность процессора — спекулятивное исполнение писать и читать и предсказание перехода - И позволять злоумышленники могут обойти механизмы изоляции памяти в процессорах Intel и AMD. Для закрытия уязвимостей разработчики операционных систем выпускают патчи, но их установка часто приводит к снижению скорости работы серверов.

Например, на машинах с Linux некоторые патчи от Spectre уменьшать производительность на 30–50%.

Системные администраторы были недовольны проблемой, особенно в крупных центрах обработки данных.

Они начали просить разработчиков ядра Linux предоставить возможность выборочного отключения защиты Spectre. Некоторые из обнаруженных уязвимостей носят лишь теоретический характер, а в ряде систем они в принципе не могут причинить вреда.

Например, рендер-фермы и автономные суперкомпьютеры отключены от Интернета, поэтому они не страшно внедрение вредоносного кода.

Команда Linux пошла навстречу пользователям и представила несколько функций, отключающих защиту от уязвимостей Spectre v1, v2 (подробнее о них поговорим позже) и v4. Последний из них был введен в начале февраля для всех текущих версий ядра — это новый флаг PR_SPEC_DISABLE_NOEXEC.

Что и почему функция отключена

Уязвимость Spectre v4 называется Speculative Store Bypass. Он позволяет вредоносному ПО получить доступ к результатам спекулятивного расчета, которые процессор ранее отбрасывал за ненадобностью.

Эта ситуация возникает, когда ЦП по очереди выполняет операции чтения и записи с использованием косвенной адресации.

Чтение происходит чаще, чем запись, и процессор может использовать данные из памяти для определения адреса чтения, не дожидаясь вычисления смещения косвенной адресации.

Если после вычисления смещения обнаруживается пересечение областей памяти записи и чтения (т. е.

чтение было произведено не из той области), то вторая операция выполняется снова и умозрительный результат отбрасывается.

Теоретически получается, что если злоумышленник знает адреса и структуру ячеек памяти, он может извлечь из них данные, например, ключи шифрования.

Патч для Spectre v4 появился в ядре Linux через несколько дней после публикации информации об уязвимости — он стоит по умолчанию выключен функция устранение неоднозначности памяти , что позволяло выполнять команды вне очереди.

Но это замедлился Операции ввода-вывода ЦП на 10–40%.



Как отключить защиту Spectre: в ядро ​​Linux добавлена ​​новая опция

/Фликр/ Ри Х / CC BY-SA А в начале июня 2018 года в релизе ядра 4.17 появилась возможность отключить эту защиту.

Оставалась одна проблема: параметр не передавался от родительского процесса дочерним.

Для них защиту приходилось отключать вручную, что доставляло неудобства системным администраторам.

Но в начале февраля разработчики ядра реализовали флаг PR_SPEC_DISABLE_NOEXEC .

Она дополняет предыдущую функцию и копирует режим работы патча Spectre v4 из родительского процесса в дочерние процессы.

PR_SPEC_DISABLE_NOEXEC является частью prctl и может быть включен при запуске любого нового процесса.



Что говорят эксперты

В списке рассылки для разработчиков ядра Linux о введении нового флага написал Уэйман Лонг из Red Hat. По его словам, защита Spectre v4 оказывает существенное влияние на производительность приложений, выполняющих множество операций записи, таких как базы данных.

PR_SPEC_DISABLE_NOEXEC поможет автоматизировать проверку на отключение патча и ускорить серверы с большим количеством одновременно запущенных процессов.

При этом представители ИТ-сообщества отмечают, что в определенных ситуациях неосторожное обращение с новым флагом может вызвать к неприятным последствиям.

«Стоит отметить, что в некоторых средах отключать защиту от Spectre v4 небезопасно», — отмечает руководитель разработки.

IaaS-провайдер 1cloud.ru Сергей Белкин.

— К ним относятся, например, веб-сервисы, использующие Java и JavaScript. Раскрытие управляемым кодом содержимого управляющего процесса может оказаться фатальным для безопасности приложения».



О других патчах Spectre в ядре Linux

Помимо флага PR_SPEC_DISABLE_NOEXEC, ядро Linux имеет и другие параметры, отключающие защиту Spectre. Первый из них nospectre_v2 .

Функция отключает защиту от Spectre v2, что дает злоумышленникам возможность использовать блок предсказания ветвей чтобы «заставить» процессор спекулятивно выполнить операцию над конкретным модулем памяти.

Чтобы защитить патч отключает функция косвенного предсказания ветвей и запрещает передачу полученной информации между потоками в одном ядре ЦП.

Отключение защиты приводит к увеличению производительности процессора на 30% — столько это работает упал после установки патча от Spectre v2. Новую функцию даже поддержал создатель Linux Линус Торвальдс.

По его словам слова , уязвимость затрагивает только процессоры с функцией СМТ , в данном конкретном случае выгоднее будет его отключить.

Второй параметр - nospectre_v1 — отключает защиту от первого варианта Spectre. Хакеры, используя вредоносное ПО, способны заставить процессор неправильно предсказать результат условного перехода и сбросить результаты спекулятивных вычислений в нужную хакерам область памяти.

Хотя патч от v1 существенно не влияет на производительность (по некоторым данным данные , снижением скорости процессора можно вообще пренебречь), разработчики спросил Добавьте в ядро возможность отключения этой защиты.

Это позволило упростить структуру сетей, изолированных от внешнего доступа.

Сообщество ядра Linux по-прежнему привержено идее свободного выбора, зародившейся заложенный Линус Торвальдс: Пользователи несут ответственность за баланс безопасности и производительности систем Linux. Поэтому стоит ожидать, что в случае обнаружения в ядре новых уязвимостей, подобных Spectre, появится и патч, и возможность его отключения.



Посты из нашего корпоративного блога:
Теги: #linux #разработка Linux #Системное администрирование #Администрирование сервера #Конфигурация Linux #Spectre #1cloud
Вместе с данным постом часто просматривают: