Docker主机安全性 - 容器可以运行危险代码还是从容器内部更改主机?

时间:2016-08-10 11:10:28

标签: security docker docker-machine

假设我从集线器存储库中提取新映像并运行它而不查看dockerfile的内容。容器或图像能否以任何可能的方式影响我的主机?

请告诉我,因为我将在我的服务器上运行用户输入的图像名称中的图像列表。我担心它是否会影响服务器/主机。

1 个答案:

答案 0 :(得分:8)

默认执行图像时,答案是条件号。内核功能有限,文件系统受限制,进程空间被隔离,并且它位于与主机不同的桥接网络上。任何允许访问主机的内容都是安全漏洞。

条件部分是它可以耗尽你所有的CPU周期,它可以耗尽你的内存,它可以填满你的驱动器,它可以将网络流量从你的机器NAT发送到你的IP地址。换句话说,默认情况下,没有任何东西阻止容器对主机进行DoS攻击。

Docker确实能够限制其中的许多内容,包括限制内存,限制CPU或优先处理进程,以及文件系统的配额解决方案。

您也可以转向其他方向并将主机公开给容器,从而有效地创建安全漏洞。这将包括装载主机卷,尤其是容器内的docker.sock,使用--privileged删除内核功能限制,并使用--net=host删除网络隔离。使用容器执行任何操作都会关闭Docker默认提供的保护。

由于与主机共享内核的方式,Docker确实具有比虚拟机更低的隔离级别。因此,如果您运行的代码包含内核或物理硬件漏洞,则可以访问主机。因此,如果您运行的是不受信任的代码,您可能需要查看linuxkit,它提供了一个基于轻量级容器的操作系统,可以在vm中运行。这用于提供在windows / mac的docker上以hyperv / xhyve运行的moby操作系统。