Возможно ли, чтобы виртуальная машина, такая как VirtualBox, имела «призрак» уязвимости безопасности? Я думаю, что виртуальная машина, возможно, выполняет неупорядоченное выполнение, но, по моему мнению, невозможно посмотреть в кэш, чтобы прочитать результат.
Есть ли объяснение, как можно прочитать кэш виртуального процессора?
Spectre works on a different level ... In this attack, the attacker tricks the speculative execution to predictively execute instructions erroneously. In a nutshell, the predictor is coerced to predict a specific branch result that results in asking for an out-of-bound memory access that the victim process would not normally have requested resulting in incorrect speculative execution. Then by the side-channel, retrieves the value of this memory. In this way memory belonging to the victim process is leaked to the malicious process.
qemu
могут сделать эмуляцию, которая будет более безопасной, поскольку это не аппаратный процессор, но он намного медленнее и отличается от виртуализации.Ответы:
Да. Spectre может пересекать границы хоста / гостя, гостя / хоста и гостя / гостя, поскольку это недостаток уровня ЦП, который означает, что потенциально чувствительная информация может просочиться через все, что работает на ядре ЦП.
Большинство новостных статей в Интернете говорят о том, что провайдеры облачных услуг больше всего пострадали от этого, поскольку у них есть огромные кластеры виртуализированных систем, которые могут быть использованы для утечки конфиденциальной информации.
К настоящему времени большинство крупных провайдеров должны были быть исправлены с недостатками, насколько это возможно, но это будет проблемой, которая живет с нами в течение некоторого времени.
Security.SE имеет канонический Q & A относительно этого и упоминает VM:
Виртуальные машины используют реальный процессор в вашей системе с некоторыми привилегированными инструкциями, которые могут быть перенаправлены. Он использует те же кэши и инструкции, что и хост. По сути, это просто еще один уровень физического процессора в вашей системе.
Виртуализация является быстрой только потому, что она использует физический ЦП с минимально возможным абстрагированием и использует аппаратное обеспечение ЦП для обеспечения изоляции. Такие вещи, как qemu, могут делать эмуляцию, которая была бы более безопасной, поскольку это не аппаратный процессор, но он намного медленнее и отличается от виртуализации.
Из канонического поста Security.se снова:
Таким образом, поскольку виртуальная машина работает на реальном оборудовании ЦП, и все, что ей нужно сделать, это запустить определенный цикл, чтобы «обучить» механизм спекулятивного выполнения. Затем он может использовать точную синхронизацию, чтобы отслеживать кеши для определенных шаблонов доступа, указывающих на процесс хоста или гостя (или другой виртуальной машины), который он хочет использовать.
Таким образом, это означает, что машина может использоваться во всех направлениях. От хоста к виртуальной машине, от виртуальной машины к хосту и от виртуальной машины к виртуальной машине.
Да, это ни в коем случае не легко и трудно осуществить, поскольку ядро ЦП виртуальной машины может меняться по желанию хоста, а хост может также с радостью планировать задачи на разных ядрах, но в течение длительного периода времени достаточно информации может быть утечка, чтобы дать секретный ключ к какой-то важной системе или учетной записи. При наличии достаточного количества времени и некоторого незаметного программного обеспечения все потенциально открыто.
Если вам нужна «безопасная» виртуальная машина, вы должны гарантировать, что ее ядра изолированы. Единственный реальный способ блокировать эту атаку - это заставить компьютер и виртуальные машины использовать только определенные ядра, чтобы они никогда не работали на одном и том же оборудовании, но это привело бы к эффективному увеличению стоимости, поскольку вы не смогли бы иметь столько виртуальных машин на данном хосте. Вы никогда не сможете избежать использования большего количества виртуальных машин, чем у вас есть доступных ядер, что я и ожидал бы сделать на серверах с низкой нагрузкой, так как многие системы простаивают в течение 90% своей жизни.
источник
gem5
Если вы заинтересованы в изучении / воспроизведении уязвимостей исключительно с помощью эмуляции, без использования центрального процессора, я не думаю, что QEMU достаточно детализирован, чтобы наблюдать за ними, поскольку он не моделирует конвейер центрального процессора.
Однако gem5 используется для оценки производительности системы в исследованиях и разработках и имитирует достаточно внутренних ресурсов ЦП, чтобы вы могли наблюдать за Spectre в полностью чистой и контролируемой среде.
Классная демоверсия x86_64 с визуализацией была опубликована по адресу: http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html
Недостатком gem5 является то, что он намного медленнее, чем QEMU, симуляция более детальная.
источник