通过扫描 Docker Hub 中的 400 万个容器镜像,Prevasio 发现 ,其中有 51%的镜像存在高危漏洞,并且有 6432 个镜像包含病毒或恶意程序。
据悉,Prevasio 是一家聚焦容器安全的网络安全创业公司。数月前,这家公司宣布对托管在 Docker Hub 上的 400 万个容器镜像完成了扫描。
扫描结果 令人大吃一惊:
在 400 万个容器镜像中,超过一半的容器镜像存在一个或多个高危漏洞。某种意义上,这些有安全隐患的容器镜像可能被潜在地利用;
6432 个危险镜像占 Docker Hub 公开可利用镜像总数的 0.16%,它们累计被下载了超过 3 亿次;
有些原始的镜像并非恶意的,但是在下载时,它们却被植入脚本来运行挖矿的源代码,在编译后执行。
最大的互联网公共应用仓库:Docker Hub
Prevasio 报告称,“自从 容器技术 在 20 年前被发明以来,世界在如何构建、部署和管理应用上见证了一个革命性的飞跃。”
今天,随着云原生时代的到来,容器技术越来越受欢迎。
目前, Docker Hub 上有超过 400 万个公开的 Docker 容器镜像。据悉,仅在 2020 年 1 月,Docker Hub 中的 Docker 镜像拉取次数(下载)就高达 80 亿,并且还在不断增加。2020 年全年,Docker 镜像的拉取次数(下载)将近 1000 亿次,远远超过了 Google Play 270 万 Android 应用一年 840 亿次的下载次数。
毫无疑问,Docker Hub 已经成为最大的互联网公共应用仓库。
有业内专家对 InfoQ 表示,“虽然镜像仓库的规模呈指数级增长,但是其安全形势却不容乐观。”
在 2019 年,开源安全公司 Snyk 发现,10 大最流行的 Docker 镜像中,每个镜像至少有 30 个安全漏洞。
科技媒体 ZDNet 此前发表了一篇名为《Docker malware is now common, so devs need to take Docker security seriously》的文章。文章开篇写道,“随着云原生技术的流行,网络犯罪团队开始瞄准 Docker 和 Kubernetes 系统。”
以恶意软件为例。过去几年,有些恶意软件会扫描用于 Docker 的服务器,比如 Doki、Ngrok、Kinsing(H2miner)、XORDD OS 、AESDDOS、Team TNT、Xanthe 等。这些恶意软件专门搜寻将 Docker 管理 API 暴露在网上的服务器,利用它们部署恶意的 OS 镜像,从而植入后门或安装加密货币挖矿程序。
Docker Hub 中的安全风险
该专家指出,Docker Hub 中存在四类安全风险:
泛滥的矿机程序;
通过公开的制品库(像 npm 等)传播的恶意程序;
开发者在镜像中大量使用 GoLang、PowerShell 这样的跨平台语言,也给攻击者提供了捷径。攻击者只需通过一种攻击方式和语言就可以在跨平台的主机上随意执行;
一些镜像可能不直接包含恶意程序或漏洞,而是部署了给攻击者提供入侵工具的平台框架或是在运行时刻动态下载攻击脚本,从而避开常规的静态镜像安全扫描。
目前,Docker Hub 中最常见的一类安全风险是加密货币挖矿。比如,在 2018 年,安全厂商 Fortinet 与 Kromtech 发现 17 个受感染的 Docker 容器,它们以公开可下载镜像的形式存在,其中包含可用于挖掘加密货币的程序。后续调查发现,这些镜像的下载次数高达 500 万次,这意味着黑客能将命令注入这些不安全的容器中,从而将相关代码注入到其他合法的 Web 应用程序中。
2020 年 8 月,Palo Alto 安全团队发现有攻击者在 Docker 容器中注入 木马 ,进行劫持挖矿,并使用 Docker Hub 分发恶意镜像。一个名为 azurenql 的 Docker Hub 账号从 2019 年 10 月开始一直处于活动状态,并托管了六个用于包含挖掘 Monero 的恶意木马。镜像中的挖矿木马通过使用 ProxyChains 和 Tor 的网络匿名化工具来逃避网络检测。账户上托管的镜像累计拉取次数超过 200 万,攻击者至少赚取了 36000 美元。
有些容器镜像看似安全,实则不然,它会在运行时下载恶意负载。
众所周知,每个 Docker 镜像包都有运行应用程序所需的依赖项。因此,应用程序可以在任何平台、操作系统和基础结构上以相同的方式运行,恶意应用程序也能以同样的方式部署。攻击者使用 Docker Hub/Quay 等公共容器注册中心来存储和传递恶意容器镜像。由于 Docker Hub 是大多数 Docker 主机的默认注册表,因此经常用于存储和传递恶意镜像。这些恶意镜像被作为容器直接安装并运行在受损主机上,它们通常只是窃取 CPU、内存或网络资源,而不会损害同一主机上的其他容器或进程。
对企业而言,镜像安全风险会直接影响其线上业务的安全稳定性,企业赖以生存的基础设施可能因为镜像构建流程中不经意的几行代码沦为矿机。
七大措施保障镜像安全
无论对开发团队,还是对企业来说,容器镜像的安全性至关重要。那么,可以采取哪些措施呢?有专业人士给出以下建议:
第一,权限隔离,实行细粒度的访问控制;
第二,使用镜像扫描工具,动态更新漏洞库,实时监控和发现镜像漏洞;
第三,建立完备的仓库操作审计;
第四,实行镜像签名;
第五,镜像最小化;
第六,使用可信的容器镜像,绝不从不可信的公开仓库中下载镜像;
第七,规范化镜像构建:不要泄露敏感信息(证书密钥、密码、认证 token 等),COPY 比 ADD 更安全,当 COPY 嵌套目录时注意其中的敏感信息,使用 linter 工具提高 dockerfile 质量。
企业需要规范业务开发流程,面向云原生零信任的网络环境,面向容器技术和 K8s 带来的敏捷、弹性和可扩展等特性,升级自己的安全防护技术,提升防护意识,保证软件供应链的安全性。
有专业人士对 InfoQ 记者说:“在云原生的大背景下,除了 Docker 镜像和其他云原生制品的供应链安全外,对于提供服务的云厂商和部署业务应用的企业,它们还需要关注底层基础设施的安全性和业务应用在运行时刻的安全。”
延伸阅读:
关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书,点击文末「了解更多」,即可移步InfoQ官网,获取最新资讯~