一种面向业务容器镜像进行安全扫描的方法和装置制造方法及图纸

技术编号:27444661 阅读:36 留言:0更新日期:2021-02-25 04:05
本发明专利技术公开了一种面向业务容器镜像进行安全扫描的方法和装置,获取镜像的image config文件,提取出当前镜像所有Layer层所包含的归档文件,根据待提取信息文件路径列表,从归档文件中识别出信息文件,在信息文件中解析出操作系统信息、软件名称和软件版本信息;基于同一版本操作系统将当前镜像中的软件对应的软件版本信息与CVE数据库中的软件版本信息进行比较,如果CVE数据库中对应的软件修复版本高于镜像中的软件版本,则说明当前镜像中软件存在漏洞,反之不存在漏洞;对当前镜像中所有软件名称对应的软件进行漏洞扫描,完成后进行汇总并生成扫描报告。本发明专利技术不仅可以扫描系统安装包软件,还支持对应用程序依赖软件扫描,具有更全面漏洞检查能力。具有更全面漏洞检查能力。具有更全面漏洞检查能力。

【技术实现步骤摘要】
一种面向业务容器镜像进行安全扫描的方法和装置


[0001]本专利技术涉及一种面向业务容器镜像进行安全扫描的方法和装置,属于计算机安全


技术介绍

[0002]随着微服务架构的兴起,众多行业以及中小企业,均将其业务进行了不同程度的云化。容器技术凭借其弹性敏捷、易扩展特性和活跃强大的社区支持,成为了DevOps、微服务等领域下的重要支撑技术。容器安装了应用程序运行时所需要的环境,并且将应用程序及其所需的依赖关系打包到容器镜像中,例如系统、第三方软件包、二进制文件和配置文件等。打包好的容器镜像可以在不同环境中运行,不同的服务之间也不会相互影响。由于这些原因,容器化部署已经成为时下最流行的生产方式,越来越多的公司将应用部署在基于容器的架构上。
[0003]容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。镜像是容器运行的基础,它本质上是由按层封装好的文件系统和描述镜像的元数据构成的文件系统包。Docker Hub作为全球的镜像仓库,镜像一部分来源于开发镜像内相应软件的官方组织,还有大量镜像来自第三方组织甚至个人。在从这些镜像仓库中获取镜像的同时,也带来了潜在的安全风险。那么镜像的安全性直接关乎到容器安全,容器以及容器运行环境的安全成为了亟待研究和解决的问题。
[0004]目前镜像安全扫描工具也有很多,镜像检测的核心目前仍然是依据CVE漏洞数据源检测。扫描器首先获取镜像基础系统已安装组件清单文件,然后根据清单中的组件名、版本等关键元素与CVE数据中心进行比对,从而判定是否存在漏洞。但这种方式只能扫描基础系统发行版本所包含的软件,对于用户自定义安装的软件则是无法进行扫描。还有一些业务镜像中包含了应用程序依赖的第三方软件包,目前的扫描工具并没有给出很好的识别漏洞的方案。总体来讲,现有成熟的检测方案还是有一些局限性,仍有很大的发展改进空间。

技术实现思路

[0005]目的:为了克服现有技术中存在的不足,本专利技术提供一种面向业务容器镜像进行安全扫描的方法和装置。
[0006]技术方案:为解决上述技术问题,本专利技术采用的技术方案为:一种面向业务容器镜像进行安全扫描的方法,容器镜像是由一系列的“Layer层”组成的文件系统,每个镜像都有一个manifest文件,manifest文件描述了镜像的元信息,存放该镜像Layers和image config文件的索引。包括如下步骤:步骤1:获取镜像的image config文件,提取出当前镜像Layer层所包含的归档文件,根据待提取信息文件路径列表,从归档文件中识别出信息文件,在信息文件中解析出操作系
统信息、软件名称和软件版本信息。
[0007]如果客户端存在镜像文件,使用Docker CLI客户端通过REST API与Docker daemon进行交互,获取镜像的image config文件;否则,向私有或公共镜像仓库获取镜像manifest文件,manifest文件包含了对layer层和image config的文件索引,通过image config的文件索引,继续向私有或公共镜像仓库发送https请求,获取到JSON格式的image config文件。
[0008]通过image config文件获取镜像所有Layer层的地址digest,通过地址digest,找到对应的Layer层所包含的归档文件。对镜像逐一Layer层进行扫描,解压Layer层归档文件,遍历归档文件,通过归档文件名称与待提取信息文件路径列表进行识别信息文件,在信息文件中解析出操作系统信息、软件名称和软件版本信息。所述信息文件包括操作系统版本信息文件、安装包清单文件和应用程序依赖项文件。所述待提取信息文件路径列表根据操作系统发行版本、安装包管理器、应用程序依赖项分别进行提取;操作系统发行版本包括RedHat,CentOS,Debian,Ubuntu,Alpine,Suse,安装包管理器包括apk,dpkg,应用程序依赖项包括bundler、composer、npm、yarn、pipenv、poetry、maven。
[0009]由于镜像ID和LayerID自身具备的唯一性,扫描完成后,以镜像ID和LayerID为key值,将镜像基本信息和每个Layer层提取到的提取操作系统信息、软件名称和软件版本信息缓存到客户端,用于提升扫描效率。
[0010]步骤2:基于同一版本操作系统将当前镜像中的软件对应的软件版本信息与CVE数据库中的软件版本信息进行比较,如果CVE数据库中对应的软件修复版本高于镜像中的软件版本,则说明当前镜像中软件存在漏洞,反之不存在漏洞。
[0011]所述CVE数据库根据alpine、debian、redhat、ubuntu、suse、photon、github开放社区持续维护的软件的各种漏洞数据进行搭建。
[0012]所述软件包括:操作系统自带的软件,第三方软件,所述软件名称包括操作系统自带的软件,第三方软件的名称,所述软件版本信息包括操作系统自带的软件,第三方软件的版本信息。
[0013]步骤3:对当前镜像中所有软件名称对应的软件进行漏洞扫描,完成后进行汇总并生成扫描报告。
[0014]扫描报告记录了当前镜像根据CVE数据库标准划分的危及风险、高风险、中风险、低风险、未知风险软件五类漏洞风险等级的漏洞数量、软件名称、软件版本、漏洞信息以及CVE ID。
[0015]步骤4:根据用户提供的自定义策略可以对扫描报告进行调整。
[0016]自定义策略包括漏洞风险级别、漏洞类型、黑白名单,并按照表格或Json格式输出扫描报告。
[0017]一种面向业务容器镜像进行安全扫描的装置,包括如下模块:第一模块:获取镜像的manifest文件,提取出当前镜像Layer层所包含的归档文件,根据待提取信息文件路径列表,从归档文件中识别出信息文件,在信息文件中解析出操作系统信息、软件名称和软件版本信息。
[0018]第二模块:基于同一版本操作系统将当前镜像中的软件对应的软件版本信息与CVE数据库中的软件版本信息进行比较,如果CVE数据库中对应的软件修复版本高于镜像中
的软件版本,则说明当前镜像中软件存在漏洞,反之不存在漏洞。
[0019]第三模块:对当前镜像中所有软件名称对应的软件进行漏洞扫描,完成后进行汇总并生成扫描报告。
[0020]第四模块:根据用户提供的自定义策略可以对扫描报告进行调整。
[0021]有益效果:本专利技术提供的一种面向业务容器镜像进行安全扫描的方法和装置,用于对制作的业务镜像在CVE漏洞与恶意镜像方面进行扫描和审计,能够根据容器镜像安全漏洞级别、黑白名单、漏洞类型过滤,生成扫描报告开发人员。
附图说明
[0022]图1根据本专利技术方法的安全扫描流程框图。
[0023]图2根据本专利技术实施例提供本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向业务容器镜像进行安全扫描的方法,其特征在于:包括如下步骤:获取镜像的image config文件,提取出当前镜像所有Layer层所包含的归档文件,根据待提取信息文件路径列表,从归档文件中识别出信息文件,在信息文件中解析出操作系统信息、软件名称和软件版本信息;基于同一版本操作系统将当前镜像中的软件对应的软件版本信息与CVE数据库中的软件版本信息进行比较,如果CVE数据库中对应的软件修复版本高于镜像中的软件版本,则说明当前镜像中软件存在漏洞,反之不存在漏洞;对当前镜像中所有软件名称对应的软件进行漏洞扫描,完成后进行汇总并生成扫描报告。2.根据权利要求1所述的一种面向业务容器镜像进行安全扫描的方法,其特征在于:还包括:根据用户提供的自定义策略对扫描报告进行调整;所述自定义策略至少包括对漏洞风险级别、漏洞类型、黑白名单、扫描报告输出格式其中一种进行设置。3.根据权利要求1或2所述的一种面向业务容器镜像进行安全扫描的方法,其特征在于:如果客户端存在镜像文件,使用Docker CLI客户端通过REST API与Docker daemon进行交互,获取镜像的image config文件;否则,向私有或公共镜像仓库获取镜像manifest文件,manifest文件包含了对layer层和image config的文件索引,通过image config的文件索引,继续向私有或公共镜像仓库发送https请求,获取到JSON格式的image config文件。4.根据权利要求1或2所述的一种面向业务容器镜像进行安全扫描的方法,其特征在于:通过image config文件获取镜像所有Layer层的地址digest,通过地址digest,找到对应的Layer层所包含的归档文件;对镜像逐一Layer层进行扫描,解压Layer层归档文件,遍历归档文件,通过归档文件名称与待提取信息文件路径列表进行识别信息文件,在信息文件中解析出操作系统信息、软件名称和软件版本信息;所述信息文件包括操作系统版本信息文件、安装包清单文件和应用程序依赖项文件。5.根据权利要求1或2所述的一种面向业务容器镜像进行安全扫描的方法,其特征在于:所述待提取信息文件路径列表...

【专利技术属性】
技术研发人员:马德超高原肖飞季学纯王治华顾文杰陈宏福高峰苏凡顾雯轩丁雨恒董子奇
申请(专利权)人:国网电力科学研究院有限公司国家电网有限公司国网上海市电力公司南瑞集团有限公司国电南瑞南京控制系统有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1