Docker 安全非事件


本页列出了 Docker 缓解的安全漏洞,例如 在 Docker 容器中运行的进程从未容易受到该错误的影响 - 甚至在此之前 它被修复了。这假定容器在不添加额外功能的情况下运行 或不以 .--privileged

下面的列表甚至还不完整。相反,它是少数几个例子中的一个 我们实际上注意到的 bug 已经引起了安全审查并公开 披露的漏洞。很有可能,没有 报告的数量远远超过那些已经报告的人。幸运的是,由于 Docker 的 默认情况下,通过 AppArmor、secComp 和 Drop 功能进行安全保护,IT 可能缓解未知错误和缓解已知错误一样。

缓解的 Bug:

  • CVE-2013-19561957195819591979CVE-2014-40145206520779707975CVE-2015-29258543CVE-2016-31343135 等: 非特权用户命名空间的引入导致 通过为非特权用户提供合法的攻击面 访问以前仅限 root 的系统调用,例如 .所有这些 CVE 是由于引入用户命名空间而导致的安全漏洞示例。 Docker 可以使用用户命名空间来设置容器,但随后不允许 进程,通过 default seccomp 配置文件,使这些漏洞无法利用。mount()
  • CVE-2014-0181CVE-2015-3339 漏洞: 这些 bug 需要存在 setuid 二进制文件。Docker 禁用 setuid 二进制文件,以及 其他机制。NO_NEW_PRIVS
  • CVE-2014-4699 漏洞: 中的错误可能允许权限提升。Docker 使用 apparmor、seccomp 和丢弃 . 那里的保护层是三倍!ptrace()ptrace()CAP_PTRACE
  • CVE-2014-9529 漏洞: 一系列精心编制的调用可能导致内核 DoS/内存损坏。 Docker 使用 seccomp 在容器内禁用。keyctl()keyctl()
  • CVE-2015-32144036:这些是 常见虚拟化驱动程序中的错误,可能允许来宾操作系统用户 在主机操作系统上执行代码。利用它们需要访问虚拟化 设备。Docker 在运行时隐藏对这些设备的直接访问 没有。有趣的是,这些似乎是容器 比 VM “更安全”,这与 VM 的普遍看法背道而驰 比容器“更安全”。--privileged
  • CVE-2016-0728 漏洞: 构建的调用导致的释放后使用可能导致特权 升级。Docker 使用默认的 seccomp 配置文件。keyctl()keyctl()
  • CVE-2016-2383 漏洞: eBPF 中的一个 bug —— 用于表示 seccomp 等内容的特殊内核内 DSL filters —— 允许任意读取内核内存。系统调用 在 Docker 容器中使用(具有讽刺意味的)seccomp 被阻止。bpf()
  • CVE-2016-313449974998: setsockopt 中存在 、 的 bug,并导致内存损坏/本地权限提升。 这些参数被 阻止,这是 Docker 不允许的 违约。IPT_SO_SET_REPLACEARPT_SO_SET_REPLACEARPT_SO_SET_REPLACECAP_NET_ADMIN

未缓解的错误:

  • CVE-2015-32905157:Bug 内核的不可屏蔽中断处理允许权限提升。 可以在 Docker 容器中利用,因为系统调用是 当前未使用 seccomp 阻止。modify_ldt()
  • CVE-2016-5195 漏洞: 在 Linux 内核的内存子系统中发现争用条件 处理了私有只读内存映射的写入时复制 (COW) 中断, 这允许非特权本地用户获得对只读内存的写入访问权限。 也称为“dirty COW”。部分缓解措施:在某些操作系统上,此漏洞已得到缓解 通过 seccomp 过滤和只读事实的组合。ptrace/proc/self/mem