Представлена 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.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Представлена SpectreRSB, новая уязвимость в механизме спекулятивного выполнения CPU», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.