Сводная группа исследователей из Университета Бирмингема (Великобритания), Левенского университета (Бельгия) и Грацского технического университета (Австрия) раскрыла данные об атаке Plundervolt (CVE-2019-11157), которая представляет угрозу для процессоров Intel и влияет на целостность данных в анклавах Intel SGX. PoC-эксплоит уже был опубликован на GitHub.
Напомню, что еще с релизом архитектуры Skylake компания Intel представила технологию, получившую название SGX (Software Guard Extensions). SGX – это набор инструкций ЦП, благодаря которым приложения могут создавать защищенные зоны (анклавы) в адресном пространстве приложения, внутри которых под надежной защитой могут храниться различные конфиденциальные данные. Анклавы SGX обычно изолированы на аппаратном уровне (память SGX отделена от остальной памяти ЦП) и на программном уровне (данные SGX зашифрованы). Сами разработчики описывают технологию как своеобразную «обратную песочницу» (inverse sandbox).
Plundervolt строится на злоупотреблении интерфейсом, посредством которого операционная система может контролировать напряжение и частоту процессора, этот же интерфейс используется геймерам при разгоне. Фактически исследователи доказали, что корректируя напряжение и частоту процессора, они могут изменять биты внутри SGX, чтобы приведет к возникновению ошибок, которые могут быть использованы позднее, после того как данные покинут безопасный анклав. В итоге атака Plundervolt может использоваться для восстановления ключей шифрования или привнесения багов в ранее надежное ПО.
Авторы Plundervolt объясняют, что их разработка объединяет в себе идеи ранее известных атак Rowhammer, CLKSCREW и VoltJockey: использует интерфейс управления энергопотреблением ЦП для изменения электрического напряжения и частоты внутри ячеек памяти SGX, что провоцирует изменения данных. Это изменения не нарушают секретности SGX, но они привносят ошибки в операции SGX и обрабатываемые данные. Иными словами, Plundervolt не нарушает защиту SGX, но саботирует результаты.
Таким образом, Plundervolt можно использовать, например, для провоцирования ошибок в алгоритмах и операциях шифрования, выполняемых внутри SGX. В итоге, после того как зашифрованный контент покинет анклав SGX, его можно будет легко взломать: атакующий сможет восстановить ключ шифрования, который исходно использовался для шифрования данных.
Также Plundervolt можно применить для внесения ошибок в ранее защищенные приложения, что позволит злоумышленнику атаковать их после выхода из SGX.
Исследователи признают, что эксперименты с напряжением и частотой процессора могут вызвать проблемы, сбои операционной системы и даже повреждение самого процессора, но отмечают, что, как правило, атаки Plundervolt безопасны и не должны негативно влиять на систему.
Также отмечается, что Plundervolt работает куда быстрее других «процессорных» атак, таких как Spectre, Meltdown, Zombieload, RIDL и так далее. Так как переворот битов удается осуществить очень быстро, то, к примеру, для извлечение ключа AES понадобится всего несколько минут, включая вычисления, необходимые для получения ключа из поврежденного шифротекста.
Но есть и хорошие новости: Plundervolt нельзя использоваться удаленно, то есть атака должна быть запущена приложением, которое уже присутствует на зараженном хосте и обладает правами уровня root или admin. Кроме того, Plundervolt не работает из виртуальных сред, включая виртуальные машины и сервисы облачных вычислений, в силу ограничения доступа для гостевой ОС к интерфейсу, который управляет напряжением и частотой процессора.
Представители Intel сообщили, что для атак Plundervolt уязвимы следующие процессоры:
- Процессоры Intel® 6, 7, 8, 9 и 10 поколений CoreTM
- Процессор Intel® Xeon® E3 v5 и v6
- Семейства процессоров Intel® Xeon® E-2100 и E-2200
Инженеры Intel были предупреждены о Plundervolt еще в июне 2019 года, так что у компании было время на подготовку патчей. Обновления микрокода и BIOS уже опубликованы на сайте производителя. С помощью этих патчей администраторы смогут отключать в BIOS интерфейс управления напряжением и частотой CPU в тех системах, где он не используется и лишь создает ненужные риски.