LVI - новый класс аттак на механизм спекулятивного выполнения

Угрозы нулевого дня, вспышки эпидемий и всё, что ещё не изучено.
Ответить
Аватара пользователя
HADD-NEELS
Сообщения: 22782
Зарегистрирован: 12 окт 2016, 18:17

LVI - новый класс аттак на механизм спекулятивного выполнения

Сообщение HADD-NEELS »

LVI - новый класс аттак на механизм спекулятивного выполнения в CPU

11.03.20
Обнародованы сведения о новом классе атак LVI (Load Value Injection, CVE-2020-0551) на механизм спекулятивного выполнения в CPU Intel, которые могут использоваться для организации утечки ключей и секретных данных из анклавов Intel SGX и других процессов.

Новый класс атак основан на манипуляциях с теми же микроархитектурными структурами, что и в атаках MDS (Microarchitectural Data Sampling), Spectre и Meltdown. При этом новые атаки не блокируются существующими методами защиты от Meltdown, Spectre, MDS и других подобных атак. Для обеспечения эффективной защиты от LVI требуется внесение аппаратных изменений в CPU. При организации защиты программным путём, через добавление компилятором инструкции LFENCE после каждой операции загрузки из памяти и замену инструкции RET на POP, LFENCE и JMP, фиксируются слишком большие накладные расходы - по оценке исследователей полная программная защита приведёт к снижению производительности в 2-19 раз.

Частично, трудность блокирования проблемы компенсируется тем, что в настоящее время атака носит больше теоретический, чем практический характер (атака теоретически возможна, но очень трудна в реализации и воспроизводима лишь в синтетических тестах). Компания Intel присвоила проблеме умеренный уровень опасности (5.6 из 10) и выпустила обновление прошивки и SDK для окружения SGX, в которых попыталась блокировать проведение атаки обходным путём. Предложенные методы атаки пока применимы только к процессорам Intel, но не исключается возможность адаптации LVI и для других процессоров, к которым применимы атаки класса Meltdown.

Проблема была выявлена в апреле прошлого года исследователем Джо Ван Балком (Jo Van Bulck) из Лёвенского университета, после чего при участии 9 исследователей из других университетов, были разработаны пять базовых методов совершения атак, каждый из которых допускает существование более специфичных вариантов. Независимо в феврале этого года исследователи из компании Bitdefender также обнаружили один из вариантов атаки LVI и сообщили о нём в Intel. Варианты атак отличаются использованием различных микроархитектурных структур, таких как буфер хранения (SB, Store Buffer), буфер заполнения (LFB, Line Fill Buffer), буфер переключение контекста FPU и кэш первого уровня (L1D), ранее применяемых в таких атаках как ZombieLoad, RIDL, Fallout, LazyFP, Foreshadow и Meltdown.

[CENTER][IMG]https://www.opennet.ru/opennews/pics_base/0_1583907341.png[/IMG][/CENTER]

Основным отличием LVI от атак MDS является то, что MDS манипулирует определением содержимого микроархитектурных структур, остающихся в кэше после спекулятивной обработки исключений (fault) или операций load и store, в то время как атаки LVI позволяют добиться подстановки данных атакующего в микроархитектурные структуры для влияния на последующее спекулятивное выполнения кода жертвы. При помощи указанных манипуляций атакующий может извлечь содержимое закрытых структур данных в других процессах при исполнении определённого кода на целевом ядре CPU.

[CENTER][IMG]https://www.opennet.ru/opennews/pics_base/0_1583907379.png[/IMG][/CENTER]

Для эксплуатации проблемы в коде процесса-жертвы должны встречаться специальные последовательности кода (гаджеты), в которых загружается контролируемое атакующим значение, а загрузка этого значения приводит к возникновению исключений (fault, abort или assist), отбрасывающих результат и повторно выполняющих инструкцию. При обработке исключения возникает спекулятивное окно, во время которого происходит утечка обрабатываемых в гаджете данных. В частности, процессор начинает выполнять в спекулятивном режиме кусок кода (гаджет), потом определяет, что предсказание не оправдалось и откатывает операции в исходное состояние, но обработанные в процессе спекулятивного выполнения данные оседают в кэше L1D и микроархитектурных буферах и доступны для извлечения из них с использованием известных методов определения остаточных данных по сторонним каналам.

Исключение "assist", в отличие от "fault", обрабатывается внутри процессора без вызова программных обработчиков. Assist может возникнуть, например, когда требуется обновить бит A (Accessed) или D (Dirty) в таблице страниц памяти. Главная сложность проведения атаки на другие процессы в том, как инициировать возникновение assist, манипулируя процессом жертвы. В настоящее время не существует надёжных способов сделать это, но в будущем не исключается их нахождение. Возможность совершения атаки пока подтверждена только для анклавов Intel SGX, остальные сценарии являются теоретическими или воспроизводимыми в синтетических условиях (требуется добавление в код определённых гаджетов)
[CENTER][IMG]https://www.opennet.ru/opennews/pics_base/0_1583907394.png[/IMG]



[IMG]https://www.opennet.ru/opennews/pics_base/0_1583907416.png[/IMG]
[/CENTER]
Возможные векторы атак:
  • Утечка данных из структур ядра в процесс на уровне пользователя. Имеющаяся в ядре Linux защита от атак класса Spectre 1, а также механизм защиты SMAP (Supervisor Mode Access Prevention) существенно уменьшают вероятность атаки LVI. Внесение дополнительной защиты в ядро может потребоваться при выявления в будущем более простых методов проведения атаки LVI.
  • Утечка данных между разными процессами. Для атаки требуется наличие определённых фрагментов кода в приложении и определение метода формирования исключения в целевом процессе.
  • Утечка данных из хост-окружения в гостевую систему. Атака отнесена к категории слишком сложных, требующих выполнения различных труднореализуемых шагов и предсказаний активности в системе.
  • Утечка данных между процессами в разных гостевых системах. Вектор атаки близок к организации утечки данных между разными процессами, но дополнительно требует выполнения сложных манипуляций для обхода изоляции между гостевыми системами.
Исследователями опубликовано несколько прототипов с демонстрацией принципов проведения атаки, но они пока непригодны для совершения реальных атак. Первый пример позволяет перенаправить спекулятивное выполнение кода в процессе-жертвы по аналогии с возвратно-ориентированным программированием (ROP, Return-Oriented Programming). В данном примере в качестве жертвы выступает специально подготовленный процесс, содержащий необходимые гаджеты (применение атаки к реальным сторонним процессам затруднено). Второй пример позволяет вклиниться в вычисления при шифровании AES внутри анклава Intel SGX и организовать утечку данных во время спекулятивного выполнения инструкций для восстановления значения применяемого для шифрования ключа.

[CENTER][MEDIA=youtube]goy8XRXFlh4[/MEDIA][/CENTER]

OpenNet
Ответить

Вернуться в «Новости угроз безопасности»