作为非root用户在Docker容器中运行不受信任的代码有哪些潜在的安全问题?

Mic*_*igh 9 security multi-tenant docker

到目前为止,我已经看到大量的墨水泄露了Docker如何不被隔离以允许任意容器在多租户环境中运行,这是有道理的."如果它是Docker中的root用户,请将其视为主机中的root用户." 那么非root呢?

如果我想获取一些不受信任的代码并在容器中运行它,只要容器作为非root非sudo用户运行,它是否可以安全地完成?做这样的事情有哪些潜在的安全隐患?

我很确定今天有生产应用程序这样做(CI系统,可运行的pastebins),但他们是否幸运没有一个坚定的攻击者或者这在生产系统中是否合理?

P.J*_*P.J 2

从 Docker v1.12 开始,如果以启用了用户命名空间的非 root 用户身份运行容器,则恶意攻击者需要执行两级权限提升才能成为主机上的 root:

  1. 在容器内从非 root 用户升级为 root 用户
  2. 将容器中的 root 用户升级为主机上的 root 用户

因此,如果不受信任的代码以非 root 用户身份在 Docker 容器内运行,攻击者成为主机上的 root 会稍微困难一些,因为我们添加了在容器内成为 root 的额外步骤。与以 root 权限运行容器相比,这是安全性方面的唯一优势。

如果通过两个安全层进行权限升级,以下措施应有助于限制攻击面:

  1. 具有不同信任级别的工作负载(在这种情况下更具体地说是 docker 容器)应通过使用遵循最小权限原则的覆盖网络来相互隔离。
  2. 在强制模式下启用可用的 Linux 安全模块(例如 SELinux、AppArmor)

参考: