Расширения Intel SGX

Расширения Intel SGX (англ. Intel Software Guard Extensions, SGX) — это набор кодов инструкций для реализации доверенной вычислительной среды, встроенных в некоторые центральные процессоры (CPU) корпорации Intel. SGX позволяет прикладному и системному программному обеспечению определять защищённые приватные области памяти, называемые «анклавами»[1][2]. SGX предназначен для использования в реализации защищённых удалённых вычислений, защищённого веб-сёрфинга и управления цифровыми правами (DRM)[3]. Другими вариантами применения являются сокрытие проприетарных алгоритмов и криптографических ключей[4].

SGX включает в себя шифрование процессором определённой части памяти («анклава»). Данные и код, исходящие из анклава, расшифровываются «на лету» внутри процессора[4], защищая их от изучения или чтения другой программой[4], включая код, выполняющийся с более высоким уровнем привилегий, например, операционной системой и гипервизорами[1][4][2]. Хотя данный механизм позволяет снизить риск многих типов атак, он не защищает от атак через сторонние каналы[5].

В 2021 году Intel приняла решение о прекращении поддержки SGX в процессорах Intel Core 11-го и 12-го поколений, однако дальнейшее развитие SGX продолжается для серверных процессоров Intel Xeon, предназначенных для облачных и корпоративных решений[6][7].

Технические особенности

SGX впервые был представлен в 2015 году в шестом поколении микропроцессоров Intel Core на базе микроархитектуры Skylake.

Поддержка SGX указывается на уровне процессора через структуру расширенных признаков команды CPUID, бит 02 регистра EBX[8], однако её практическая доступность приложениям требует поддержки SGX в BIOS/UEFI и ручного включения; это не отражается прямо в битах CPUID, что усложняет механизм обнаружения поддержки функции в приложениях[9].

Эмуляция SGX была добавлена в экспериментальную версию эмулятора системы QEMU в 2014 году[10]. В 2015 году исследователи из Технологического института Джорджии выпустили открытый симулятор под названием OpenSGX[11].

Примером использования SGX в области безопасности стала демонстрационная программа от wolfSSL, реализующая криптографические алгоритмы с применением SGX[12].

Микроархитектура Intel Goldmont Plus (Gemini Lake) также содержит поддержку Intel SGX[13].

В процессорах Intel Core 11-го поколения (Rocket Lake) и 12-го поколения (Alder Lake) SGX отмечен как «устаревший» и не поддерживается на клиентских платформах[6][14][15]. Это также привело к невозможности воспроизведения дисков Ultra HD Blu-ray на официально лицензированном программном обеспечении, таком как PowerDVD[16][17].

Перечень уязвимостей SGX

Атака Prime+Probe

27 марта 2017 года исследователи из Технического университета Граца (Австрия) разработали прототип атаки, позволяющий извлечь ключи RSA из анклавов SGX, выполняемых на той же системе, в течение пяти минут, используя определённые инструкции процессора вместо точного таймера для эксплуатации сайд-каналов через кэш-память и DRAM[18][19]. Одной из контрмер, опубликованных Даниэлем Груссом с соавторами на симпозиуме USENIX Security в 2017 году, является использование аппаратных транзакций для защиты кэша[20]. Также была предложена компиляторная контрмера DR.SGX[21].

Атаки, подобные Spectre

Группа LSDS из Имперского колледжа Лондона продемонстрировала прототип атаки, в которой уязвимость спекулятивного выполнения Spectre была адаптирована для атаки анклава SGX[22]. Атака Foreshadow, опубликованная в августе 2018 года, использует спекулятивное выполнение и переполнение буфера для обхода защиты SGX[23]. Для данной уязвимости (также известной как L1 Terminal Fault) были опубликованы официальные рекомендации и меры по смягчению 14 августа 2018 года и обновлены 11 мая 2021 года[24].

Атака через анклав

8 февраля 2019 года исследователи из Технического университета Граца опубликовали результаты, показавшие, что в некоторых случаях возможно исполнение вредоносного кода внутри самого анклава[25]. Эксплойт включает просканирование памяти процесса для восстановления полезной нагрузки, после чего осуществляется запуск кода на системе. Исследование отмечает, что из-за конфиденциальности и защиты анклава антивирусное ПО не может обнаружить или удалить подобное вредоносное ПО. Intel заявила, что данная атака выходит за рамки модели угроз SGX и рекомендовала запускать только доверенный код[26].

Атака MicroScope

Среди множества атак через сторонние каналы MicroScope выделяется возможностью злоумышленника с помощью специально подготовленной ОС воспроизводить части кода анклава произвольное количество раз, что позволяет реализовать десятки атак такого рода вне зависимости от структуры программы[27]. В июле 2022 года Intel подготовила патч для Linux (AEX-Notify), позволяющий разработчикам анклавов SGX реагировать на подобные события[28].

Plundervolt

Исследователям безопасности удалось внедрить тайминговые ошибки в выполнение кода в анклаве, что привело к утечке информации. Атака может быть реализована удалённо, но требует привилегированного доступа к управлению электропитанием и частотой процессора[29]. Уведомления о данной уязвимости (CVE-2019-11157) были опубликованы 14 августа 2018 года, далее обновлены 20 марта 2020 года[30].

LVI

Атака Load Value Injection (LVI)[31][32] использует внедрение значений для подмены читаемых из памяти данных, которые используются программой в течение короткого времени до отката («rollback»); в этот момент злоумышленник получает контроль над потоками исполнения и данными. Официальное уведомление и меры по смягчению были выпущены 10 марта 2020 года и обновлены 11 мая 2021 года[33].

SGAxe

Уязвимость SGAxe[34], опубликованная в 2020 году, расширяет атаку спекулятивного выполнения на кэш[35] и позволяет атакующему получить содержимое анклава. Это обеспечивает доступ к внутренним процессорным ключам для удалённой аттестации[36]. Тем самым злоумышленник может подделать идентификацию устройств Intel, подписывая произвольные аттестационные запросы[37]. Соответствующая публикация по уязвимости под кодификатором CVE-2020-0549 появилась 27 января 2020 года и обновлена 11 мая 2021 года[38].

ÆPIC leak

В 2022 году исследователи выявили уязвимость в расширенном программируемом прерывателе (APIC), позволяющую злоумышленнику с root- или admin-доступом получать криптографические ключи, анализируя обмен данными между кэш-памятью L1/L2 и APIC[39]. Это первая известная архитектурная уязвимость в процессорах x86, отличающаяся от таких атак как Spectre и Meltdown, использующих шумные сторонние каналы[40][41]. Уязвимость затрагивает процессоры Intel Core 10-го, 11-го и 12-го поколений и Xeon Ice Lake.

Извлечение приватного ключа

Подпись кода формируется приватным ключом, который хранится только в анклаве и закодирован с помощью «fuse»-элементов (плавких перемычек) на кристалле чипа. Ключ не может быть извлечён, поскольку зашит физически, однако исследователи Марк Ермолов, Максим Горячий и Дмитрий Скляров опровергли безусловную доверенность SGX, опубликовав инструмент на https://github.com/chip-red-pill/glm-ucode#.

SGX и вредоносное ПО

Долгое время велись дискуссии, может ли SGX способствовать созданию труднообнаружимого вредоносного ПО. Исследование Оксфордского университета, опубликованное в октябре 2022 года[42], рассмотрело плюсы и минусы злоупотребления SGX при разработке вредоносного ПО. Авторы заключили, что при наличии кратковременных уязвимостей в экосистеме SGX концепция доверенных вычислений не делает вредоносные программы более опасными по сравнению с традиционными вариантами и не способствует существенному совершенствованию вредоносного ПО.

Примечания

Литература

Ссылки