Найден метод обхода механизма защиты AMD Secure Encrypted Virtualization
26 мая 2018 года
Группа исследователей из Общества имени Фраунгофера разработали технику атаки SEVered, позволяющую обойти механизм защиты AMD Secure Encrypted Virtualization (AMD SEV) и получить полный доступ к зашифрованному содержимому памяти виртуальной машины, защищённой при помощи SEV.
Напомним, что технология SEV присутствует в последних поколениях процессоров AMD для серверных систем (AMD Epyc и Ryzen Pro) и позволяет защитить виртуальные машины от компрометации со стороны гипервизора или администратора хост системы. Суть метода защиты в интеграции в архитектуру виртуализации AMD-V возможности для прозрачного шифрования памяти виртуальных машин, при которой доступ к расшифрованным данным имеет только текущая гостевая система, а остальные виртуальные машины и гипервизор при попытке обращения к этой памяти получают зашифрованные данные.
Предложенный исследователями метод атаки позволяет в случае компрометации системы виртуализации и получения контроля за гипервизором извлечь в открытом виде все данные, находящиеся в памяти виртуальных машин, защищённых при помощи AMD SEV. Для совершения атаки не требуется физический доступ к оборудованию или возможность влияния на процессы в атакуемой виртуальной машине. Достаточно наличия виртуальной машины с любым сетевым сервисом (например, HTTP, SSH, FTP или почтовый сервер), отдающим через сетевые соединения данные, присутствующие в зашифрованной памяти виртуальной машины.
В качестве демонстрации приведён пример атаки на web-сервер, отдающий HTML-страницы. При получении атакующими контроля за гипервизором наличие подобного сервиса позволяет полностью восстановить содержимое зашифрованной памяти гостевой системы. Атака состоит из двух стадий:
На первой стадии выполняется идентификация ресурсов - определяются страницы физической памяти (GPA, Guest Physical Address), в которых находятся отдаваемые через сетевой сервис данные. Процесс трансляции адресов в виртуальных машинах напрямую скрыт от гипервизора из-за использования SEV-шифования, но имеются методы определения страниц памяти на основе субъективного сопоставления активности в памяти и сетевом сервисе, которые можно комбинировать для повышения точности определения принадлежности ресурса.
На второй стадии выполняется непосредственно извлечение данных из памяти виртуальных машин. На стороне гипервизора в HPT (Host Page Table) выполняется изменение маппинга GPA (Guest Physical Address) в HPA (Host Physical Address), при котором вместо адреса отдаваемого через сетевой сервис ресурса указываются другие страницы памяти. После изменения отражения страницы памяти сетевой сервис выдаёт вместо ожидаемого контента (например, буфера с HTML-страницей) содержимое другой области физической памяти (в том числе памяти другой гостевой системы). Повторяя операцию и постепенно проходя по всем страницам памяти можно получить содержимое всей зашифрованной памяти гостевых систем.
Атака стала возможной из-за недоработки в архитектуре SEV, в которой трансляция виртуального адреса гостевой системы (GVA, Guest Virtual Address) в физический адрес гостевой системы (GPA, Guest Physical Address) контролируется исключительно самой виртуальной машиной, скрыто от гипервизора, но гипервизор по-прежнему отвечает за трансляцию SLAT (Second Level Address Translation), т.е может производить маппинг физических адресов гостевой системы (GPA) в физические адреса хост-системы (HPA, Host Physical Address). Подобная особенность даёт возможность гипервизору изменять раскладку памяти виртуальной машины.
В качестве полноценной меры для устранения выявленной уязвимости в дополнение к шифрованию требуется интеграция в процессоры системы контроля целостности страниц памяти гостевых систем, по аналогии с тем как это реализовано для анклавов на базе технологии Intel SGX. Так как данный метод защиты оценивается как требующий слишком сильной доработки чипа, при находящейся под вопросом целесообразности внесения таких усложнений для защиты виртуальных машин, предлагается упрощённый обходной путь - добавление проверки хэшей содержимого страниц памяти, привязанных к записям GPA.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.