前十大热门Docker镜像文件都有至少30个以上的漏洞

网络安全公司Snyk发布2019年开源安全报告,其中他们扫描了Docker Hub中10个最受欢迎的Docker镜像文件,发现每一个都包含了存在不少漏洞的系统函数库,Snyk指出,在官方Node.js镜像文件,就提供580个易受攻击的系统函数库,最少的Ubuntu也被检测出含有30个已知漏洞。

Snyk使用自家容器漏洞管理解决方案,扫描10个最受欢迎的Docker镜像文件,寻找其中的已知漏洞。而结果发现,操作系统的漏洞函数库数量第一名是官方的Node.js镜像文件达580个;第二名是Postgres,有89个;接下来则是Nginx有85个;Httpd有69个;MongoDB以及MySQL都有61个;Couchbase、Memcached和Redis有47个;Ubuntu也被检测出含有30个漏洞。

以漏洞最多的Node.js 10镜像文件来说,目前Node.js Runtime长期维护版本是Node.js 10,但其中带有10为标签的node镜像文件node:10,实际上是node:10.14.2-jessie,而jessie标签指的是不再受到维护的Debian过时版本。当开发者在Dockerfile中选用node:10这个版本,则会将582个易受攻击的系统函数库一起带来系统中。

Snyk表示,含有不同标签的镜像文件,包含的漏洞也不同,Node.js 10镜像文件还有node:10-slim以及node:10-alpine。 node:10-slim是一个容量较小的镜像文件,舍去了不必要的相依文件,安全性虽然比起node:10.14.2-jessie好一点,但仍然存在71个易受攻击的系统函数库。 node:10-alpine镜像文件则是更好的选择,提供非常小的基础镜像文件以及一小组系统函数库,Snyk目前没有在这个版本测得存在已知的漏洞,建议开发者可以使用这个Node .js版本。

Snyk提到,Alpine Linux处理漏洞的方式与其他主要发行版不同,其他版本喜欢向后移植(Backporting)补丁集,但是Alpine采用快速发布周期的作法,每个镜像文件版本都会升级系统函数库。使用像是node:10镜像文件,标签无法完全表达实际内容,因此会在Node.js 10的小版本以及补丁发布时,不断的被注意到,进而可能再次被下载使用。

另外,系统函数库中已知的漏洞在2018年大幅的增加,而这影响了部分热门的Linux发行版,诸如Debian、RedHat Enterprise Linux和Ubuntu皆受到冲击。在2018年Snyk在这些发行版中的系统函数库,关注到1,597个有CVE编号的漏洞,而这是2017年数量的4倍,从趋势图看来,严重程度会逐年增加。

Snyk提到,根据分析用户执行扫描的结果,44%存在漏洞的Docker镜像文件有更新更安全的基础镜像文件可用,开发人员只需要升级镜像文件,就能修补漏洞,而有22%存在已知漏洞的Docker镜像文件,只需要简单地重新构建,就能减少漏洞数量。