может ли уязвимость безопасности в виртуальной машине быть?

13

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

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


источник
4
Да, небольшое исследование подтвердило бы, что VMWare выпустила патчи для исправления Spectre и Meltdown. Гостевая ОС должна быть исправлена, в дополнение к фактическому гипервизору (оба типа)
Ramhound
Зависит от уровня виртуализации, я бы сказал. Если вы моделируете виртуальный процессор, то вы, вероятно, в безопасности. Но это не то, что делают современные виртуальные машины.
Берги
Есть ли объяснение, как можно прочитать кэш виртуального процессора?
1
@jms подробности в каноническом посте, который я связал в своем ответе: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.
Мокубай
1
@jms Виртуализация является быстрой только потому, что она использует физический ЦП с минимально возможным абстрагированием и использует аппаратное обеспечение ЦП для обеспечения изоляции и абстракции. Такие вещи qemuмогут сделать эмуляцию, которая будет более безопасной, поскольку это не аппаратный процессор, но он намного медленнее и отличается от виртуализации.
Мокубай

Ответы:

14

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

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

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

Security.SE имеет канонический Q & A относительно этого и упоминает VM:

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

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

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

Кроме того, снова из Steffen , Meltdown и Spectre работают с контейнерами, так как контейнеры опираются на ядро ​​хоста.

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

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

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

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

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

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

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

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

Мокубай
источник
2
Я думаю, что вы интерпретировали вопрос как "если затронут центральный процессор, будет ли затронута и виртуальная машина?" Как я понимаю , вопрос, он спрашивает : «если хост процессор не влияют, может VM все еще будет затронут?» Не могли бы вы прояснить это?
AndreKR
1
@AndreKR: в настоящее время все неиспользуемые процессорные процессоры подвержены влиянию Spectre; только с помощью обходных путей программного обеспечения вы можете сделать систему в некотором роде безопасной (и, таким образом, виртуальная машина должна была бы позаботиться об этом, хотя гипервизор может изолировать гостей друг от друга, если центральный процессор предоставляет средства, например, Intel IBRS). Но на обычном процессоре без спекулятивного выполнения никакие уязвимости Spectre не могут существовать между любыми двумя частями программного обеспечения. Суть Спектра - провоцирующее спекулятивное выполнение чего-то, что переводит секретные данные в микроархитектурное состояние; обычные процессоры этого не делают.
Питер Кордес
Самое интересное не спекулятивное исполнение. Самое интересное, как процесс может узнать, что находится в кеше - даже в виртуальной машине.
@jms доступные атаки по побочным каналам облегчаются и становятся полезными благодаря умозрительному исполнению. Процесс может не иметь возможности непосредственного чтения строк кэша, но спекулятивное выполнение может привести к утечке информации, выполняя вычисления, которые помещают в кэш значения, которые могут быть обнаружены или выведены с помощью временных атак. Четвертый
Mokubai
0

gem5

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

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

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

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

Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件
источник