Новости

Исследователи Spectre, Meltdown обнародуют еще 7 спекулятивных атак

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

Peter Bright. 14 ноября 2018 1:50 UTC

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

Исследовательская группа, в том числе многие из оригинальных исследователей из Meltdown, Spectre и связанных с ними атак Foreshadow и BranchScope, опубликовала новый документ, раскрывающий еще больше атак в семействах Spectre и Meltdown. Результат? Семь новых возможных атак. Некоторые из них смягчаются известными методами смягчения, но другие. нет. Это означает, что для защиты уязвимых систем требуется дальнейшая работа.

Предыдущие исследования этих атак были несколько случайными по своему характеру: изучение особых особенностей, представляющих интерес для обеспечения, например, атаки Spectre, которая может выполняться удаленно по сети или атака Meltdown-esque, чтобы проникнуть в анклавы SGX. Новое исследование более систематично, рассматривая лежащие в основе механизмы как Meltdown, так и Spectre, и работает через все различные способы, при которых спекулятивное выполнение может быть неправильно направлено.

Распад, в общем

Рассмотрим, например, атаку Meltdown (используемую для утечки данных ядра в программы пользовательского режима для большинства Intel и некоторых чипов ARM, в том числе из Apple) и атаки уровня терминала 1 (L1TF) (используется для взлома в анклав SGX ). На высоком уровне обе эти атаки работают аналогичным образом: делается попытка получить доступ к памяти, доступ к которой запрещен. Спекулятивно, однако процессор может получить доступ к запрещенной памяти и выполнить спекулятивное выполнение на основе значений, хранящихся в памяти. Процессор отмечает, что доступ запрещен и откатывается от спекулятивного исполнения, но спекуляция вызвала небольшие помехи для кеша процессора. Эти нарушения могут быть обнаружены и использованы для чтения данных, которые должны быть недоступны.

В первоначальной атаке Meltdown доступ запрещен, потому что пользовательская программа пытается получить доступ к памяти «супервизор» (то есть к ядру). В L1TF доступ запрещен, потому что код извне анклава SGX пытается получить доступ к данным в анклаве SGX. В обоих случаях процессор правильно блокирует запрещенный доступ; для этого требуется всего несколько циклов, что позволяет выполнить спекулятивное выполнение перед проверкой разрешений.

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

В новом исследовании эти варианты Meltdown соединяются с новым, используя Intel «Защитные ключи для пользовательского пространства» (PKU). Клавиши защиты, введенные с помощью Skylake, позволяют приложению отмечать фрагменты памяти четырехбитным ключом. Приложения устанавливают процессор для использования определенного ключа защиты, и за это время попытки доступа к памяти, помеченной другим ключом, вызовут ошибку. Опять же, может возникнуть несколько наносекунд спекуляции между получением недопустимого доступа (доступ к памяти с несогласованным ключом защиты), а процессор сообщает об ошибке, что позволяет защитить информацию от утечки.

Аналогичным образом, еще одним расширением Intel является Memory Protection eXtensions (MPX). MPX предназначен для того, чтобы позволить процессору обнаруживать и ловушку определенных попыток доступа к внешней памяти. История здесь такая же, как и другие проблемы с Meltdown: после попытки выполнить доступ за пределы границ, до появления ошибки «вне границ» выполняется несколько наносекунд спекуляции, что еще раз позволяет утечка информации , MPX доступен только для 64-разрядных x64-программ. Тридцать два бита x86 имеют более простую форму защиты границ, как на чипах Intel, так и на AMD; эта более простая защита границ также подвержена утечке информации в стиле Meltdown, и, что необычно, процессоры AMD восприимчивы к этой атаке.

В каждом случае процессор генерирует некоторую ошибку (классифицированную Intel как «ошибка»). Эта ошибка создает небольшое окно спекуляции между действием, которое генерирует ошибку и фактическое сообщение об ошибке.

Исследователи рассмотрели дальнейшие условия сбоя, но обнаружили, что многие из них не создают уязвимость, подобную Meltdown. Например, деление на ноль порождает ошибку, но спекулятивное выполнение только когда-либо видит нулевой результат, не предоставляя возможности для утечки информации. Чипы Intel могут генерировать исключения выравнивания при попытках доступа к адресам памяти, которые не являются целыми кратными 16, 32 или 64; они также не допускают атаки Meltdown. Ошибки, вызванные нарушениями сегментации памяти и создаваемые при попытке выполнить недействительные инструкции, также не допускают атаки Meltdown.

Системный призрак

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

Атаки Spectre были разбиты на несколько категорий. В процессоре имеется несколько разных предикторов: прогнозы производятся на основе адреса самой ветви и целей ветви, например; процессор также предсказывает, когда выполнение будет продолжаться при возврате из одной функции в другую с помощью специального предиктора.

Присвоение предсказателя ветвей может быть сделано несколькими способами: предиктор может быть обучен ошибочному предсказанию точной ветви, на которую нападают, или с веткой, которая связана с другим, но другим адресом памяти. Spectre также открывает возможность обучения прогнозированию в одном процессе, который используется для форсирования неверных предсказаний в другом адресном пространстве или в ядре. Misprediction также может возникать, когда значение в памяти перезаписывается без использования механизма спекулятивного исполнения «замечать» и выполнять на основе старого значения.

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

В частности, было показано, что один из вариантов исходных атак Spectre имеет большую применимость к новейшим процессорам AMD, чем ранее известно; Также было показано, что атака эффективна против процессоров ARM.

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

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

В заявлении Intel говорит: Уязвимости, задокументированные в этом документе, могут быть полностью устранены путем применения существующих методов смягчения для Spectre и Meltdown, в том числе ранее описанных здесь, а также других производителей микросхем. Защита клиентов по-прежнему является для нас важнейшим приоритетом, и мы благодарны командам Graz University of Technology, imec-DistriNet, KU Leuven, Колледж Уильяма и Мэри для их текущих исследований.