Federacy的一名研究人员发布了一项报告,该报告分析了公开仓库中Docker镜像的漏洞。24%的镜像发现了明显的漏洞,其中基于Ubuntu的镜像漏洞最多,而基于Debian的镜像漏洞最少。
这项研究扫描了133个公开Docker仓库中的91个,其中每个仓库都有一个添加‘latest’标记的镜像,底层的镜像是一个主Linux分发版本并且带有可运行的包管理器。这里,使用了一个修改过的vuls开源漏洞扫描器来扫描镜像。vuls是用Go语言编写的,支持Linux和FreeBSD。数据是通过Federacy内部构建的工具进行分析的。鉴于vuls还不支持Alpine和静态二进制文件,它们就从本次分析中排除了出去。计分是按照CVSS v2标准计算得出的。
在扫描到的所有镜像中,其中的24%存在较为明显的漏洞,在这些漏洞中,11%的风险等级为高,13%的风险为中等,剩余的被视为潜在漏洞。扫描的Linux分发版本包括Ubuntu、Debian和RHEL。基于Ubuntu的镜像在严重漏洞总数上的占比最高(27%),而Debian则是漏洞最少的分发版本(8%)。但是,基础的Ubuntu镜像并未包含任何已知的漏洞,这也就是说,所报告的这些漏洞是因为镜像创建者安装了其他的包和/或配置发生了变更引发的。另外,在官方仓库中,Debian是占据主导地位的基础分发镜像(79%),Ubuntu占据了16%,而RHEL与这两者相比,其样本要小得多(4%)。
在较新的Debian和Ubuntu释放版本中,所发现的问题都更少一些。其中的一个原因可能是在较新的分发版本中,安装的包更少,因此所造成的攻击面(attack surface)就会更小。在此之前,有一份类似的报告指出了Docker Hub镜像上30%的高优先级漏洞。
整体而言,最常见的漏洞是SSL Death Alert,对于Ubuntu也是如此,这种漏洞可能会导致基于GnuTLS、OpenSSL和NSS编译的软件产生DoS攻击,这样的软件就包括nginx。而对于Debian,最常见的是一个很严重的漏洞,但是它不太可能影响到大多数人,因为它涉及到缓存计时攻击(timing attacks)和对系统的本地访问。
对于Docker镜像扫描来说,vuls并不是唯一可用的扫描器。vuls在运行时会查询包管理器,从而得到安装的包、版本和变更日志。然后,它会将变更日志CVE与国际漏洞数据库(National Vulnerability Database,NVD)进行比对。另外的一个扫描器是Clair,它被Quay.io镜像库和Kubernetes社区所采用,用于它们所维护的所有镜像的扫描。除此之外,还有商业供应商比如Twistlock,它与各种云平台实现了集成。
尽管这个报告讨论了镜像所存在的风险,但是并没有提及如何解决它们的细节。其中的一些建议就是在镜像的构建过程中安装包更新、在包运行的时候自动更新以及在镜像的构建过程中添加漏洞分析过程。还有一个建议就是使用Alpine Linux或类似的分发版本,或者是构建静态二进制的镜像。
本文转自d1net(转载)