Comments 8
Почему везде "гипервизор" в единственном числе? Какой-то конкретный имеется в виду? Hyper-V?
А в целом понятно, что гипервизор даёт ещё один уровень изоляции процессов друг от друга ценой бОльших ограничений. Чтобы достучаться до разделяемых физических ресурсов, нужно "пробить" не только атакуемое приложение и ОС, но ещё и гипервизор.
Кроме того, если при обнаружении уязвимости, связанной с эксплуатацией в общей реализации, поддерживающей HTTPS (имеется ввиду OpenSSL и Heartbleed), то этот самый HTTPS может стать хакерским шлюзом, пока вся система не будет исправлена.
Можете пояснить?
Если кратко:
- В случае контейнеров безопасность обеспечивается средствами ОС, а точнее — за счет того, что каждый контейнер работает от отдельного пользователя без прав администратора.
- В случае гипервизора безопасность обеспечивается тем, что разные сервисы работают на разных виртуальных машинах (т.е. каждая запущенная система — виртуализируется).
В случае хакерской атаки, придется проходить разные уровни защиты:
- Для контейнера необходимо воспользоваться уязвимостью вида "повышение прав до уровня администратора"
- Для гипервизора — одной на выбор:
2.1 Или воспользоваться багой, которая позволит вирусу убежать на хост, см. например уязвимость VMWare.
2.2. В некоторых случаях — требуется сначала поднять уровень привилегий до администратора, а потом воспользоваться дырой выше. - В обоих случаях — необходимо еще как-то уметь атаковать сам Http сервис, однако здесь атаки абсолютно одинаковые для обоих технологий: и для контейнеризации, и для виртуализации.
Однако, есть еще небольшой нюанс: в случае контейнеров каждый сервис сидит в отдельном контейнере. В случае честной виртуализаций это потребовало бы на каждый сервис держать в памяти еще одну операционку (с ядром, кешем файловой системы, и применять подобного рода оптимизации), что требует в разы больше ресурсов. Более того — не получится дедуплицировать файлы на уровне файловой системы и т.д. В итоге, виртуализация вырождается в гибрид — на каждой виртуальной машине находится несколько сервисов от одной команды/проекта/компании. То есть для атаки соседних сервисов можно как ломать гипервизор (тогда будет полный контроль), так и ломать контейнер (в этом случае под удар попадут только соседние сервисы).
И самое важное: Http, OpenSsl, Heartbleed тут абсолютно не при чем.
Еще интересный момент — в iOS приложения работают именно по модели контейнеров, т.е. каждое приложение — от отдельного пользователя.
В qemu, который чаще всего применяется в качестве обертки над KVM, находили, например, уязвимость в драйвере эмулятора floppy-дисковода.
В Xen тоже не так давно находили уязвимости в подсистеме выделения и обработки памяти.
Эти уязвимости позволяют получить доступ к хост-машине злоумышленнику, действующему из виртуальной машины.
Автор статьи не потрудился изучить вопрос глубоко, и написал то, что думает, а не как есть на самом деле.
Безопасность технологий: виртуальные серверы против контейнеров