SWAPGS новая уязвимость спекулятивного исполнения

SWAPGS-эксплойт-2

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

Уязвимость позволяет непривилегированному злоумышленнику определять содержимое областей памяти ядра или запущенные виртуальные машины. Проблема подтверждается на процессорах Intel (x86_64) и частично затрагивает процессоры AMD, для которых не отображается основной вектор атаки.

Ранее реализованные методы защиты от уязвимостей Spectre и Meltdown не защищают от атак SWAPGS. с использованием процессоров Intel, но решения для Linux, ChromeOS, Android и Windows уже предложены.

Уязвимость относится к классу Spectre v1. и основан на идее извлечения данных из кэша процессора, которые остаются после предполагаемого выполнения инструкций.

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

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

О SWAPGS

Особенностью новой атаки является использование утечки, возникающей при спекулятивном выполнении инструкции SWAPGS, который используется в операционных системах для замены значения регистра GS, когда управление передается из пространства пользователя в ядро ​​операционной системы (значение GS, используемое в пространстве пользователя, заменяется значением, используемым в операциях ядра).

Ядро Linux в GS хранит указатель per_cpu, который используется для доступа к данным ядра, и указывает на TLS (локальное хранилище потоков) в пользовательском пространстве.

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

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

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

Исследователи предложили два сценария атаки. для которого были подготовлены прототипы эксплойта.

  • Первый сценарий основан на ситуации, когда инструкция SWAPGS не выполняется спекулятивно, хотя используется при фактическом выполнении, а второй сценарий - противоположный, когда инструкция SWAPGS выполняется спекулятивно, хотя на самом деле этого не должно быть.
  • Для каждого сценария есть два рабочих варианта: злоумышленник может определить значение в конкретном адресе в области ядра, а злоумышленник может искать определенное значение в случайных адресах в ядре.

Решение требует установки обновления ядра как в хост-среде, так и в гостевой среде с последующей перезагрузкой системы. Чтобы отключить защиту в Linux, вы можете использовать параметр «nospectre_v1», который также отключает меры по блокированию уязвимости SWAPGS.

Решение доступно как патч для ядра Linux., который уже включен в версии 4.19.65, 5.2.7, 4.14.137, 4.9.188 и 4.4.188, в то время как для различных дистрибутивов Linux соответствующие исправления будут внесены в течение этой и следующей недели.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.