德国亚琛工业大学的研究人员发表的一项研究表明,Docker Hub 上托管的数以万计的容器镜像包含机密信息,使软件、在线平台和用户面临巨大的攻击面。
Docker Hub 是一个基于云的存储库,供 Docker 社区存储、共享和分发 Docker 镜像,这些容器创建模板包括所有必要的软件代码、运行时刻、库、环境变量和配置文件,以便在Docker中轻松部署应用程序。
研究人员分析了来自 Docker Hub 和数千私人注册表的 337171 个镜像,发现大约 8.5% 包含私钥和 API 密钥等敏感数据,并且许多暴露的密钥都被积极利用,破坏了依赖它们的元素的安全性。
该研究从 337171 个 Docker 镜像中收集了包含 1647300 个层面的海量数据集,并尽可能从每个存储库中获取最新的镜像版本。使用正则表达式搜索特定数据分析显示,28621 个 Docker 镜像中暴露了 52107 个有效私钥和 3158 个不同的 API密钥。经过研究人员验证,这些不包括测试密钥、API密钥示例和无效匹配。大多数暴露的数据(95% 为私钥,90% 为 API密钥)都驻留在单用户映像中,这表明它们很可能是无意泄露的。
调查结果
影响最大的是 Docker Hub,其暴露比例为 9.0%,而来自私有注册表的镜像暴露比例为 6.3%。这种差异可能表明 Docker Hub 用户通常比设置私有存储库的用户对容器安全性的了解较差。
使用暴露的密钥
接下来,研究人员确定了所暴露秘密的实际用途,以了解攻击面的大小。令人震惊的是,研究人员发现了 22082 个依赖于暴露私钥的受损证书,其中包括 7546 个私有 CA 签名证书和 1060 个公共 CA 签名证书。
这上千个 CA 签名证书尤其值得关注,因为这些证书通常被大量用户使用。在研究时,141 个 CA 签名的证书仍然有效,这在一定程度上降低了风险。
为了进一步确定暴露的秘密在野外的用途,研究人员使用了 Censys 数据库提供的全互联网测量结果,发现275269 台主机与泄露的密钥存在关联,其中包括了8674 个 MQTT和19 个 AMQP 主机可能传输隐私敏感的物联网 (IoT) 数据。
这种程度的暴露凸显了容器安全方面的巨大问题,以及在创建镜像时未首先清除镜像中的机密信息这类过失性错误。
关于API暴露,分析发现大多数容器(2920个)属于亚马逊AWS等云提供商,但也有一些涉及Stripe等金融服务。目前,研究人员还不清楚这些API在野外的具体利用情况。
参考来源:Thousands of images on Docker Hub leak auth secrets, private keys