Retbleed — нова атака срещу механизма за спекулативно изпълнение на CPU Intel и AMD

Группа исследователей из Швейцарской высшей технической школы Цюриха выявила новый вариант атаки на механизм спекулятивного выполнения косвенных переходов в 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, произведени до третото тримесечие на 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

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster