Да. Spectre может пересекать границы хоста / гостя, гостя / хоста и гостя / гостя, поскольку это недостаток уровня ЦП, который означает, что потенциально чувствительная информация может просочиться через все, что работает на ядре ЦП.
Большинство новостных статей в Интернете говорят о том, что провайдеры облачных услуг больше всего пострадали от этого, поскольку у них есть огромные кластеры виртуализированных систем, которые могут быть использованы для утечки конфиденциальной информации.
К настоящему времени большинство крупных провайдеров должны были быть исправлены с недостатками, насколько это возможно, но это будет проблемой, которая живет с нами в течение некоторого времени.
Security.SE имеет канонический Q & A относительно этого и упоминает VM:
Я использую виртуальную машину / контейнеры, в какой степени я уязвим?
Согласно ответу Штеффена Ульриха
- Атаки распада не пересекают виртуальные машины, а только утечки памяти ядра локальным процессам.
- Spectre может работать через виртуальные машины.
Кроме того, снова из Steffen , Meltdown и Spectre работают с контейнерами, так как контейнеры опираются на ядро хоста.
Виртуальные машины используют реальный процессор в вашей системе с некоторыми привилегированными инструкциями, которые могут быть перенаправлены. Он использует те же кэши и инструкции, что и хост. По сути, это просто еще один уровень физического процессора в вашей системе.
Виртуализация является быстрой только потому, что она использует физический ЦП с минимально возможным абстрагированием и использует аппаратное обеспечение ЦП для обеспечения изоляции. Такие вещи, как qemu, могут делать эмуляцию, которая была бы более безопасной, поскольку это не аппаратный процессор, но он намного медленнее и отличается от виртуализации.
Из канонического поста Security.se снова:
Spectre работает на другом уровне и не разрешает доступ к данным пространства ядра из пространства пользователя. В этой атаке злоумышленник обманывает умозрительное выполнение, чтобы ошибочно выполнить инструкции. В двух словах, предиктор вынужден прогнозировать конкретный результат ветвления (если -> true), что приводит к тому, что запрашивается доступ к внешней памяти, который процесс жертвы обычно не запрашивал, что приводило к некорректному спекулятивному выполнению. Затем по побочному каналу извлекает значение этой памяти. Таким образом, память, принадлежащая процессу-жертве, просачивается в вредоносный процесс.
Таким образом, поскольку виртуальная машина работает на реальном оборудовании ЦП, и все, что ей нужно сделать, это запустить определенный цикл, чтобы «обучить» механизм спекулятивного выполнения. Затем он может использовать точную синхронизацию, чтобы отслеживать кеши для определенных шаблонов доступа, указывающих на процесс хоста или гостя (или другой виртуальной машины), который он хочет использовать.
Таким образом, это означает, что машина может использоваться во всех направлениях. От хоста к виртуальной машине, от виртуальной машины к хосту и от виртуальной машины к виртуальной машине.
Да, это ни в коем случае не легко и трудно осуществить, поскольку ядро ЦП виртуальной машины может меняться по желанию хоста, а хост может также с радостью планировать задачи на разных ядрах, но в течение длительного периода времени достаточно информации может быть утечка, чтобы дать секретный ключ к какой-то важной системе или учетной записи. При наличии достаточного количества времени и некоторого незаметного программного обеспечения все потенциально открыто.
Если вам нужна «безопасная» виртуальная машина, вы должны гарантировать, что ее ядра изолированы. Единственный реальный способ блокировать эту атаку - это заставить компьютер и виртуальные машины использовать только определенные ядра, чтобы они никогда не работали на одном и том же оборудовании, но это привело бы к эффективному увеличению стоимости, поскольку вы не смогли бы иметь столько виртуальных машин на данном хосте. Вы никогда не сможете избежать использования большего количества виртуальных машин, чем у вас есть доступных ядер, что я и ожидал бы сделать на серверах с низкой нагрузкой, так как многие системы простаивают в течение 90% своей жизни.