Site icon 8HOST.COM

Как защитить сервер от уязвимостей Meltdown и Spectre?

4 января 2018 года в дизайне современных процессоров были обнаружены многочисленные уязвимости. Используя определенные аспекты оптимизации производительности процессора, эти уязвимости – Meltdown и Spectre – позволяют злоумышленникам извлекать из приложений контент системной и прикладной памяти. Эти атаки работают путем спекулятивного выполнения команд, что заставляет процессор игнорировать права доступа.

Уязвимости Meltdown присвоен идентификатор CVE-2017-5754. Уязвимость Spectre получила идентификаторы CVE-2017-5753 и CVE-2017-5715

Кто подвержен уязвимостям Meltdown и Spectre?

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

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

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

Как устранить уязвимость Meltdown и Spectre?

Полная защита от этого класса уязвимостей, скорее всего, потребует изменений в структуре ЦП.

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

К сожалению, поскольку эти патчи влияют на процедуры оптимизации в процессоре, исправления могут уменьшить производительность сервера. Степень замедления сильно зависит от типа выполняемой работы, больше всего влиянию патчей подвержены процессы ввода-вывода.

Текущий статус патчей уязвимостей

По состоянию на 9 января 2018 года дистрибутивы Linux начали распространять патчи, но ни один дистрибутив пока не получил полного набора патчей.

Вот дистрибутивы, которые получили обновления ядра с частичным смягчением уязвимостей:

Если ваше ядро обновлено до одной из перечисленных выше версий, это может смягчить атаку на ваш сервер.

Операционные системы, которые еще не выпустили ядра с патчами:

Дистрибутив Ubuntu 17.04, поддержка которого прекращается 13 января 2018 года, не получит патчей. Пользователям настоятельно рекомендуется обновить или изменить дистрибутив.

Важно! Настоятельно рекомендуем вам обновить или сменить любой релиз, поддержка которого прекратилась или скоро прекратится. Эти релизы не получают обновлений безопасности для критических уязвимостей, которые могут подвергнуть опасности всю систему и пользователей.

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

Как применить патчи?

Необходимо обновить системное программное обеспечение, как только для вашего дистрибутива появятся патчи. Вы можете обновить дистрибутив, запустив обычный менеждер пакетов – для этого нужно загрузить последнюю версию ядра, а затем перезагрузить сервер, чтобы перейти на исправленный код.

Обновить системное программное обеспечение серверов Ubuntu и Debian можно так:

sudo apt-get update
sudo apt-get dist-upgrade

Чтобы обновить сервер CentOS, введите:

sudo yum update

На серверах Fedora используйте инструмент dnf:

sudo dnf update

Независимо от операционной системы, после применения обновлений перезагрузите сервер, чтобы переключиться на новое ядро:

sudo reboot

После того, как сервер снова подключится к сети, войдите в систему и убедитесь, что используемое ядро входит в указанный выше список. Регулярно проверяйте наличие новых обновлений, чтобы получить дополнительные патчи по мере их выхода.

Дополнительные сведения

Семейство уязвимостей Meltdown и Spectre использует возможности повышения производительности в современных процессорах. Комбинация функций процессора – спекулятивное выполнение, проверка привилегий, исполнение команд с изменением последовательности и кэширование CPU – позволяют злоумышленнику получить право на чтение привилегированной памяти. В результате отдельные программы можно использовать для получения конфиденциальных данных из их памяти или для доступа к привилегированной памяти из ядра или других приложений.

Как работает уязвимость Meltdown?

Уязвимость Meltdown обманывает процессор и дает доступ к памяти, используя недостаток в оптимизации процессора, который называется спекулятивным выполнением. Общий принцип уязвимости таков:

В целом уязвимость Meltdown может быть исправлена.

Как работает уязвимость Spectre?

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

В варианте 1 процессор обрабатывает спекулятивное выполнение операции чтения до проверки границ. Сначала злоумышленник заставляет процессор спекулятивно достигнуть ячейки памяти за пределами допустимых границ. Затем, как в Meltdown, используется дополнительная команда, которая загружает адрес ячейки в кэш на основе значения вне границ. По тому, сколько времени необходимо для получения адреса, можно понять, загружен ли он в кэш. Это, в свою очередь, может показать значение ячейки памяти вне границ.

Вариант 2 сложнее использовать и смягчить.

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

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

Заключение

Spectre и Meltdown – серьезные уязвимости безопасности; весь потенциал их возможного воздействия до сих пор не изучен полностью.

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