Исследователь-безопасник София Д’Антуан (Sophia D’Antoine) из Trail of Bits опубликовала в блоге компании описание нового метода передачи данных между изолированными виртуальными машинами, процессы которых исполняются на одном физическом процессоре (так называемый метод аппаратного стороннего канала).

Создание стороннего канала для виртуальных машин не является чем-то новым. Существуют атаки, основанные на том, что виртуальные машины, запущенные на одной и той же физической машине, используют одно и то же аппаратное обеспечение — в частности, кэш-память процессора. Так как каждый процесс системы способен управлять состоянием кэша с помощью команд выгрузки и загрузки содержимого оперативной памяти в кэш-память, одна виртуальная машина может извлекать из кэша содержимое памяти другой виртуальной машины. Подобные атаки применимы для кражи ключей шифрования, идентификации физической машины из виртуальной машины в облаке, прямого обмена данными между виртуальными машинами через физический уровень.

Атака через сторонний канал

Метод стороннего канала, предложенный Д’Антуан, заключается в использовании артефактов процессорного конвейера, возникающих при оптимизации порядка исполнения инструкций (out-of-order execution). Эксплойт помещает в конвейер поток инструкций, провоцирующий изменение порядка исполнения. Если на том же процессорном ядре исполняется поток из другой виртуальной машины, изменение порядка исполнения приводит к тому, что данные из одного потока используются при обработке другого потока. Таким образом, сравнивая полученный результат исполнения инструкций с ожидаемым результатом, эксплойт получает данные, принадлежащие другой виртуальной машине.

Исследователь отмечает, что модель памяти архитектуры x86/64 относится к строгим, это означает, что даже при изменении порядка исполнения инструкций конвейер будет соблюдать порядок инструкций загрузки и выгрузки из памяти. Но при этом могут перемешиваться команды загрузки и выгрузки, относящиеся к разным потокам, что и позволяет одному потоку «воровать» данные другого.

Перемешивание store и load разных потоков

«Вывод в том, что, даже если ваша виртуальная машина изолирована от чужих виртуальных машин, конвейер не способен отличить инструкции из ваших процессов от инструкций чужих процессов, и мы можем использовать это в своих интересах», — написала Д’Антуан.

Предложенный метод атаки фактически эксплуатирует фундаментальный изъян в процессорной архитектуре х86/64, что делает затруднительным противодействие ему. Пока нет сообщений о создании эксплойта доказательства концепции.

Категории: Уязвимости

Leave A Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

  *