Опубликована техника скрытия вредоносного кода в анклавах Intel SGX
12 февраля 2019 года
Группа исследователей из Грацского технического университета (Австрия), ранее известная разработкой техники атаки NetSpectre и метода эксплуатация уязвимости в DRAM-памяти через локальную сеть, продемонстрировала (Архивная копия от 22 мая 2019 на Wayback Machine) ( PDF) метод скрытия вредоносного кода при помощи изолированных анклавов Intel SGX и организации контроля за основной системой из выполняемого в анклаве кода, в обход накладываемых анклавом ограничений.
Напомним, что технология SGX ( Software Guard Extensions) появилась в процессорах Intel Core шестого поколения (Skylake) и предлагает серию инструкций, позволяющих выделять приложениям пользовательского уровня закрытые области памяти - анклавы, содержимое которых не может быть прочитано и изменено даже ядром и кодом, выполняемым в режимах ring0, SMM и VMM. Передать управление коду в анклаве невозможно традиционными функциями перехода и манипуляциями с регистрами и стеком - для передачи управления в анклав применяется специально созданная новая инструкция, выполняющая проверку полномочий. При этом помещённый в анклав код может применять классические методы вызова для обращения к функциям внутри анклава и специальную инструкцию для вызова внешних функций. Для защиты от аппаратных атак, таких как подключение к модулю DRAM, применяется шифрование памяти анклава.
Сложилось мнение, что размещение вредоносного кода в анклаве не представляет опасности, так как взаимодействие с внешним миром из анклава производится только через связанное приложение (инициатором вызовов является внешнее приложение), а код в анклаве изолирован от внешней системы, в том числе для него запрещён прямой доступ к внешней памяти и запрещены операции ввода-вывода. Тем не менее, группа исследователей нашла способ обойти ограничения штатного процесса запуска кода в анклаве и проверки по цифровым подписям, предоставляемых SGX-инструментарием Intel. Найденный способ позволяет обойти ограничения, налагаемые контролирующей безопасность прослойкой, такие как доступ к памяти процессов и системным вызовам, и запустить из анклава код под прикрытием хост-процесса с доступом ко всем ресурсам компьютера.
Предложенный метод может применяться для скрытия вредоносной логики в анклаве или размещения в анклаве эксплоитов для атак на уязвимые приложения. Размещённый в анклаве вредоносный код становится недоступен для анализа из операционной системы и антивирусных приложений, но при этом может контролировать работу всей системы. При этом состояние внешнего окружения не вызывает подозрений - в основной ОС выполняются только легитимные программы, которые не содержат явно определённых вредоносных функций.
Для организации работы вредоносной логики в окружении операционной системы применяется метод возвратно-ориентированного программирования (ROP, Return-Oriented Programming). Суть метода в том, что для формирования вредоносной логики используется существующий легитимный код обычных приложений и библиотек. Атакующий оперирует уже имеющимися в библиотеках кусками машинных инструкций, завершающихся инструкцией возврата управления (как правило, это окончания библиотечных функций). Работа вредоносной вставки сводится к построению цепочки вызовов подобных блоков ("гаджетов") для получения нужной функциональности. Используя готовые блоки машинных инструкций (гаджеты) можно организовать достаточно сложные операции, в том числе организовать работу условных операторов и циклов.
Для доступа к памяти процесса из анклава оказалась эффективной техника TAP (TSX-based Address Probing), использующая процессорные инструкции TSX (Transactional Synchronization eXtensions) для определения виртуальных адресов, доступных для текущего процесса. Обнаружение кода в памяти позволяет выявить в нём "гаджеты" и построить цепочку их вызова для обеспечения нужной логики. Для совершения атаки остаётся инициировать передачу управления на построенную цепочку, но для этого требуется определить доступный на запись блок внешней памяти, чтобы сохранить в нём фиктивный кадр стека и разместить связанные с атакой данные (payload).
Для поиска доступных на запись областей применяется расширенный вариант техники TAP, получивший название CLAW (Checking Located Addresses for Writability). Метод основан на формировании транзакции TSX с подстановкой операций записи и её отмены после попытки записи. Доступность на запись определяется на основании возвращённого транзакцией кода возврата. Отмечается, что описанная техника SGX-ROP эффективно обходит такие методы защиты как ASLR, "канареечные" метки в стеке и детекторы ошибок при работе с памятью ( address sanitizer).
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.