Pull to refresh

Comments 8

Почему везде "гипервизор" в единственном числе? Какой-то конкретный имеется в виду? Hyper-V?


А в целом понятно, что гипервизор даёт ещё один уровень изоляции процессов друг от друга ценой бОльших ограничений. Чтобы достучаться до разделяемых физических ресурсов, нужно "пробить" не только атакуемое приложение и ОС, но ещё и гипервизор.

> нужно «пробить» не только атакуемое приложение и ОС, но ещё и гипервизор.

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

Сходу сложно такие представить, но, да, не исключено.

Кроме того, если при обнаружении уязвимости, связанной с эксплуатацией в общей реализации, поддерживающей HTTPS (имеется ввиду OpenSSL и Heartbleed), то этот самый HTTPS может стать хакерским шлюзом, пока вся система не будет исправлена.

Можете пояснить?

Если кратко:


  1. В случае контейнеров безопасность обеспечивается средствами ОС, а точнее — за счет того, что каждый контейнер работает от отдельного пользователя без прав администратора.
  2. В случае гипервизора безопасность обеспечивается тем, что разные сервисы работают на разных виртуальных машинах (т.е. каждая запущенная система — виртуализируется).

В случае хакерской атаки, придется проходить разные уровни защиты:


  1. Для контейнера необходимо воспользоваться уязвимостью вида "повышение прав до уровня администратора"
  2. Для гипервизора — одной на выбор:
    2.1 Или воспользоваться багой, которая позволит вирусу убежать на хост, см. например уязвимость VMWare.
    2.2. В некоторых случаях — требуется сначала поднять уровень привилегий до администратора, а потом воспользоваться дырой выше.
  3. В обоих случаях — необходимо еще как-то уметь атаковать сам Http сервис, однако здесь атаки абсолютно одинаковые для обоих технологий: и для контейнеризации, и для виртуализации.

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


И самое важное: Http, OpenSsl, Heartbleed тут абсолютно не при чем.


Еще интересный момент — в iOS приложения работают именно по модели контейнеров, т.е. каждое приложение — от отдельного пользователя.

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

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

Уязвимости в гипервизорах находят, и немало.
В qemu, который чаще всего применяется в качестве обертки над KVM, находили, например, уязвимость в драйвере эмулятора floppy-дисковода.
В Xen тоже не так давно находили уязвимости в подсистеме выделения и обработки памяти.
Эти уязвимости позволяют получить доступ к хост-машине злоумышленнику, действующему из виртуальной машины.

Автор статьи не потрудился изучить вопрос глубоко, и написал то, что думает, а не как есть на самом деле.
Sign up to leave a comment.