The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Атака на Intel SGX, позволяющая извлечь конфиденциальные данные или выполнить код в анклаве

22.10.2021 13:34

Исследователи из Оборонного научно-технического университета Народно-освободительной армии Китая, Национального университета Сингапура и Швейцарской высшей технической школы Цюриха разработали новый метод атаки на изолированные анклавы Intel SGX (Software Guard eXtensions). Атака получила название SmashEx и вызвана проблемами с реентерабельностью при обработке исключительных ситуаций в процессе работы runtime-компонентов для Intel SGX. Предложенный метод атаки даёт возможность при наличии контроля за операционной системой определить конфиденциальные данные, размещённые в анклаве, или организовать копирование своего кода в память анклава и его исполнение.

Прототипы эксплоитов подготовлены для анклавов с runtime на базе Intel SGX SDK (CVE-2021-0186) и Microsoft Open Enclave (CVE-2021-33767). В первом случае продемонстрирована возможность извлечения RSA-ключа, применяемого на web-сервере для HTTPS, а во втором удалось определить содержимое, полученное утилитой cURL, запущенной внутри анклава. Уязвимость уже устранена программным путём в выпусках Intel SGX SDK 2.13 и Open Enclave 0.17.1. Кроме пакетов Intel SGX SDK и Microsoft Open Enclave уязвимость также проявляется в SDK Google Asylo, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX и Veracruz.

Напомним, что технология SGX (Software Guard Extensions) появилась в процессорах Intel Core шестого поколения (Skylake) и предлагает серию инструкций, позволяющих выделять приложениям пользовательского уровня закрытые области памяти - анклавы, содержимое которых не может быть прочитано и изменено даже ядром и кодом, выполняемым в режимах ring0, SMM и VMM. Передать управление коду в анклаве невозможно традиционными функциями перехода и манипуляциями с регистрами и стеком - для передачи управления в анклав применяются специально созданные новые инструкции EENTER, EEXIT и ERESUME, выполняющие проверку полномочий. При этом помещённый в анклав код может применять классические методы вызова для обращения к функциям внутри анклава и специальную инструкцию для вызова внешних функций. Для защиты от аппаратных атак, таких как подключение к модулю DRAM, применяется шифрование памяти анклава.

Проблема связана с тем, что технология SGX позволяет операционной системе прервать выполнение анклава при помощи генерации аппаратного исключения, а в анклавах должным образом не реализуются примитивы для атомарной обработки подобных исключений. В отличие от ядра операционной системы и обычных приложений, код внутри анклавов не имеет доступ к примитивам для организации атомарных действий во время обработки асинхронно возникающих исключений. Без указанных атомарных примитивов анклав может быть в любое время прерван и возвращён к выполнению, даже в моменты когда в анклаве выполняются критические секции и он находится в небезопасном состоянии (например, когда не сохранены/восстановлены регистры CPU).

Для нормального функционирования технология SGX позволяет прервать выполнение анклава настраиваемыми аппаратными исключениями. Эта особенность позволяет runtime-окружениям анклавов, реализовывать обработку внутри-анклавных исключений или обработку сигналов, но и она-же может провоцировать ошибки реентерабельности. Атака SmashEx основывается на эксплуатации недоработок в SDK из-за которых должным образом не обрабатывается ситуация повторного вызова обработчика исключения. Важно, что для эксплуатации уязвимости атакующий должен иметь возможность прервать выполнение анклава, т.е. должен контролировать работу системного окружения.

После генерации исключения атакующий получает небольшое временное окно, в течение которого можно перехватить поток исполнения через манипуляцию со входными параметрами. В частности, при наличии доступа к системе (окружению вне анклава) можно создать новое исключение сразу после выполнения инструкции входа в анклав (EENTER), что приведёт к возвращению управления системе на стадии, когда ещё не завершена настройка стека для анклава, в котором в том числе сохраняется состояние регистров CPU.

Система затем может вернуть управление обратно в анклав, но так как стек анклава во время прерывания не был настроен, анклав будет выполняться со стеком, находящимся в памяти системы, что можно использовать для применения методов эксплуатации на основе возвратно-ориентированного программирования (ROP - Return-Oriented Programming). При использовании техники ROP атакующий не пытается разместить свой код в памяти, а оперирует уже имеющимися в загруженных библиотеках кусками машинных инструкций, завершающихся инструкцией возврата управления (как правило, это окончания библиотечных функций). Работа эксплоита сводится к построению цепочки вызовов подобных блоков ("гаджетов") для получения нужной функциональности.



  1. Главная ссылка к новости (https://thehackernews.com/2021...)
  2. OpenNews: Plundervolt - новый метод атаки на процессоры Intel, затрагивающий технологию SGX
  3. OpenNews: Опубликована техника скрытия вредоносного кода в анклавах Intel SGX
  4. OpenNews: Представлена атака SgxPectre, позволяющая обойти технологию защиты Intel SGX
  5. OpenNews: Компания Intel открыла компоненты для использования технологии защиты SGX в Linux
  6. OpenNews: Уязвимость TPM-Fail, позволяющая восстановить ключи, хранимые в TPM-модулях
Лицензия: CC-BY
Наводку на новость прислал erthink
Тип: Проблемы безопасности
Короткая ссылка: https://opennet.ru/56008-sgx
Ключевые слова: sgx, intel
Поддержать дальнейшую публикацию новостей на OpenNET.


Обсуждение (42) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, vitalif (ok), 13:55, 22/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +25 +/
    Анклавы это DRM, DRM это плохо, посему взлом анклавов это хорошо :-)
     
     
  • 2.3, Аноним (3), 13:57, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Именно. Но я что-то не помню софта использующего сабж, там вроде были только какие-то сугубо интерпрайз поделки за много денег. Или я плохо искал.
     
     
  • 3.15, Аноним (15), 14:55, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ты плохо искал. Signal использует SGX для гарантии, что на серверах выполняется именно тот софт, который они заявляют.
     
     
  • 4.16, Аноним (3), 14:57, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/signalapp/Signal-Server/search?q=sgx
     
     
  • 5.37, Fracta1L (ok), 22:39, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Аналитика уровня комментов Опеннета
     

  • 1.2, Аноним (2), 13:57, 22/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Это превосходно.
     
  • 1.4, BratishkaErik (ok), 14:00, 22/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Бэкдорыыыыы :)
     
     
  • 2.5, BratishkaErik (ok), 14:01, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Только открытое железо по типу RISC—V помогут
     
     
  • 3.7, Онаним (?), 14:06, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ровно до момента, пока Неуловимый Джо наконец кому-то не спонадобится.
    Ну и имея на руках кучу имплементаций, каждую со своими дырами, вылизать это глобально будет невозможно.
     
  • 3.9, Kenneth (?), 14:24, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    У Вас дефис между C и V слишком длинный.
     
     
  • 4.17, Анонимъ (?), 15:25, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Недостаточно длинный: RISC⸻V
     
  • 3.11, llolik (ok), 14:33, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Не помогут.
    Было: дыра в процессорах Intel (серий X/Y/...)
    Станет: дыра в процессоре A, возможно B и в ещё ХЗ каких "мы забодалсь проверять всю эту кучу".
     
     
  • 4.18, Anonymous XE (?), 15:38, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Допустим, в процессоре C дыру выявили и устранили. Для секурных применений будем использовать процессор C.
     
     
  • 5.21, llolik (ok), 16:03, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Допустим, в процессоре C дыру выявили и устранили. Для секурных применений будем использовать процессор C.

    Потом в процессоре С выявляется ещё куча уязвимостей -> срочно разрабатываем процессор D (тратим ещё N денег), на остальные забиваем. А буквы закончатся так перейдём на цифры.
    А во-вторых, кто их проверять-то будет? Когда будет ± дохрена ядер от разных "Васян" и "не очень".

     

  • 1.6, data man (ok), 14:06, 22/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > из Оборонного научно-технического университета Народно-освободительной армии Китая
    > Атака

    Мы объявляем вам войну, анклавы! (Смотреть онлайн сериал в хорошем качестве).

     
     
  • 2.14, QwertyReg (ok), 14:54, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ителбои должны страдать. Страдать с новыми сокетами, страдать со взломом прошивок, страдать с Meltdown и Spectre. Интелбоям не привыкать.
     
     
  • 3.19, Anonymous XE (?), 15:39, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А у макобоев 2017 не Intel?
     
     
  • 4.25, QwertyReg (ok), 17:01, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • –8 +/
    > А у макобоев 2017 не Intel?

    На моём MacBook стоит самая защищённая ОС, которая не позволит эксплуатацию Meltdown и Spectre и при этом ни на йоту не снижает производительность.

     
  • 4.40, kissmyass (?), 00:47, 23/10/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    макобои должны страдать среди интелбоев самыми первыми!
     

  • 1.8, Аноним (8), 14:17, 22/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    процессоры стали слишком сложными, одни непродуманные решения пытаются исправить другими непродуманными решениями. этому не будет конца. надо всё менять в корне.
     
     
  • 2.10, Kenneth (?), 14:25, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно.

    Зачем в XXI веке система команд, созданная в 1978-м?

     
     
  • 3.23, Аноним (23), 16:52, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Но она же переработана божественной AMD в 64-бита ?
     
  • 3.43, Аноним (43), 02:33, 23/10/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Меняем систему команд… опа! А в процессоре всё равно миллиарды транзисторов.
    Проблемы, как в случае со spectre и meltdown, лежат значительно глубже.
     
  • 2.32, YetAnotherOnanym (ok), 17:51, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чувак, да ты только что изобрёл RISC-V!
     
  • 2.48, Аноньимъ (ok), 20:01, 23/10/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    DRM можно только международным трибуналом исправить.
     

  • 1.12, Анонимкарастуимка (?), 14:38, 22/10/2021 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –1 +/
     

     ....ответы скрыты модератором (2)

  • 1.22, Аноним (22), 16:09, 22/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вроде какой-то майнерский софт его использует
     
  • 1.24, Аноним12345 (?), 16:57, 22/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Каков размер премии за разработку эксплойта ?
     
     
  • 2.38, Аноним (38), 23:20, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Как суд постановит.
     

  • 1.26, ip1982 (ok), 17:11, 22/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Исследователи из Оборонного научно-технического университета Народно-освободительной армии Китая, Национального университета Сингапура и Швейцарской высшей технической школы Цюриха

    А кто тот человек на самом деле?

     
     
  • 2.49, Аноним (49), 20:24, 23/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Винтик в машине, продал имя за стабильность жития.
     

  • 1.30, Kuromi (ok), 17:16, 22/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А ведь какиебыли крики от Интолл что это супернужная всем киллерфича, безопасность пользовтаеля там и прочее. И вот - нате.
     
     
  • 2.34, 1 (??), 19:42, 22/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    ну так это же вроде уязвимость не в железе, а в софте, используй новый SDK для своей программы использующей эти анклавы SGX и не будет уязвимости.
     

  • 1.42, Аноним (42), 01:44, 23/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ИМХО сама идея с анклавами такое себе.
    Это для чего? Вот ваш софт выполняется на нашем железе, а мы и понятия не имеем, что оно там делает и повлиять не можем. Даже ддр шифруем. Можете смело складывать к нам облака любые тайны.

    Но как мне кажется, технологии вполне позволяют подготовить проц и тупо его читать. Снять крышку, припаяться куда надо на кристалл, вернуть крышку с лишними выводами.
    И делать дорого, и читать сложно, но можно ведь.
    И нету секретов.

     
     
  • 2.44, Аноним (43), 02:34, 23/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Процессор можно хоть по атомам разобрать. Дорого, сложно, но можно ведь.
     
  • 2.47, anonymous (??), 11:52, 23/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Снять крышку, припаяться куда надо на кристалл, вернуть крышку с лишними выводами.

    Припаяться к 14 нанометрам кремния?

     

  • 1.45, Ананоним (?), 07:18, 23/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Это прекрасно я щитаю! Наконец-то смотрящие увидят что там исполняется :) Я за гласность!
     
  • 1.46, Аноним (46), 10:39, 23/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > выполнить код в анклаве

    выполнить код в помойке

    /fixed.

     
  • 1.50, Аноним (50), 22:20, 23/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Железо корпорастов содержит бэкдоры?! Не может быть!!!111...
     
  • 1.51, erthink (ok), 22:00, 24/10/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хочется прям поблагодарить за качественную подготовку материала новости.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:
    При перепечатке указание ссылки на opennet.ru обязательно



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру