01.10.2020

Новый вариант атаки Foreshadow, затрагивающий процессоры Intel, AMD, ARM и IBM


Группа исследователей из Грацского технического университета (Австрия) и Центра Гельмгольца по информационной безопасности (CISPA), выявила (PDF) новый вектор применения атаки по сторонним каналам Foreshadow (L1TF), позволяющей извлечь данные из памяти анклавов Intel SGX, SMM (System Management Mode), областей памяти ядра ОС и виртуальных машин в системах виртуализации. В отличие от предложенной в 2018 году изначальной атаки Foreshadow новый вариант не специфичен для процессоров Intel и затрагивает CPU других производителей, таких как ARM, IBM и AMD. Кроме того, новый вариант не требует высокой производительности и атака может быть осуществлена даже при помощи запуска кода на JavaScript и WebAssembly в web-браузере.

Атака Foreshadow пользуется тем, что при доступе к памяти по виртуальному адресу, приводящему к исключению (terminal page fault), процессор спекулятивно рассчитывает физический адрес и загружает данные, если они имеются в L1-кэше. Спекулятивное обращение выполняется до завершения перебора таблицы страниц памяти и независимо от состояния записи в таблице страниц памяти (PTE), т.е. до проверки наличия данных в физической памяти и их доступности для чтения. После завершения проверки доступности памяти, в случае отсутствия флага Present в PTE операция отбрасывается, но данные оседают в кэше и их можно извлечь при помощи методов определения содержимого кэша по сторонним каналам (через анализ изменения времени доступа к прокэшированным и не прокэшированным данным).

Исследователи показали, что имеющиеся методы защиты от Foreshadow неэффективны и реализованы с неверной трактовкой проблемы. Уязвимость Foreshadow может быть эксплуатирована независимо от применения в ядре механизмов защиты, которые ранее считались достаточными. В итоге исследователями была продемонстрирована возможность совершения атаки Foreshadow в системах с относительно старыми ядрами, в которых включены все имеющиеся режимы защиты от Foreshadow, а также с новыми ядрами, в которых отключена только защита от Spectre-v2 (используется опция ядра Linux nospectre_v2).

Было обнаружено, что эффект упреждающей загрузки не связан с программными инструкциями prefetch или аппаратным эффектом упреждающей загрузки в процессе доступа к памяти, а возникает при спекулятивном разыменовании регистров пространства пользователя в ядре. Подобное неверное толкование причины возникновения уязвимости изначально привело к предположению, что утечка данных в Foreshadow может произойти только через кэш L1, в то время как наличие в ядре определённых отрывков кода (prefetch-гаджетов) может способствовать утечке данных вне L1-кэша, например, в кэш L3.

Для блокирования атаки Foreshadow через кэш L3 показал эффективность метод защиты Spectre-BTB (Branch Target Buffer), реализованный в наборе патчей retpoline. Таким образом, исследователи считают необходимым оставление retpoline включённым даже на системах с новыми CPU, в которых уже имеется защита от известных уязвимостей в механизме спекулятивного выполнения инструкций CPU. При этом представители Intel завили, что не планируют добавлять в процессоры дополнительные меры защиты от Foreshadow и считают достаточным включения защиты от атак Spectre V2 и L1TF (Foreshadow).

Источник: https://www.opennet.ru/opennews/art.shtml?num=53513

Добавить комментарий