写点什么

400 万 Docker 镜像中,51% 的镜像存在高危漏洞

2021 年 1 月 14 日

400万Docker镜像中,51%的镜像存在高危漏洞

通过扫描 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)、XORDDOS、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 镜像和其他云原生制品的供应链安全外,对于提供服务的云厂商和部署业务应用的企业,它们还需要关注底层基础设施的安全性和业务应用在运行时刻的安全。”

2021 年 1 月 14 日 12:002013
用户头像
万佳 InfoQ编辑

发布了 572 篇内容, 共 211.1 次阅读, 收获喜欢 1429 次。

关注

评论

发布
暂无评论
发现更多内容

【架构师训练营 1 期】第四周作业及学习总结

诺乐

mongodb 源码实现、调优、最佳实践系列-百万级高并发mongodb集群性能数十倍提升优化实践(下篇)

杨亚洲(专注mongodb及高性能中间件)

MySQL nosql mongodb 架构 分布式 分布式数据库mongodb

直播预告 | 云时代的数据库客户端——CloudQuery最佳实践

CloudQuery社区

数据库 sql 安全 工具软件

第四周学习心得

熊桂平

极客大学架构师训练营

java安全编码指南之:Thread API调用规则

程序那些事

Java并发 多线程 java安全编码 java安全编码指南 java编码规范

出炉!华为18A自爆SpringCloud微服务分布式笔记

996小迁

Java 编程 架构 面试 SpringCloud

mongodb内核源码实现、性能调优、最佳运维实践系列-百万级高并发mongodb集群性能数十倍提升优化实践(上篇)

杨亚洲(专注mongodb及高性能中间件)

MySQL 数据库 nosql mongodb 分布式数据库mongodb

日常工作问题集锦

hasWhere

从理论到工具:带你全面了解自动化测试框架

禅道项目管理

开源 DevOps 工具 自动化测试

成为一名合格的技术类产品经理

小清新同学

产品经理

深入理解 JVM 垃圾回收算法 - 复制算法

Java架构师迁哥

阿里P8大牛呕心沥血总结整理的《Java面经手册》,通过实践的方式向你深度讲解Java核心知识点

Java架构之路

Java 程序员 架构 面试 编程语言

第四周 总结

mm马

极客大学架构师训练营

几行代码轻松实现跨系统传递 traceId,再也不用担心对不上日志了!

程序员小航

Java 日志 链路追踪 工作笔记 traceId

成为 Apache 贡献者,So easy!

海豚调度

Apache 贡献

LeetCode题解:98. 验证二叉搜索树,递归,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

数字货币交易所开发方案,撮合系统搭建app源码

WX13823153201

让黑产无处遁形 京东智联云推出风险识别服务

京东科技开发者

人工智能 学习 风险识别

Github惊现高星神作,两份算法宝典让你横扫大厂算法面试题

云流

编程 程序员 算法 计算机

台湾地区为什么会丢包高?

德胜网络-阳

面试大厂被面试官用MyBatis怼到“哑口无言”?这份MyBatis源码笔记助你吊打面试官!

Java架构之路

Java 程序员 架构 面试 编程语言

第4周

paul

第四周作业

熊桂平

极客大学架构师训练营

灯下黑中的自己

非著名程序员

个人成长 管理 管理者

Linux下diff的操作详解

良知犹存

Linux

jvm笔记

pCat

Java JVM

Go发起HTTP2.0请求流程分析(中篇)——数据帧&流控制

Gopher指北

golang 后端 HTTP2.0

第四周 作业1

mm马

极客大学架构师训练营

想要高效搭建企业信息平台?教你轻松选择开发框架!

Marilyn

敏捷开发 快速开发

算法判断循环链表、数据工程师练级攻略、python从入门到精通、UML精粹读后感、John 易筋 ARTS 打卡 Week 22

John(易筋)

ARTS 打卡计划 UML精粹 数据工程师必备技能 python从入门到精通 循环链表

Week 4 命题作业及总结

阿泰

400万Docker镜像中,51%的镜像存在高危漏洞-InfoQ