PDA

Просмотр полной версии : Plundervolt - новый метод атаки на процессоры Intel, затрагивающий технологию SGX


Suicide
11.12.2019, 20:36
Компания Intel выпустила (https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00317.html) обновление микрокода, устраняющего уязвимость (https://plundervolt.com/) (CVE-2019-14607), позволяющую (https://plundervolt.com/doc/plundervolt.pdf) через манипуляции с механизмом динамического управления напряжением и частотой в CPU инициировать повреждение содержимого ячеек с данными, в том числе в областях, используемых при вычислениях в изолированных анклавах Intel SGX. Атака получила название Plundervolt, и потенциально позволяет локальному пользователю добиться повышения своих привилегий в системе, вызвать отказ в обслуживании и получить доступ к закрытым данным.

Атака представляет опасность только в контексте манипуляций с вычислениями в анклавах SGX, так как для проведения требует наличия прав root в системе. В простейшем случае, атакующий может добиться внесения искажений в информацию, обрабатываемую в анклаве, но при более сложных сценариях не исключается возможность воссоздания хранимых в анклаве закрытых ключей, используемых для шифрования с использованием алгоритмов RSA-CRT и AES-NI. Техника также может применяться для генерации ошибок в изначально корректных алгоритмах для провоцирования возникновения уязвимостей при работе с памятью, например, для организации обращения к области за границей выделенного буфера. Прототип кода для совершения атаки опубликован (https://github.com/KitMurdock/plundervolt) на GitHub

Суть метода в создании условий для возникновения непредвиденных искажений данных при вычислениях в SGX, от которых не защищает применение шифрования и аутентификации памяти в анклаве. Для внесения искажений оказалось можно использовать штатные программные интерфейсы для управления частотой и напряжением, обычно применяемые для снижения энергопотребления во время простоя системы и активации максимальной производительности при выполнении интенсивных работ. Характеристики частоты и напряжения охватывают весь чип, в том числе влияют на выполнение вычислений в изолированном анклаве.

Изменяя напряжение, можно добиться возникновения условий, при которых заряда оказывается недостаточно для регенерации ячейки памяти внутри CPU, и её значение меняется. Ключевым отличием от атаки RowHammer (https://www.opennet.ru/opennews/art.shtml?num=41340) является то, что RowHammer позволяет изменить содержимое отдельных битов в памяти DRAM, путём цикличного чтения данных из соседних ячеек, в то время как Plundervolt позволяет добиться изменения битов внутри CPU, когда данные уже загружены из памяти для выполнения вычислений. Подобная особенность позволяет обойти применяемые в SGX механизмы контроля целостности и шифрования данных в памяти, так как значения в памяти остаются корректными, но могут исказиться при операциях с ними, до того как результат будет записан в память.

Если данное изменённое значение используется в процессе умножения в процессе шифрования, то на выходе отказывается некорректный шифротекст. Имея возможность обращаться к обработчику в SGX для шифрования своих данных, атакующий может вызывая сбои накопить статистику об изменении шифротекста на выходе и за несколько минут восстановить значение хранящегося в анклаве ключа. Исходный текст на входе и корректный шифротекст на выходе известны, ключ не изменяется, а вывод некорректного шифротекста свидетельствует об искажении какого-то бита на противоположное значение.

Проанализировав накопленные при разных сбоях пары значений корректного и искажённого шифротекстов, при помощи методов дифференциального анализа сбоев (DFA, Differential Fault Analysis (http://eprint.iacr.org/2009/575)) можно предугадать (https://github.com/KitMurdock/plundervolt/tree/master/sgx-aes/dfa-aes-master) вероятные ключи, применяемые для симметричного шифрования AES, а затем проанализировав пересечения ключей в разных наборах определить искомый ключ.

Проблеме подвержены различные модели процессоров Intel, включая CPU Intel Core с 6 по 10 поколение, а также пятое и шестое поколения Xeon E3, первое и второе поколения Intel Xeon Scalable, Xeon D, Xeon W и Xeon E.

Напомним, что технология SGX (Software Guard Extensions (https://en.wikipedia.org/wiki/Software_Guard_Extensions)) появилась в процессорах Intel Core шестого поколения (Skylake) и предлагает (https://www.opennet.ru/opennews/art.shtml?num=44667) серию инструкций, позволяющих выделять приложениям пользовательского уровня закрытые области памяти - анклавы, содержимое которых не может быть прочитано и изменено даже ядром и кодом, выполняемым в режимах ring0, SMM и VMM. Передать управление коду в анклаве невозможно традиционными функциями перехода и манипуляциями с регистрами и стеком - для передачи управления в анклав применяется специально созданная новая инструкция, выполняющая проверку полномочий. При этом помещённый в анклав код может применять классические методы вызова для обращения к функциям внутри анклава и специальную инструкцию для вызова внешних функций. Для защиты от аппаратных атак, таких как подключение к модулю DRAM, применяется шифрование памяти анклава.

11.12.2019

http://www.opennet.ru/opennews/art.shtml?num=52011​