Две атаки на механизм предсказания каналов кэша в процессорах AMD
7 марта 2020 года
Группа исследователей из Грацского технического университета (Австрия), ранее известная разработкой методов атак MDS, NetSpectre, Throwhammer и ZombieLoad, провела исследование специфичных для процессоров AMD аппаратных оптимизаций и разработала два новых метода атак по сторонним каналам, манипулирующих утечками данных в процессе работы механизма предсказания каналов кэша первого уровня процессоров AMD. Методы могут использоваться для снижения эффективности защиты ASLR, восстановления ключей в уязвимых реализациях AES и повышения эффективности атаки Spectre.
Проблемы выявлены в реализации механизма предсказания канала (way predictor) в кэше данных первого уровня CPU (L1D), используемого для предсказания в каком канале кэша отражён определённый адрес памяти. Применяемая в процессорах AMD оптимизация основывается на проверке μ-тегов (μTag). μTag вычисляется через применение специфичной хэш-функции к виртуальному адресу. В процессе работы механизм предсказания канала использует μTag для определения канала кэша по таблице. Таким образом, μTag позволяет процессору ограничиться обращением только к конкретному каналу, без перебора всех вариантов, что существенно снижает потребление энергии CPU.
В ходе обратного инжиниринга реализации системы предсказания канала в различных поколениях процессоров AMD, выпускаемых с 2011 по 2019 год, выявлены две новые техники атак по сторонним каналам:
- Collide+Probe - даёт возможность атакующему отслеживать обращение к памяти для процессов, выполняемых на том же логическом ядре CPU. Суть метода заключается в использовании виртуальных адресов, вызывающих коллизии хэш функции, применяемой для вычисления μTag, для отслеживания доступа к памяти. В отличие от атак Flush+Reload и Prime+Probe, применяемых на процессорах Intel, Collide+Probe не использует разделяемую память и работает без знания физических адресов.
- Load+Reload - позволяет очень точно определять следы доступа к памяти на том же физическом ядре CPU. Метод основывается на том, что ячейка физической памяти может находиться в кэше L1D только один раз. Т.е. доступ к одной и той же ячейке памяти по другому виртуальному адресу приведёт к вытеснению ячейки из кэша L1D, что позволяет отслеживать доступ к памяти. Несмотря на то, что атака зависит от разделяемой памяти, она не приводит к сбросу линий кэша, что даёт возможность проведения скрытых атак, не вытесняющих данные из кэша последнего уровня.
На основе техник Collide+Probe и Load+Reload исследователями продемонстрировано несколько сценариев атаки по сторонним каналам:
- Показана возможность использования методов для организации скрытого косвенного канала связи между двумя процессами, позволяющего передавать данные на скорости до 588 кB в секунду.
- Используя коллизии в μTag удалось добиться сокращения энтропии для разных вариантов ASLR (Address Space Layout Randomization) и обойти защиту ASLR в ядре на полностью обновлённой Linux-системе. Показана возможность совершения атаки по снижению энтропии ASLR как из пользовательских приложений, так и при помощи выполняемого в sandbox-окружении JavaScript-кода и кода, запущенного в другом гостевом окружении.
- На базе метода Collide+Probe реализована атака по восстановлению ключа шифрования из уязвимой реализации (на основе T-table) шифрования AES.
- Применив метод Collide+Probe в качестве канала для получения данных в ходе атаки Spectre удалось извлечь закрытые данные из ядра, не используя разделяемую память.
Уязвимость проявляется на процессорах AMD на базе микроархитектур Bulldozer, Piledriver, Steamroller, Zen (Ryzen, Epic), Zen+ и Zen2. Компания AMD была уведомлена о проблеме 23 августа 2019 года, но пока не выпустила отчёт с информацией о блокировании уязвимости. По данным исследователей проблему можно блокировать на уровне обновления микрокода через предоставление MSR-битов для выборочного отключения системы предсказания канала, по аналогии с тем, как поступила компания Intel для управления отключением механизмов предсказания переходов.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.