运行不受信任的 docker 映像时的攻击向量

信息安全 码头工人
2021-08-22 14:21:50

如果我正在运行用户提交的 docker 映像,可能的攻击向量是什么,例如通过docker pull FOO; ... docker run FOO其中 FOO 是用户提交的包含 Docker Hub 存储库名称的字符串进行拉取?

不是简单地docker 容器中运行不受信任的代码的问题。实际上,我现在已经足够了解它的安全含义了。与运行不受信任的图像相关的其他攻击向量是什么?

2个回答

根据 docker 守护进程的配置,恶意容器可能会通过多种方式损坏主机或网络上的其他容器。

  • 默认情况下,所有容器共享同一个网络。因此,恶意容器可以尝试攻击其他容器。这可能包括像 ARP 中毒这样的攻击,具体取决于提供给容器的权限。
  • 在网络方面,流氓容器在您的环境中具有潜在的特权地位,并可能试图攻击连接网络上的其他系统。
  • 恶意容器可能会尝试提升权限以危害主机操作系统。这通常是通过尝试利用主机内核中的内核漏洞来实现的。关于容器隔离的重要一点是所有正在运行的容器共享同一个内核。
  • 需要注意的是,如果内核向容器公开了任何敏感信息(例如来自 /proc 文件系统的信息),则流氓容器可能会访问这些信息。
  • 如果容器使用某些配置执行,例如--privileged或将 docker 套接字映射到容器中,则流氓容器接管主机变得微不足道。

如果您有兴趣,我建议您阅读 docker 的 CIS 安全基准以获得更多信息和建议,以加强您的安装。

这取决于 docker 的特定版本和您正在运行的容器。以及你如何使用你的容器。

虽然梦想是容器与主机隔离,但有时会发现允许容器获得对主机系统的 root 访问权限的错误或漏洞,或者更常见的是能够损坏主机。破坏主机的简单方法:

  • 获取容器以在主机上导致内核崩溃。
  • 拒绝服务(容器可以占用各种资源来饿死主机的其他系统)。
  • 开发人员,也许是愚蠢的,将卷安装为读/写,而危险的容器会损坏或遮盖某些东西。

容器的角色还增加了额外的安全漏洞:

  • 假设一个微型代理 docker 容器是一个中毒的图像。突然间,您可能会有一个入侵者跟踪网络中的所有请求并确定您的拓扑。
  • 或者,您的容器可能会在加密的专用网络上相互通信且无需身份验证。一个中毒​​图像作为您的自定义容器之一的层是破坏整个系统的关键。
  • 或者,您的 Vault docker 容器可能是 rouge 映像。现在你只是将你的密钥提供给一个虚假的容器。