Plundervolt — новый метод атаки на процессоры Intel, затрагивающий технологию SGX
11 декабря 2019 года
Компания Intel выпустила обновление микрокода, устраняющего уязвимость (CVE-2019-14607), позволяющую через манипуляции с механизмом динамического управления напряжением и частотой в CPU инициировать повреждение содержимого ячеек с данными, в том числе в областях, используемых при вычислениях в изолированных анклавах Intel SGX. Атака получила название Plundervolt и потенциально позволяет локальному пользователю добиться повышения своих привилегий в системе, вызвать отказ в обслуживании и получить доступ к закрытым данным.
Атака представляет опасность только в контексте манипуляций с вычислениями в анклавах SGX, так как для проведения требует наличия прав root в системе. В простейшем случае, атакующий может добиться внесения искажений в информацию, обрабатываемую в анклаве, но при более сложных сценариях не исключается возможность воссоздания хранимых в анклаве закрытых ключей, используемых для шифрования с использованием алгоритмов RSA-CRT и AES-NI. Техника также может применяться для генерации ошибок в изначально корректных алгоритмах для провоцирования возникновения уязвимостей при работе с памятью, например, для организации обращения к области за границей выделенного буфера. Прототип кода для совершения атаки опубликован на GitHub
Суть метода заключается в создании условий для возникновения непредвиденных искажений данных при вычислениях в SGX, от которых не защищает применение шифрования и аутентификации памяти в анклаве. Для внесения искажений, оказалось, можно использовать штатные программные интерфейсы для управления частотой и напряжением, обычно применяемые для снижения энергопотребления во время простоя системы и активации максимальной производительности при выполнении интенсивных работ. Характеристики частоты и напряжения охватывают весь чип, в том числе влияют на выполнение вычислений в изолированном анклаве.
Изменяя напряжение, можно добиться возникновения условий, при которых заряда оказывается недостаточно для регенерации ячейки памяти внутри CPU, и её значение меняется. Ключевым отличием от атаки RowHammer является то, что RowHammer позволяет изменить содержимое отдельных битов в памяти DRAM, путём цикличного чтения данных из соседних ячеек, в то время как Plundervolt позволяет добиться изменения битов внутри CPU, когда данные уже загружены из памяти для выполнения вычислений. Подобная особенность позволяет обойти применяемые в SGX механизмы контроля целостности и шифрования данных в памяти, так как значения в памяти остаются корректными, но могут исказиться при операциях с ними до того, как результат будет записан в память.
Если данное изменённое значение используется в процессе умножения в процессе шифрования, то на выходе оказывается некорректный шифротекст. Имея возможность обращаться к обработчику в SGX для шифрования своих данных, атакующий может, вызывая сбои, накопить статистику об изменении шифротекста на выходе и за несколько минут восстановить значение хранящегося в анклаве ключа. Исходный текст на входе и корректный шифротекст на выходе известны, ключ не изменяется, а вывод некорректного шифротекста свидетельствует об искажении какого-то бита на противоположное значение.
Проанализировав накопленные при разных сбоях пары значений корректного и искажённого шифротекстов, при помощи методов дифференциального анализа сбоев (DFA, Differential Fault Analysis) можно
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.