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

1868
jms

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

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

13
Да, небольшое исследование подтвердило бы, что VMWare выпустила патчи для исправления Spectre и Meltdown. Гостевая ОС должна быть исправлена, в дополнение к фактическому гипервизору (оба типа) Ramhound 6 лет назад 4
Зависит от уровня виртуализации, я бы сказал. Если вы моделируете виртуальный процессор, то вы, вероятно, в безопасности. Но это не то, что делают современные виртуальные машины. Bergi 6 лет назад 0
Есть ли объяснение, как можно прочитать кэш виртуального процессора? jms 6 лет назад 0
Подробная информация о @jms содержится в каноническом сообщении, которое я связал в своем ответе: `Призрак работает на другом уровне ... В этой атаке злоумышленник обманывает спекулятивное выполнение, чтобы прогнозировать выполнение инструкций ошибочно. В двух словах, предиктор вынужден прогнозировать конкретный результат ветвления, в результате которого запрашивается доступ к памяти вне пределов, который процесс жертвы обычно не запрашивал, что приводило к некорректному спекулятивному выполнению. Затем по побочному каналу извлекает значение этой памяти. Таким образом, память, принадлежащая процессу-жертве, просачивается в вредоносный процесс. Mokubai 6 лет назад 1
@jms Когда он работает, виртуальный ЦП имеет тот же кеш, что и физический ЦП, на котором он работает. David Schwartz 6 лет назад 0
@ Дэвид Шварц действительно? это удивительно Я предполагал, что виртуальная машина более абстрагирована от реального оборудования. jms 6 лет назад 0
@jms Виртуализация является быстрой только потому, что она использует физический ЦП с минимально возможным абстрагированием и использует аппаратное обеспечение ЦП для обеспечения изоляции и абстракции. Такие вещи, как `qemu`, могут выполнять эмуляцию, которая была бы более безопасной, поскольку она не является * аппаратным * ЦП, но она намного медленнее и отличается от виртуализации. Mokubai 6 лет назад 1
@jms добавил в мой ответ кучу информации. Mokubai 6 лет назад 0

2 ответа на вопрос

14
Mokubai

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Я думаю, что вы интерпретировали вопрос как "если затронут центральный процессор, затронет ли виртуальную машину тоже?" Насколько я понимаю, вопрос спрашивает: «Если на хост-процессор * не * не влияют, может ли на виртуальную машину * все же * повлиять?" Не могли бы вы прояснить это? AndreKR 6 лет назад 2
@AndreKR: в настоящее время все неиспользуемые процессорные процессоры подвержены влиянию Spectre; только с помощью обходных путей программного обеспечения вы можете сделать систему своего рода безопасной (и, таким образом, виртуальная машина должна была бы позаботиться об этом, хотя гипервизор может изолировать гостей друг от друга, если центральный процессор предоставляет средства, например, Intel IBRS). Но на обычном процессоре без спекулятивного выполнения никакие уязвимости Spectre не могут существовать между любыми двумя частями программного обеспечения. Суть Спектра - провоцирующее спекулятивное выполнение чего-то, что переводит секретные данные в микроархитектурное состояние; обычные процессоры этого не делают. Peter Cordes 6 лет назад 1
Самое интересное не спекулятивное исполнение. Самое интересное, как процесс может узнать, что находится в кеше - даже в виртуальной машине. jms 6 лет назад 0
@jms доступные атаки по побочным каналам облегчаются и становятся * полезными * благодаря умозрительному выполнению. Процесс может не иметь возможности непосредственного чтения строк кэша, но спекулятивное выполнение может привести к утечке информации, выполняя вычисления, которые помещают в кэш значения, которые могут быть обнаружены или выведены с помощью временных атак. Четвертый раздел «Технического документа» содержит хорошее объяснение: https://spectreattack.com/spectre.pdf Mokubai 6 лет назад 0
0
Ciro Santilli 新疆改造中心 六四事件 法轮功

gem5

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

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

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

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

Похожие вопросы