目前,所有这些似乎都有未修补的组件,并标记为红色https://hub.docker.com/r/library/nginx/tags/
答案1
任何更新到最新版本并应用了所有安全补丁的 Linux 发行版都会存在漏洞。安全补丁通常是在发现漏洞后创建的。并且每个发行版在上游库发布修复程序到将其纳入发行版之间都会存在一定的滞后。当您深入研究列出的许多漏洞时,您通常会发现发行版尚未提供补丁。
镜像包含漏洞并不意味着它可被利用。漏洞通常与各种包含的库有关,这些库在通过任何已发布的端口访问容器时甚至可能不会被调用。
例如,有些列出的漏洞允许将权限从用户提升到 root,但许多容器已经以 root 身份运行,因为 root 用户已添加限制并且只能访问单个应用程序。其他漏洞可能需要库来解析文件,如果您的 Web 服务器不解析来自未知来源的图片,则可能无法对您的容器使用此漏洞。
我个人认为 Docker 只是让一个一直存在但很容易被忽视的问题暴露出来。如果没有这些报告,人们会认为应用所有可用的安全补丁意味着他们已经修复了所有已知的漏洞。如果没有 Docker,他们就会在这些系统上运行应用程序,而各个应用程序之间没有任何隔离,这使得一个应用程序中的漏洞很容易扩展并暴露同一台机器上的所有其他应用程序和包含的数据。
答案2
镜像的安全性取决于其最不安全的组件。所有这些镜像都是从基础镜像构建的,基础镜像中添加了依赖项,然后运行应用程序。如果其中一个依赖项存在漏洞,那么之后的整个堆栈也会存在漏洞。
通过查看标签页面,您可以准确了解哪些组件存在漏洞。例如官方 nginx 镜像。
答案3
有技术论据可以支持您的问题,但我认为问题最终在于 DevOps 模型,因为 Docker 的设计初衷是帮助“开发人员”而不是“运维人员”,它的目的是快速推出代码并“勾选”列表。截至 2017 年初,Docker 的操作难度仍然比许多传统的代码部署方法要大得多,我相信随着它的成熟,这种情况会有所改变,但如果您始终关注速度,那么您将始终错过优秀运营团队可以为您提供的控制 - 这是其中之一。