alexzir
18.12.2019, 08:57
Исследователи из трёх европейских университетов раскрыли детали (https://www.plundervolt.com/) первой известной атаки на SGX (https://en.wikipedia.org/wiki/Software_Guard_Extensions).
Набор инструкций SGX (Software Guard eXtensions) позволяет приложению создавать анклавы — области в виртуальном адресном пространстве, защищённые от чтения и записи извне этой области другими процессами, включая ядро операционной системы. Анклавы изолированы на аппаратном и программном уровне: эта память физически отделена от остальной памяти процессора и зашифрована.
Атака Plundervolt (https://www.plundervolt.com/) (CVE-2019-11157) использует интерфейс ОС для управления напряжением и частотой процессора Intel — тот же интерфейс, который используется для разгона CPU при оверклокинге. Изменяя напряжение CPU, она за несколько минут извлекает данные из анклава, в том числе ключи шифрования.
Код демонстрационного эксплоита опубликован на GitHub (https://github.com/KitMurdock/plundervolt). Уязвимые процессоры:
Intel Core 6, 7, 8, 9 и 10 поколений
Intel Xeon E3 v5 и v6
Intel Xeon E-2100 и E-2200
Исследователям удалось объединить концепции двух известных атак:
Rowhammer (https://en.wikipedia.org/wiki/Row_hammer): изменение битового значения ячейки памяти DRAM с 1 на 0 и наоборот путём записи данных в соседние ячейки.
CLKSCREW (https://www.bleepingcomputer.com/news/security/clkscrew-attack-can-hack-modern-chipsets-via-their-power-management-features/) манипуляции энергопитанием процессора Dynamic Voltage and Frequency Scaling (DVFS).
Plundervolt сочетает в себе принципы, лежащие в основе этих двух атак. Через DVFS она изменяет напряжение в ячейках памяти SGX, что приводит к нежелательным изменениям данных в анклаве.
Работа основана на проведённом ранее реверс-инжиниринге процессоров Intel. Тот выявил, какие регистры MSR (ModelSpecific Register) отвечают за динамическое изменение напряжения CPU после программной команды. Такие регистры есть во всех процессорах Intel.
Как выяснилось, в уязвимых процессорах происходит предсказуемая замена бит. Например, в процессоре Core i3-7100U при понижении напряжения на 118 мВ операция 0x80D36 * 0x21 = 0x109b3f6 даёт предсказуемо сбойное значение 0xffffffffe109b417 на частоте 2 ГГц.
Эти небольшие изменения не нарушают секретность SGX. Вместо этого они вводят ошибки в операции SGX по обработке данных. Другими словами, Plundervolt не взламывает SGX, а изменяет результат: «Понижение напряжения индуцирует изменение битов в инструкциях процессора, таких как умножение или раунды шифрования AES (AES-NI)», — объясняет Дэвид Освальд, академик из Бирмингемского университета, один из авторов научной работы. — Поскольку SGX шифрует данные только при чтении и записи в память (но не внутри процессора), то защита памяти SGX не предотвращает эти ошибки (так как неисправные значения сами записываются в память)».
https://habrastorage.org/webt/es/r6/m6/esr6m6trtferagyapadvfrn-u7a.png
Исследователи продемонстрировали эффективность атаки, введя ошибки в реализации Intel RSA-CRT и AES-NI, работающие в анклаве SGX. Им удалось восстановить полные криптографические ключи с незначительными вычислительными усилиями.
Plundervolt позволяет увидеть шифрованные сообщения на выходе из анклава SGX, а затем восстановить секретный ключ, который изначально использовался для шифрования данных.
https://habrastorage.org/webt/l6/jd/g8/l6jdg8hcdr6fciv9wpqw1ovyofo.png
https://habrastorage.org/webt/dg/xm/2o/dgxm2o26yosp0utmrtadaucin-i.png
Исследователи продемонстрировали эффективность атаки, введя ошибки в реализации Intel RSA-CRT и AES-NI, работающие в анклаве SGX. Им удалось восстановить полные криптографические ключи с незначительными вычислительными усилиями.
Код для проверки атаки (репозиторий на GitHub) (https://github.com/KitMurdock/plundervolt)
Описанная атака не требует радикального повышения напряжения, так что не угрожает физической безопасности чипа. На самом деле этой свойство Plundervolt делает атаку ещё опаснее. Ещё одно опасное свойство — она гораздо быстрее, чем большинство других атак на процессоры Intel, таких как Spectre, Meltdown, Zombieload, RIDL и прочие. В таблице указано количество итераций до появления ошибки умножения (0xAE0000 * 0x18) на разных значениях пониженного напряжения в I3-7100U на 2 ГГц:
https://habrastorage.org/webt/nw/yy/t7/nwyyt7ars5r2hhmgjvbuvs-cbii.png
Изменение битов в умножениях AES осуществляются очень быстро. Например, извлечение ключа AES занимает несколько минут, включая вычисление, необходимое для получения ключа из неисправного шифротекста, говорит Освальд.
К сожалению для злоумышленников, атаку Plundervolt трудно провести удалённо. Нельзя заманить пользователя на веб-сайт и запустить JavaScript. Напряжение CPU таким методом не изменяется. Для работы Plundervolt требует наличия на компьютере жертвы приложения на с правами root или admin. Это требует социальной инженерии и применения дополнительных эксплоитов.
Plundervolt не работает в виртуализированных средах, таких как виртуальные машины и службы облачных вычислений, где у гостевой ОС нет доступа к интерфейсу, управляющему напряжением процессора.
Тем не менее, Plundervolt является серьёзной проблемой. Исследовательская группа уведомила Intel об уязвимости в июне 2019 года, и с тех пор производитель CPU работал над патчами. Обновления микрокода и BIOS выпущены 10 декабря 2019 года в рамках рекомендаций по безопасности INTEL-SA-00289 (https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00289.html). После установки патчей в BIOS можно отключить интерфейс по управлению напряжением и тактовой частотой.
Техническое описание атаки см. в научной статье (pdf) (https://plundervolt.com/doc/plundervolt.pdf), которая выйдет в сборнике Proceedings of the 41st IEEE Symposium on Security and Privacy (https://www.ieee-security.org/TC/SP2020/).
https://habr.com
Источник (https://virusnet.info/processory-intel-vypljovyvajut-privatnyj-kljuch-esli-poigrat-s-naprjazheniem/)
Набор инструкций SGX (Software Guard eXtensions) позволяет приложению создавать анклавы — области в виртуальном адресном пространстве, защищённые от чтения и записи извне этой области другими процессами, включая ядро операционной системы. Анклавы изолированы на аппаратном и программном уровне: эта память физически отделена от остальной памяти процессора и зашифрована.
Атака Plundervolt (https://www.plundervolt.com/) (CVE-2019-11157) использует интерфейс ОС для управления напряжением и частотой процессора Intel — тот же интерфейс, который используется для разгона CPU при оверклокинге. Изменяя напряжение CPU, она за несколько минут извлекает данные из анклава, в том числе ключи шифрования.
Код демонстрационного эксплоита опубликован на GitHub (https://github.com/KitMurdock/plundervolt). Уязвимые процессоры:
Intel Core 6, 7, 8, 9 и 10 поколений
Intel Xeon E3 v5 и v6
Intel Xeon E-2100 и E-2200
Исследователям удалось объединить концепции двух известных атак:
Rowhammer (https://en.wikipedia.org/wiki/Row_hammer): изменение битового значения ячейки памяти DRAM с 1 на 0 и наоборот путём записи данных в соседние ячейки.
CLKSCREW (https://www.bleepingcomputer.com/news/security/clkscrew-attack-can-hack-modern-chipsets-via-their-power-management-features/) манипуляции энергопитанием процессора Dynamic Voltage and Frequency Scaling (DVFS).
Plundervolt сочетает в себе принципы, лежащие в основе этих двух атак. Через DVFS она изменяет напряжение в ячейках памяти SGX, что приводит к нежелательным изменениям данных в анклаве.
Работа основана на проведённом ранее реверс-инжиниринге процессоров Intel. Тот выявил, какие регистры MSR (ModelSpecific Register) отвечают за динамическое изменение напряжения CPU после программной команды. Такие регистры есть во всех процессорах Intel.
Как выяснилось, в уязвимых процессорах происходит предсказуемая замена бит. Например, в процессоре Core i3-7100U при понижении напряжения на 118 мВ операция 0x80D36 * 0x21 = 0x109b3f6 даёт предсказуемо сбойное значение 0xffffffffe109b417 на частоте 2 ГГц.
Эти небольшие изменения не нарушают секретность SGX. Вместо этого они вводят ошибки в операции SGX по обработке данных. Другими словами, Plundervolt не взламывает SGX, а изменяет результат: «Понижение напряжения индуцирует изменение битов в инструкциях процессора, таких как умножение или раунды шифрования AES (AES-NI)», — объясняет Дэвид Освальд, академик из Бирмингемского университета, один из авторов научной работы. — Поскольку SGX шифрует данные только при чтении и записи в память (но не внутри процессора), то защита памяти SGX не предотвращает эти ошибки (так как неисправные значения сами записываются в память)».
https://habrastorage.org/webt/es/r6/m6/esr6m6trtferagyapadvfrn-u7a.png
Исследователи продемонстрировали эффективность атаки, введя ошибки в реализации Intel RSA-CRT и AES-NI, работающие в анклаве SGX. Им удалось восстановить полные криптографические ключи с незначительными вычислительными усилиями.
Plundervolt позволяет увидеть шифрованные сообщения на выходе из анклава SGX, а затем восстановить секретный ключ, который изначально использовался для шифрования данных.
https://habrastorage.org/webt/l6/jd/g8/l6jdg8hcdr6fciv9wpqw1ovyofo.png
https://habrastorage.org/webt/dg/xm/2o/dgxm2o26yosp0utmrtadaucin-i.png
Исследователи продемонстрировали эффективность атаки, введя ошибки в реализации Intel RSA-CRT и AES-NI, работающие в анклаве SGX. Им удалось восстановить полные криптографические ключи с незначительными вычислительными усилиями.
Код для проверки атаки (репозиторий на GitHub) (https://github.com/KitMurdock/plundervolt)
Описанная атака не требует радикального повышения напряжения, так что не угрожает физической безопасности чипа. На самом деле этой свойство Plundervolt делает атаку ещё опаснее. Ещё одно опасное свойство — она гораздо быстрее, чем большинство других атак на процессоры Intel, таких как Spectre, Meltdown, Zombieload, RIDL и прочие. В таблице указано количество итераций до появления ошибки умножения (0xAE0000 * 0x18) на разных значениях пониженного напряжения в I3-7100U на 2 ГГц:
https://habrastorage.org/webt/nw/yy/t7/nwyyt7ars5r2hhmgjvbuvs-cbii.png
Изменение битов в умножениях AES осуществляются очень быстро. Например, извлечение ключа AES занимает несколько минут, включая вычисление, необходимое для получения ключа из неисправного шифротекста, говорит Освальд.
К сожалению для злоумышленников, атаку Plundervolt трудно провести удалённо. Нельзя заманить пользователя на веб-сайт и запустить JavaScript. Напряжение CPU таким методом не изменяется. Для работы Plundervolt требует наличия на компьютере жертвы приложения на с правами root или admin. Это требует социальной инженерии и применения дополнительных эксплоитов.
Plundervolt не работает в виртуализированных средах, таких как виртуальные машины и службы облачных вычислений, где у гостевой ОС нет доступа к интерфейсу, управляющему напряжением процессора.
Тем не менее, Plundervolt является серьёзной проблемой. Исследовательская группа уведомила Intel об уязвимости в июне 2019 года, и с тех пор производитель CPU работал над патчами. Обновления микрокода и BIOS выпущены 10 декабря 2019 года в рамках рекомендаций по безопасности INTEL-SA-00289 (https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00289.html). После установки патчей в BIOS можно отключить интерфейс по управлению напряжением и тактовой частотой.
Техническое описание атаки см. в научной статье (pdf) (https://plundervolt.com/doc/plundervolt.pdf), которая выйдет в сборнике Proceedings of the 41st IEEE Symposium on Security and Privacy (https://www.ieee-security.org/TC/SP2020/).
https://habr.com
Источник (https://virusnet.info/processory-intel-vypljovyvajut-privatnyj-kljuch-esli-poigrat-s-naprjazheniem/)