The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

VMScape - атака на CPU AMD и Intel, обходящая изоляцию между гипервизором и гостевой системой

12.09.2025 09:36

Исследователи из Швейцарской высшей технической школы Цюриха разработали метод атаки VMScape, позволяющий обойти существующую защиту от атак Spectre-BTI (Branch Target Injection) для нарушения изоляции между виртуальной машиной и компонентами гипевизора, работающими в пространстве пользователя (например, QEMU-KVM). Атака может быть использована для определения содержимого памяти подобных компонентов через проведение манипуляций из процесса на стороне гостевой системы.

В памяти компонентов гипервизоров, работающих в пространстве пользователя, могут содержаться такие конфиденциальные данные, как ключи доступа к зашифрованным дисковым разделам. Злоумышленники также потенциально могут использовать подобные компоненты как источник утечки конфиденциальных данных, оставшихся в памяти в результата активности других гостевых систем. Исследователями подготовлен пример эксплоита, позволяющий из гостевой системы на базе KVM извлечь информацию о ключах шифрования из virtio-обработчика на базе QEMU, выполняемого на стороне хост-окружения в пространстве пользователя. Скорость утечки данных из процесса QEMU на системе с CPU AMD Zen 4 составила 32 байта в секунду.

В атаках класса Spectre-BTI (Branch Target Injection) для организации утечки данных используется подстановка значений в буфер адреса ветвления (BTB, Branch Target Buffer), применяемый при предсказании следующей операции ветвления. В ходе атаки создаются условия неверного предсказания перехода при спекулятивном выполнении инструкций. Задача атакующего в том, чтобы при выполнении спекулятивной операции ветвления адрес для перехода был взят из желаемой области памяти. После выполнения спекулятивного перехода, в процессорном кэше остаётся считанный из памяти адрес перехода (под видом адреса считываются необходимые атакующему данные из памяти). Для извлечения информации из кэша может применяться один из способов определения содержимого кэша на основе анализа изменения времени доступа к прокэшированным и не прокэшированным данным.

Процессоры и ядра ОС уже содержат защиту от атак Spectre-BTI, которая блокирует утечки между гипервизором и гостевой системой, а также между разными процессами. Но подобная защита не учитывала то, что компоненты гипервизоров, работающие в пространстве пользователя (например, процесс QEMU), и процессы в гостевой системе, выполняются на одном уровне защиты. Из-за этого записи в буфере адреса ветвления (BTB) при предсказании переходов смешивались для процессов гостевых систем и компонентов гипервизора, работающих в пространстве пользователя.

Для ядра Linux опубликованы корректирующие выпуски 6.16.7, 6.12.47, 6.6.106, 6.1.152, 5.15.193 и 5.10.244, включающие исправление для блокирования атаки программным путём. Защита реализована через вызов процессорных инструкций IBPB (Indirect Branch Prediction Barriers) для сброса состояния блока предсказания переходов после передачи исполнения от виртуальной машины к компонентам гипервизора в пространстве пользователя.

Включение защиты осуществляется через переменную командной строки ядра "vmscape={off|ibpb|force}" (опция ibpb включает защиту только для уязвимых CPU, а force - для всех). Подверженность CPU уязвимости и состояние включения защиты можно оценить через файл "/sys/devices/system/cpu/vulnerabilities/vmscape". Поддерживается два режима защиты: подстановка IBPB после каждой передачи управления от виртуальной машины в пространство пользователя (VMexit); подстановка инструкции IBPB после первой передачи управления от виртуальной машины в пространство пользователя.

Накладные расходы от применения защиты зависят от интенсивности передачи управления в пространство пользователя. При использовании эмулируемых устройств (по умолчанию в QEMU) интенсивность подобных переключений значительно выше, чем при применении виртуализированных устройств, и снижение производительности в среднем оценивается в 10%. При этом накладные расходы также сильно зависят от типа нагрузки, например, в тесте UnixBench на системе Zen 4 наблюдается снижение производительности на 1%, так как число переключений (VMexit) в нём минимально. В тесте на чтение и запись случайных данных с диска на базе virtio накладные расходы достигли 51%.

Уявзимость проявляется на всех процессорах AMD семейства Zen (включая 5 поколение), процессорах Hygon (на базе технологий AMD) и старых процессорах Intel, включая чипы на базе микроархитектуры Coffee Lake (2017 год). В списке частично подверженных уявзимости CPU упоминаются процессоры Intel на базе микроархитектур Cascade Lake и Alder Lake (возможность создания эксплоита для них не подтверждена). В последних поколениях процессоров Intel для изоляции хост-окружения и гостевой системы применяется технология eIBRS, но она лишь частично защищает от воздействия из гостевой системы на буфер с историей переходов (BHB, Branch History Buffer), что не исключает создание атак по подстановке значений через BHB.

Возможность совершения атаки VMScape пока продемонстрирована только на системах с гипервизором KVM и компонентами на базе QEMU (QEMU-KVM), эмулирующими различные устройства в пространстве пользователя. Гипервизор Xen проблеме не подвержен. Оценка VMware, Hyper-V и прочих гипервизоров не производилась, ожидается, что возможность атаки на них будет проанализирована производителями.



  1. Главная ссылка к новости (https://www.theregister.com/20...)
  2. OpenNews: SnailLoad - атака по определению открываемых сайтов через анализ задержек доставки пакетов
  3. OpenNews: CPU AMD Zen 5 подвержены уязвимости, допускающей изменение микрокода и обход изоляции SEV-SNP
  4. OpenNews: Обход защиты от атак Spectre и эксплоит для извлечения данных из памяти другого процесса
  5. OpenNews: BHI - новая уязвимость класса Spectre в процессорах Intel и ARM
  6. OpenNews: GhostRace - атака на механизм спекулятивного выполнения в процессорах Intel, AMD, ARM и IBM
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63868-vmscape
Ключевые слова: vmscape, attach, spectre
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (25) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:51, 12/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Запланированное устаревание серверов.

    Не только Apple играется с этим.

     
     
  • 2.29, Жироватт (ok), 15:34, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Нет смысла руками запланированно устаревать то, что уже и так имеет в себе запланированные софтовые/прошивочные устареватели. Ну и работает 24/7, что тоже вносит вклад в деградацию эклектроники.
     

  • 1.3, Аноним (3), 11:56, 12/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Может пора прекратить играть в изоляции и псевдо-безопасность? Запускайте свой софт, на своём железе.
     
     
  • 2.4, 55109 (?), 12:01, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Больше компов, больше доляров интелю и амд?
     
  • 2.5, Аноним (-), 12:15, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Менеджер Интел, залогинтесь)
    Я понимаю что вам хочется продать "в каждый дом по серверу", но у людей столько денег не будет))
     
     
  • 3.18, Аноним (18), 13:14, 12/09/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 3.23, 12yoexpert (ok), 13:47, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    если все имели дома по коробочке уровня intel n100 - мир был бы чуточку лучше
     
  • 2.6, Аноним (6), 12:15, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    На хостинге тоже всегда будете арендовать физический сервер?
     
     
  • 3.14, Анонисссм (?), 13:02, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >На хостинге тоже всегда будете арендовать физический сервер?

    если ты не джо, которому нужен 1 микро-VPS, то дедики ещё и заметно выгоднее оказываются.

     
  • 3.26, нейм (?), 13:57, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    а почему бы и да
    если на колокейшон свой нюк вместо сервера принести можно б было - я б первым пошел
     
  • 2.7, Аноним (7), 12:29, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Пеките свой хлеб, растите свою пшеницу, ешьте мясо своего мамонта… и другие советы ведущих аналитиков по разделению труда.
     
     
  • 3.19, Аноним (-), 13:29, 12/09/2025 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 2.8, penetrator (?), 12:34, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    в эпоху облачного развода запускаться на физическом сервере он премиз или в ДЦ - это ж не пацански )))
     
  • 2.11, sena (ok), 12:47, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    на своём железе свой софт тоже можно запускать в изолированных контейнерах, чтобы компрометация одного севриса не влекла за собой компрометацию всего сервера
     
  • 2.12, Аноним (12), 12:48, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это ненормально, что у калькулятора есть доступ ко всей системе.
    Любой софт должен запускаться в песочнице, и читать только то, что разрешили.
     
     
  • 3.16, Аноним (16), 13:06, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А по-моему изоляции - это как раз не норма. Вон была идеальная операционка DOS - там у программы был весь компьютер. И это правильно - я как программист хочу рулить всей системой и оборудованием, чтобы решать задачи
     
     
  • 4.17, Аноним (-), 13:09, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > И это правильно - я как программист хочу рулить всей системой и оборудованием,
    > чтобы решать задачи

    Ага, сейчас дискету отформатирую, а потом как начну решать задачи!

     
     
  • 5.27, Аноним (16), 14:00, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так не форматируй дискету, если не надо
     
  • 4.24, Аноним (24), 13:51, 12/09/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.21, Аноним (-), 13:33, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Запускайте свой софт, на своём железе.

    А где взять столько кроватей, чтобы под каждой сервак поставить???
    А если кровать двухэтажная - то второй останется без сервака? Несправедливо как-то получается.
    А если двухспальная, то что тогда?

    Ваше предложение крайне непродуманное!

     

  • 1.15, Someone (??), 13:03, 12/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Я надеюсь что mitigations=off эту байду отменяет.
     
  • 1.20, Аноним (20), 13:29, 12/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Это вам за то, что -не молитесь- забыли про четыре кольца защиты!
     
     
  • 2.22, SKZ (?), 13:45, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    - Невозможно забыть о том, чего не знаешь
    - Примитивная плоская модель памяти - наследие примитивных RISC.
     
     
  • 3.28, Самый Лучший Гусь (?), 14:57, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А лучше ничего и не придумали так что кушайте
     
     
  • 4.30, SKZ (?), 15:36, 12/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Придумали еще во времена мейнфреймов - сегменты. Что в сочетании со страничной трансляцией на i386 давало самую продвинутую систему организации виртуальной памяти в мире. Другое дело, что амуде сегменты покорежило, но отказаться от них полностью не смогло.
     

  • 1.25, SKZ (?), 13:54, 12/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Очевидная фишка для избежания подобных эксцессов - перезагрузка контекста BTB по смене ASID, это должно быть реализуемо без особых проблем. Кэша на несколько кбайт хватило бы.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру