2016-08-10 2 views
5

Допустим, я вытащил новое изображение из репозитория хаба и запустил его, не глядя на содержимое файла docker. Может ли контейнер или изображение повлиять на мой хост любым способом?Docker Host Security - Может ли контейнер запускать опасный код или менять хост изнутри контейнера?

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

ответ

8

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

Условная часть состоит в том, что она может использовать все ваши циклы процессора, она может исчерпать вашу память, она может заполнить ваш диск и может отправлять сетевой трафик с вашего устройства NAT'ed на ваш IP-адрес. Другими словами, по умолчанию, ничто не мешает контейнеру атаковать DoS на вашем хосте.

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

Вы также можете перейти в другое направление и открыть узел контейнеру, эффективно создавая уязвимости безопасности. Это будет включать в себя установку томов хостов, особенно docker.sock внутри контейнера, удаление ограничений возможностей ядра с помощью --privileged и удаление изоляции сети с помощью --net=host. Выполнение любого из них с помощью контейнера отключает защиту, предоставляемую Docker по умолчанию.

Docker имеет более низкий уровень изоляции, чем виртуальная машина, благодаря тому, как он разделяет ядро ​​с хостом. Поэтому, если код, который вы используете, содержит ядро ​​или физический аппаратный эксплойт, который может получить доступ к хосту. По этой причине, если вы используете ненадежный код, вам может понадобиться изучить linuxkit, который обеспечивает легкую операционную систему на основе контейнеров для работы внутри vm. Это используется для обеспечения мобильности os, которая работает под управлением hyperv/xhyve на докере для windows/mac.

+1

Чтобы защитить себя от возможных явных эксплойтов, вы можете посмотреть на https://docs.docker.com/engine/security/security/#/other-kernel-security-features – Ohmen