Представлена SpectreRSB, новая уязвимость в механизме спекулятивного выполнения CPU
24 июля 2018 года
Группа исследователей из Калифорнийского университета в Риверсайде раскрыла сведения о новой уязвимости SpectreRSB, затрагивающей механизм спекулятивного выполнения инструкций в процессорах. Уязвимость базируется на принципе восстановления данных, оставшихся в процессорном кэше в результате спекулятивного выполнения инструкций, ставшим известным под именем Spectre и позднее получившим развитие в атаках SpectrePrime, SgxPectre, BranchScope, Spectre 1.1, Spectre 1.2, LazyFP, Spectre 3a и Spectre 4.
В отличие от прошлых уязвимостей класса Spectre, новая проблема позволяет определять содержимое закрытых областей памяти через манипуляции с буфером возврата из стека (RSB, Return Stack Buffer), применяемым для предсказания вероятного адреса возврата. Несмотря на то, что подобные операции выполняются в ходе спекулятивного выполнения и отбрасываются, если предсказан неверный адрес возврата, результат предсказания остаётся в процессорном кэше и может быть восстановлен при помощи методов определения содержимого кэша по сторонним каналам, анализирующим изменение времени доступа к прокэшированным и не прокэшированным данным.
Атака сводится к следующим шагам:
- После переключения контекста на обработчик атакующего выполняется сброс содержимого общих областей (flush RSB) и засорение RSB данными с целевым адресом в адресном пространстве процесса жертвы;
- CPU переходит к выполнению процесса жертвы;
- При выполнении в процессе жертвы возврата управления («ret»), процессор считает, что находящийся в RSB адрес (занесённый атакующим) наиболее вероятно является искомым адресом возврата и спекулятивно использует его в инструкциях, не дожидаясь подтверждения адреса возврата. После определения настоящего адреса спекулятивная операция отбрасывается, но результат обращения по заданным атакующим адресу оседает в кэше.
Так как разные процессорные потоки используют общий буфер RSB, потенциально атака SpectreRSB может применяться не только для выявления значений закрытых областей в текущем процессе для обхода ограничений sandbox-изоляции, но и для организации утечки данных из других процессов и виртуальных машин, а также для обхода средств изоляции кода и данных, предоставляемых технологией Intel SGX (Software Guard Extensions). Наличие уязвимости продемонстировано в процессорах Intel. В частности, рабочие прототипы кода для атаки были протестированы на системах с CPU Intel Haswell и Skylake, а также применялись для определения содержимого анклавов SGX2 на системах с Core i7 Skylake. Процессоры AMD и ARM не проверялись, но, судя по наличию в них поддержки RSB, вероятно они также подвержены уязвимости.
По сведению исследователей, для блокирования SpectreRSB потребуется применение нового метода защиты, так как ни один метод, реализованный для защиты от прошлых атак Spectre, включая Retpoline и новые возможности микрокода Intel, не эффективен для блокировки SpectreRSB. Компания Intel не согласилась с таким мнением и заявила, что для блокирования SpectreRSB можно использовать уже существующие типовые методы защиты от атаки Spectre. Для защиты от утечки данных из областей памяти ядра и при переключении контекста между разными виртуальными машинами энтузиастами предложена техника защиты «RSB refilling», которая уже включена в состав OpenBSD.
Тем временем, компания Red Hat опубликовала утилиту ( tar-архив) для анализа исполняемых файлов, библиотек и сборок ядра Linux на предмет наличия последовательностей инструкций, допускающих проведение атаки Spectre v1. Утилита пока поддерживает только анализ кода для архитектур x86_64 и AArch64.
Дополнение: Для ядра Linux предложен патч для блокирования уязвимости SpectreRSB.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.