SmashEx, атака на Intel SGX с целью извлечения данных или выполнения кода

Исследователи от Научно-технического университета обороны Народно-освободительной армии, Национального университета Сингапура и Швейцарской высшей технической школы в Цюрихе разработали новый метод атаки на изолированные анклавы Intel SGX (Расширения Software Guard).

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

Вспомним эту технологию SGX появился на процессорах Intel Core XNUMX-го поколения (Skylake) и предлагает серию инструкций что позволяет приложениям пользовательского уровня назначаются частные области памяти, анклавы, содержимое которых не может быть прочитано или изменено даже ядром и кодом, выполняемым в режимах ring0, SMM и VMM.

Невозможно передать управление коду в анклаве с помощью функций традиционный переход и манипуляции с регистрами и стеком; Новые специально созданные операторы EENTER, EEXIT и ERESUME используются для передачи управления анклаву, который выполняет проверки авторизации. В то же время, код, помещенный в анклав, может использовать методы вызова классика для вызова функций в анклаве и специальная инструкция для вызова внешних функций. Шифрование памяти анклава используется для защиты от аппаратных атак, таких как подключение к модулю DRAM.

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

Для нормальной работы технология SGX позволяет прервать выполнение анклава с помощью аппаратных исключений. настраиваемый. Эта особенность позволяет средам выполнения анклава реализовывать обработку исключений или обработка сигналов в анклаве, но это также может вызвать ошибки повторного входа. Атака SmashEx основана на использовании недостатков в SDK из-за того, что ситуация повторного вызова обработчика исключений не обрабатывается должным образом. Важно, чтобы для использования уязвимости злоумышленник должен иметь возможность прервать выполнение анклава, то есть он должен контролировать работу системного окружения.

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

Затем система может вернуть управление анклаву, Но поскольку стек анклава не был сконфигурирован во время прерывания, анклав будет работать со стеком, который находится в системной памяти, который можно использовать для применения методов эксплуатации с возвратным программированием (ROP). Ориентированное программирование.

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

Эксплуатируйте прототипы, готовьтесь к анклавы со средой выполнения на основе SDK Intel SGX (CVE-2021-0186) и Открытый анклав Microsoft (CVE-2021-3376).

В первом случае была продемонстрирована возможность извлечения ключа RSA, используемого на веб-сервере для HTTPS, а во втором случае можно было определить контент, полученный утилитой cURL, работающей внутри анклава.

Уязвимость уже исправлена в программном обеспечении на версиях Intel SGX SDK 2.13 и Open Enclave 0.17.1.

источник: https://jasonyu1996.github.io


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

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

*

*

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