Retbleed - новая атака на механизм спекулятивного выполнения CPU Intel и AMD
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Группа исследователей из Швейцарской высшей технической школы Цюриха
выявила новый вариант атаки на механизм спекулятивного выполнения косвенных переходов в CPU, позволяющий извлечь информацию из памяти ядра или организовать атаку на хост-систему из виртуальных машин. Уязвимости получили кодовое имя Retbleed (CVE-2022-29900, CVE-2022-29901) и близки по своей сути к атакам Spectre-v2. Отличие сводится к организации спекулятивного выполнения произвольного кода при обработке инструкции "ret" (return), извлекающей адрес для перехода из стека, вместо косвенного перехода при помощи инструкции "jmp" с загрузкой адреса из памяти или регистра CPU.
Атакующий может создать условия для неверного предсказания перехода и организовать целенаправленный спекулятивный переход на блок кода, не предусмотренный логикой выполнения программы. В конечном счёте, процессор определит, что предсказание ветвления не оправдалось и откатит операцию в исходное состояние, но обработанные в процессе спекулятивного выполнения данные осядут в кэше и микроархитектурных буферах. Если ошибочно выполненный блок осуществляет обращение к памяти, то его спекулятивное выполнение приведёт к оседанию в общем кэше и данных, прочитанных из памяти.
Для определения данных, оставшихся в кэше после спекулятивного выполнения операций, атакующий может использовать методы определения остаточных данных по сторонним каналам, например, анализировать изменения времени доступа к прокэшированным и не прокэшированным данным. Для целенаправленного извлечения информации из областей в другом уровне привилегий (например, из памяти ядра) используются "гаджеты" - присутствующие в ядре последовательности команд, пригодные для спекулятивного чтения данных из памяти в зависимости от внешних условий, на которые может влиять атакующий.
Для защиты от классических атак класса Spectre, в которых используются инструкции условного и косвенного перехода, в большинстве операционных систем применяется техника "retpoline", основанная на замене операций косвенного перехода на инструкцию "ret", для которой в процессорах применяется отдельный блок предсказания состояния стека, не использующий блок предсказания переходов. При внедрении retpoline в 2018 году считалось, что похожие на Spectre манипуляции с адресами неприменимы на практике для спекулятивного перехода при помощи инструкции "ret".
Исследователи, разработавшие метод атаки Retbleed, продемонстрировали возможность создания микроархитектурных условий для инициирования спекулятивного перехода при помощи инструкции "ret" и опубликовали готовый инструментарий для выявления в ядре Linux подходящих для эксплуатации уязвимости последовательностей инструкций (гаджетов), в которых проявляются подобные условия.
В ходе исследования подготовлен рабочий эксплоит, позволяющий на системах c CPU Intel из непривилегированного процесса в пространстве пользователя извлекать произвольные данные из памяти ядра со скоростью 219 байт в секунду и точностью 98%. На процессорах AMD эффективность работы эксплоита гораздо выше - скорость утечки составляет 3.9 КБ в секунду. В качестве практического примера показано, как при помощи предложенного эксплоита определить содержимое файла /etc/shadow. На системах с CPU Intel атака для определения хэша пароля пользователя root была проведена за 28 минут, а на системах с CPU AMD - за 6 минут.
Извините, данный ресурс не поддреживается. :( Возможность совершения атаки подтверждена для 6-8 поколений процессоров Intel, которые выпускались до 3 квартала 2019 года (включая Skylake), и процессоров AMD на базе микроархитектур Zen 1, Zen 1+ и Zen 2, которые выпускались до второго квартала 2021 года. В более новых моделях процессоров, таких как AMD Zen3 и Intel Alder Lake, а также в процессорах ARM, проблема блокируется имеющимися механизмами защиты. Например, применение инструкций IBRS (Indirect Branch Restricted Speculation) помогает защититься от атаки.
Для ядра Linux и гепервизора Xen подготовлен набор изменений, на старых CPU блокирующих проблему программным путём. Предложенный для ядра Linux патч изменяет 68 файлов, добавляет 1783 строк и удаляет 387 строк. К сожалению защита приводит к существенным накладным расходам - в проведённых текстах на процессорах AMD и Intel снижение производительности оценивается от 14% до 39%. Более предпочтительным является применение защиты на основе инструкций IBRS, доступных в новых поколениях CPU Intel и поддерживаемых начиная с ядра Linux 4.19.
На процессорах Intel подстановка адреса для спекулятивного косвенного перехода осуществляется благодаря особенности, проявляющейся при переполнении через нижнюю границу (underflow) в буфере предсказания содержимого стека (Return Stack Buffer). При возникновении подобных условий для инструкции "ret" начинает применяться логика выбора адреса, аналогичная той, что используется при обычных косвенных переходах. В ядре Linux найдено более тысячи мест, создающих условия инициирования подобного обратного переполнения и доступных через системные вызовы.
На процессорах AMD спекулятивное выполнение инструкции "ret" осуществляется без привязки к специфичному для стека буферу (Return Address Stack) и блок предсказания переходов рассматривает инструкцию "ret" не как возврат управления, а как косвенный переход, и, соответственно, использует при предсказании данные для косвенных переходов. При подобных условиях фактически любая операция "ret", достижимая через системный вызов, может использоваться для эксплуатации.
Дополнительно, в CPU AMD также выявлена ещё одна проблема (CVE-2022-23825, Branch Type Confusion), связанная с осуществлением фиктивных переходов - условия для предсказания перехода могут возникать даже без необходимых инструкций ветвления, что позволяет влиять на буфер предсказания переходов без инструкции "ret". Данная особенность существенно усложняет реализацию защиты и требует более активной очистки буфера предсказании переходов. Ожидается, что добавление полной защиты в ядро приведёт к снижению производительности на 209%.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://www.openwall.com/lists...)
- OpenNews: Семь новых атак на механизм спекулятивного выполнения в CPU
- OpenNews: Новый вариант атаки Foreshadow, затрагивающий процессоры Intel, AMD, ARM и IBM
- OpenNews: BranchScope - новая атака на механизм спекулятивного выполнения косвенных переходов в CPU
- OpenNews: Доступен Kasper, сканер проблем со спекулятивным выполнением кода в ядре Linux
- OpenNews: BHI - новая уязвимость класса Spectre в процессорах Intel и ARM
Похожие новости:
- Компания AMD открыла реализацию технологии FidelityFX Super Resolution 2.0
- Уязвимости в механизме MMIO процессоров Intel
- GitHub раскрыл данные о взломе инфраструктуры NPM и выявлении открытых паролей в логах
- В ядро Linux 5.19 принято около 500 тысяч строк кода, связанного с графическими драйверами
- Атака на немецкие компании через NPM-пакеты
- Intel опубликовал ControlFlag 1.2, инструмент для выявления аномалий в исходных текстах
- Китай намерен перевести госучреждения и госпредприятия на Linux и ПК местных производителей
- Компания Intel открыла код прошивки блока PSE для чипов Elkhart Lake
- Компания Intel опубликовала кодировщик видео SVT-AV1 1.0
- Уязвимость в механизме спекулятивного выполнения инструкций процессоров AMD
Теги для поиска: #_retbleed, #_spectre, #_cpu, #_intel, #_amd, #_attack
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 03:18
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Группа исследователей из Швейцарской высшей технической школы Цюриха выявила новый вариант атаки на механизм спекулятивного выполнения косвенных переходов в CPU, позволяющий извлечь информацию из памяти ядра или организовать атаку на хост-систему из виртуальных машин. Уязвимости получили кодовое имя Retbleed (CVE-2022-29900, CVE-2022-29901) и близки по своей сути к атакам Spectre-v2. Отличие сводится к организации спекулятивного выполнения произвольного кода при обработке инструкции "ret" (return), извлекающей адрес для перехода из стека, вместо косвенного перехода при помощи инструкции "jmp" с загрузкой адреса из памяти или регистра CPU. Атакующий может создать условия для неверного предсказания перехода и организовать целенаправленный спекулятивный переход на блок кода, не предусмотренный логикой выполнения программы. В конечном счёте, процессор определит, что предсказание ветвления не оправдалось и откатит операцию в исходное состояние, но обработанные в процессе спекулятивного выполнения данные осядут в кэше и микроархитектурных буферах. Если ошибочно выполненный блок осуществляет обращение к памяти, то его спекулятивное выполнение приведёт к оседанию в общем кэше и данных, прочитанных из памяти. Для определения данных, оставшихся в кэше после спекулятивного выполнения операций, атакующий может использовать методы определения остаточных данных по сторонним каналам, например, анализировать изменения времени доступа к прокэшированным и не прокэшированным данным. Для целенаправленного извлечения информации из областей в другом уровне привилегий (например, из памяти ядра) используются "гаджеты" - присутствующие в ядре последовательности команд, пригодные для спекулятивного чтения данных из памяти в зависимости от внешних условий, на которые может влиять атакующий. Для защиты от классических атак класса Spectre, в которых используются инструкции условного и косвенного перехода, в большинстве операционных систем применяется техника "retpoline", основанная на замене операций косвенного перехода на инструкцию "ret", для которой в процессорах применяется отдельный блок предсказания состояния стека, не использующий блок предсказания переходов. При внедрении retpoline в 2018 году считалось, что похожие на Spectre манипуляции с адресами неприменимы на практике для спекулятивного перехода при помощи инструкции "ret". Исследователи, разработавшие метод атаки Retbleed, продемонстрировали возможность создания микроархитектурных условий для инициирования спекулятивного перехода при помощи инструкции "ret" и опубликовали готовый инструментарий для выявления в ядре Linux подходящих для эксплуатации уязвимости последовательностей инструкций (гаджетов), в которых проявляются подобные условия. В ходе исследования подготовлен рабочий эксплоит, позволяющий на системах c CPU Intel из непривилегированного процесса в пространстве пользователя извлекать произвольные данные из памяти ядра со скоростью 219 байт в секунду и точностью 98%. На процессорах AMD эффективность работы эксплоита гораздо выше - скорость утечки составляет 3.9 КБ в секунду. В качестве практического примера показано, как при помощи предложенного эксплоита определить содержимое файла /etc/shadow. На системах с CPU Intel атака для определения хэша пароля пользователя root была проведена за 28 минут, а на системах с CPU AMD - за 6 минут. Извините, данный ресурс не поддреживается. :( Возможность совершения атаки подтверждена для 6-8 поколений процессоров Intel, которые выпускались до 3 квартала 2019 года (включая Skylake), и процессоров AMD на базе микроархитектур Zen 1, Zen 1+ и Zen 2, которые выпускались до второго квартала 2021 года. В более новых моделях процессоров, таких как AMD Zen3 и Intel Alder Lake, а также в процессорах ARM, проблема блокируется имеющимися механизмами защиты. Например, применение инструкций IBRS (Indirect Branch Restricted Speculation) помогает защититься от атаки. Для ядра Linux и гепервизора Xen подготовлен набор изменений, на старых CPU блокирующих проблему программным путём. Предложенный для ядра Linux патч изменяет 68 файлов, добавляет 1783 строк и удаляет 387 строк. К сожалению защита приводит к существенным накладным расходам - в проведённых текстах на процессорах AMD и Intel снижение производительности оценивается от 14% до 39%. Более предпочтительным является применение защиты на основе инструкций IBRS, доступных в новых поколениях CPU Intel и поддерживаемых начиная с ядра Linux 4.19. На процессорах Intel подстановка адреса для спекулятивного косвенного перехода осуществляется благодаря особенности, проявляющейся при переполнении через нижнюю границу (underflow) в буфере предсказания содержимого стека (Return Stack Buffer). При возникновении подобных условий для инструкции "ret" начинает применяться логика выбора адреса, аналогичная той, что используется при обычных косвенных переходах. В ядре Linux найдено более тысячи мест, создающих условия инициирования подобного обратного переполнения и доступных через системные вызовы. На процессорах AMD спекулятивное выполнение инструкции "ret" осуществляется без привязки к специфичному для стека буферу (Return Address Stack) и блок предсказания переходов рассматривает инструкцию "ret" не как возврат управления, а как косвенный переход, и, соответственно, использует при предсказании данные для косвенных переходов. При подобных условиях фактически любая операция "ret", достижимая через системный вызов, может использоваться для эксплуатации. Дополнительно, в CPU AMD также выявлена ещё одна проблема (CVE-2022-23825, Branch Type Confusion), связанная с осуществлением фиктивных переходов - условия для предсказания перехода могут возникать даже без необходимых инструкций ветвления, что позволяет влиять на буфер предсказания переходов без инструкции "ret". Данная особенность существенно усложняет реализацию защиты и требует более активной очистки буфера предсказании переходов. Ожидается, что добавление полной защиты в ядро приведёт к снижению производительности на 209%. =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 03:18
Часовой пояс: UTC + 5