Уязвимость в процессорах Intel и AMD позволяет красть данные. Исправление сильно снижает производительность
Исследователи Швейцарской высшей технической школы Цюриха выявили новый вариант атаки на механизм спекулятивного выполнения команд в процессорах, который позволяет извлечь информацию из памяти ядра или организовать атаку на хост-систему из виртуальных машин, пишет OpenNet. Уязвимости получили кодовое имя Retbleed.
Отличие от подобных им атак Spectre-v2 сводится к организации спекулятивного выполнения произвольного кода при обработке инструкции «ret» (return), которая извлекает адрес для перехода из стека, вместо косвенного перехода при помощи инструкции «jmp» с загрузкой адреса из памяти или регистра процессора.
Атакующий может создать условия для неверного предсказания перехода и организовать спекулятивный переход на блок кода, который не предусмотрен логикой выполнения программы. Процессор определит, что предсказание ветвления не оправдалось, и откатит операцию, но обработанные при спекулятивном выполнении данные осядут в кэше и микроархитектурных буферах. Злоумышленник может считать их с помощью методов выявления остаточных данных по сторонним каналам, например, анализировать изменения времени доступа к кэшированным и не кэшированным данным.
Для защиты от атак класса Spectre в большинстве ОС применяется техника «retpoline». Она предполагает замену операций косвенного перехода на инструкцию «ret», для которой в процессорах применяется отдельный блок предсказания состояния стека, не использующий блок предсказания переходов. Авторы атаки Retbleed показали возможность создания микроархитектурных условий для инициирования спекулятивного перехода при помощи инструкции «ret» и опубликовали инструмент для выявления в ядре Linux подходящих для эксплуатации уязвимости последовательностей инструкций, в которых появляются подобные условия.
Также подготовлен эксплойт, позволяющий на системах c процессорами Intel из непривилегированного процесса в пространстве пользователя извлекать произвольные данные из памяти ядра со скоростью 219 байт в секунду и точностью 98%. На процессорах AMD эффективность эксплоита гораздо выше — 3,9 Кб в секунду. На системах с процессорами Intel атака для определения хэша пароля пользователя root была проведена за 28 минут, а системы с процессорами AMD сдались за 6 минут.
Возможность совершения атаки подтверждена для 6-8 поколений процессоров Intel, которые выпускались до 3 квартала 2019 года, и процессоров AMD на базе микроархитектур Zen 1, Zen 1+ и Zen 2, которые выпускались до 2 квартала 2021 года. В более новых моделях процессоров проблема блокируется имеющимися механизмами защиты.
Для ядра Linux подготовлен набор изменений, блокирующих проблему программным путём. Однако патчи приводят к существенным потерям производительности процессоров от 14 до 39%.
Intel отмечает, что системы Windows не затронуты, поскольку в них по умолчанию используется технология IBRS, позволяющая регулировать спекулятивное исполнение инструкций процессором. О случаях эксплуатации упомянутой уязвимости компании неизвестно. Также Intel (1, 2) и AMD опубликовали рекомендации по защите систем от атак Retbleed.
Читать на dev.by