Ученые из университетов Китая, Сингапура и Швейцарии рассказали о новой атаке SmashEx, которая помогает скомпрометировать анклавы Intel SGX и похитить конфиденциальные данные из самой безопасной области процессора Intel.
Напомню, что еще с релизом архитектуры Skylake компания Intel представила технологию, получившую название SGX (Software Guard Extensions). SGX – это набор инструкций ЦП, благодаря которым приложения могут создавать защищенные зоны (анклавы) в адресном пространстве приложения, внутри которых, под надежной защитой, могут храниться различные конфиденциальные данные. Анклавы SGX обычно изолированы на аппаратном уровне (память SGX отделена от остальной памяти ЦП) и на программном уровне (данные SGX зашифрованы). Сами разработчики описывают эту технологию как своеобразную «обратную песочницу» (inverse sandbox).
Атака SmashEx позволяет малвари, работающей на той же ОС, злоупотреблять функцией, которая позволяет ЦП приостанавливать операции SGX для входа в анклав и получения данных. Вот как описывают это сами исследователи:
«Ради нормального функционирования конструкция SGX позволяет ОС в любой момент прерывать работу анклава с помощью настраиваемых аппаратных исключений. Эта функция позволяет runtime'ам анклава (например, Intel SGX SDK и Microsoft Open Enclave) поддерживать in-enclave исключения и обработку сигналов, но также открывает анклавы для багов типа re-entrancy.
SmashEx — это атака, которая использует SDK анклавов, которые не обрабатывают re-entrancy в своей исключительной безопасности, что является сложным для SGX. Proof-of-concept эксплоиты SmashEx позволяют повторно использовать код (например, ROP) и добиться раскрытия конфиденциальных данных в анклавах, построенных с использованием уязвимых runtime’ов».
Проведенные специалистами тесты позволили успешно извлечь ключ шифрования RSA из анклава Intel SGX, используемого сервером для шифрования HTTPS-трафика. Также они сумели извлечь содержимое, обрабатываемое приложением cURL в Microsoft Open Enclave, используемом серверами Azure.
Детали атаки SmashEx были обнародованы только на этой неделе, после того как Intel и Microsoft выпустили исправления для решения этой проблемы в своих SDK, а именно в Intel SGX SDK (CVE-2021-0186) и Open Enclave SDK (CVE-2021-33767). При этом исследовательская группа заявляет, что существует множество других SDK, для которых атака SmashEx тоже представляет опасность, и их разработчики теперь тоже должны выпустить собственные патчи. Это относится к SGX SDK от Google, Apache и Arm.
Runtime | Производитель | Уязвимые поколения SGX |
Intel SGX SDK | Intel | SGX2 |
Open Enclave | Microsoft | SGX1 and SGX2 |
Google Asylo | SGX2 | |
EdgelessRT | Edgeless Systems | SGX1 and SGX2 |
Rust SGX SDK | Apache | SGX2 |
Teaclave | Apache | SGX2 |
SGX-LKL | Imperial College London | SGX1 and SGX2 |
CoSMIX | Technion | SGX2 |
Veracruz | ARM | SGX2 |