Я использую виртуальную машину/контейнеры. Насколько я уязвим?

Я использую виртуальную машину/контейнеры. Насколько я уязвим?

Возможно ли, что виртуальная машина, такая как VirtualBox, имеет уязвимость безопасности "spectre"? Я думаю, что виртуальная машина может выполнять выполнение вне очереди, но, по моему мнению, невозможно заглянуть в кэш, чтобы прочитать результат.

Есть ли какое-либо объяснение, как можно прочитать кэш виртуального процессора?

решение1

Да, Spectre может пересекать границы хост/гость, гость/хост и гость/гость, поскольку это уязвимость на уровне ЦП, которая означает, что потенциально конфиденциальная информация может быть передана через все, что работает на ядре ЦП.

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

Большинство крупных провайдеров уже должны были устранить эти недостатки настолько хорошо, насколько это было возможно, но эта проблема будет с нами еще какое-то время.

Security.SE имеетканонические вопросы и ответыотносительно этого и упоминаются виртуальные машины:

Я использую виртуальную машину/контейнеры. Насколько я уязвим?

СогласноОтвет Штеффена Ульриха

  • Атаки Meltdown не затрагивают виртуальные машины, а только вызывают утечку памяти ядра в локальные процессы.
  • Spectre может работать на виртуальных машинах.

Также, изШтеффен снова, Meltdown и Spectre работают с контейнерами, поскольку контейнеры полагаются на ядро ​​хоста.

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

Виртуализация быстра только потому, что она использует физический процессор с минимально возможной абстракцией и полагается на аппаратное обеспечение процессора для обеспечения изоляции. Такие вещи, как qemu, могут делатьэмуляциячто было бы безопаснее, так как это не аппаратный процессор, но этомногомедленнее и отличается от виртуализации.

ИзSecurity.se канонический постснова:

Spectre работает на другом уровне и не позволяет получить доступ к данным пространства ядра из пространства пользователя. В этой атаке злоумышленник обманывает спекулятивное выполнение, чтобы предсказать ошибочное выполнение инструкций. В двух словах, предсказатель принуждается предсказывать определенный результат ветвления (если -> true), что приводит к запросу на доступ к памяти за пределами выделенного диапазона, который процесс-жертва обычно не запросил бы, что приводит к неправильному спекулятивному выполнению. Затем по стороннему каналу извлекает значение этой памяти. Таким образом, память, принадлежащая процессу-жертве, попадает во вредоносный процесс.

Итак, поскольку виртуальная машина работает на реальном оборудовании ЦП, и все, что ей нужно сделать, это запустить определенный цикл для «обучения» спекулятивного механизма выполнения. Затем она может использовать точную синхронизацию для наблюдения за кэшами на предмет определенных шаблонов доступа, указывающих на хостовый или гостевой (или другой виртуальный) процесс, который она хочет использовать.

Таким образом, это означает, что машина может быть использована в любом направлении: от хоста к виртуальной машине, от виртуальной машины к хосту и от виртуальной машины к виртуальной машине.

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

Если вам нужна «безопасная» виртуальная машина, то вам нужно гарантировать, что ее ядра изолированы. Единственным реальным способом заблокировать эту атаку было бы «заставить» хост и виртуальные машины использовать только определенные ядра, чтобы они никогда не работали на одном и том же оборудовании, но это привело бы к эффективному увеличению стоимости, поскольку вы не смогли бы иметь столько виртуальных машин на данном хосте. Вы никогда не смогли бы обойтись без запуска большего количества виртуальных машин, чем у вас есть ядер, что, как я ожидаю, будет сделано на серверах с «низкой нагрузкой», поскольку многие системы простаивают 90% своего срока службы.

решение2

Симулятор gem5 имитирует микроархитектуру ЦП и может использоваться для изучения Spectre

Если вы заинтересованы в изучении/воспроизведении уязвимостей исключительно с помощью эмуляции, без использования центрального процессора, я не думаю, что QEMU достаточно подробен, чтобы наблюдать за ними, поскольку он не имитирует конвейер ЦП.

драгоценный камень5Однако он используется для оценки производительности системы в исследованиях и разработках и моделирует достаточно внутренних компонентов ЦП, чтобы вы могли наблюдать Spectre в полностью чистой и контролируемой среде.

Отличная демонстрация x86_64 с визуализацией опубликована по адресу:http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html

Недостатком gem5 является то, что он намного медленнее QEMU, но моделирование более детальное.

Связанный контент