一种容器镜像安全检测方法、终端设备及存储介质与流程

文档序号:26050937发布日期:2021-07-27 15:26阅读:81来源:国知局
一种容器镜像安全检测方法、终端设备及存储介质与流程

本发明涉及容器镜像领域,尤其涉及一种容器镜像安全检测方法、终端设备及存储介质。



背景技术:

随着容器技术的广泛应用,越来越多的软件采用了容器化的部署方式,而这些容器所使用的镜像大多来源于互联网的镜像仓库,而这些镜像仓库并不保证镜像的安全性。这种情形下很容易引入一些不安全的镜像,从而威胁到基础系统的安全。

docker镜像大多数都会依赖不同版本的操作系统基础镜像,随着时间的推移,各种版本的软件都会暴露出一些漏洞,但是镜像并不会因此而即时变化。同时,一些个人或者组织会出于各种目的制作包含特定软件漏洞的镜像,放到互联网的公共仓库中供他人下载。同时,一些镜像还会企图在正常安装的软件包中混入恶意的文件或者程序,从而绕开单纯的基于漏洞识别的安全检测机制。所以,如何全面的对镜像中的软件进行审计,得到一个更加详细,更加全面的安全风险情报成为急需解决的问题。

当前主流的容器镜像扫描软件主要采取的是基于软件包管理工具所自带的数据库对该镜像中的软件进行探测,但是主流容器镜像扫描软件只能提供软件包名称以及软件版本号而无法提供更多的关于软件包其它信息以及镜像内非软件包相关文件的信息。限制了容器安全系统对镜像中的安全问题进行预警和防护的能力,因此主流的容器镜像扫描软件的实际应用效果往往不够理想。



技术实现要素:

为了解决上述问题,本发明提出了一种容器镜像安全检测方法、终端设备及存储介质,用于解决由于主流容器镜像扫描软件对镜像内数据的探测不够充分,导致的无法满足实际容器安全使用场景的需求的问题。

具体方案如下:

一种容器镜像安全检测方法,包括以下步骤:

s1:对镜像进行软件包扫描,并对扫描到的软件包进行分类,判断其使用的技术栈类型;

s2:根据软件包的分类结果,通过分类结果所对应的漏洞检测规则,对该软件包进行漏洞检测;

s3:对镜像内的软件包管理工具的数据进行读取,以获取所有与软件包相关的安装类文件的路径;

s4:根据所有与软件包相关的安装类文件的路径组成的路径集合,在镜像中进行反向过滤,查找出所有不属于该路径集合的文件,并对所有查找出的文件进行通用漏洞检测规则的漏洞检测。

进一步的,软件包分类时采用的线性模型进行分类,采用的特征数据包括文件名和文件后缀。

进一步的,步骤s2中还包括构建用于存储每种类型的软件包对应的漏洞检测规则的数据库。

进一步的,与软件包相关的安装类文件的路径通过对软件包管理工具的内部数据库进行解析得到。

进一步的,当需要批量扫描镜像时,在扫描第一个镜像时对其每一层均进行扫描,并将其扫描结果存储至文件数据库内并作为缓存,在后续扫描其他镜像时,首先从缓存内查找对应层是否包含扫描结果,如果是,则不再对该层进行扫描。

一种容器镜像安全检测终端设备,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例上述的方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述的方法的步骤。

本发明采用如上技术方案,可以检测出docker镜像漏洞、软件中不安全的配置、软件中包含敏感信息的配置、非软件安装的文件、被改动的安装文件,并能够对镜像的用途和技术栈等进行预测和分类,从而能够全面发现docker镜像中存在的各种安全风险,以便及时进行使用上的安全加固,提升docker镜像的安全防护水平,满足如等级保护、行业规范等政策法规的安全建设要求。

附图说明

图1所示为本发明实施例一的流程图。

具体实施方式

为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。

现结合附图和具体实施方式对本发明进一步说明。

实施例一:

本发明实施例提供了一种容器镜像安全检测方法,如图1所示,所述方法包括以下步骤:

s1:对镜像进行软件包扫描,并对扫描到的软件包进行分类,判断其使用的技术栈类型。

对软件包进行分类时根据软件包对应的各文件的文件名、文件后缀等特征进行分类,分类的结果为其所属的技术栈的类型,如以java为主要服务的类型、以php为主要服务的类型等等,不同的类型预先制定了不同的漏洞检测规则。通过针对性的漏洞检测,可以检测出常规漏洞检测无法检测到的敏感信息(密码泄漏、web源码未混淆)、病毒木马、网页后门等安全隐患。

该实施例中分类时采用的逻辑分类算法为一种线性模型,可以表示为:

y=w*x+b

其中,w是训练得到的权重参数;x是样本的特征数据;b是偏置,表示一般情况下是的概率为多少。

逻辑分类模型预测一个样本一般分三步:

1.计算线性函数(y=w*x+b)

2.从分数到概率的转换(sigmoid或softmax)

3.从概率到标签的转换

通过采集的大量的不同类型的样本数据进行训练,训练的目的为根据输入样本的特征数据,利用梯度下降等方法反向推导出合理的权重w和偏置b,以使输出的预测结果更加准确。

s2:根据软件包的分类结果,通过分类结果所对应的漏洞检测规则,对该软件包进行漏洞检测。

为了方便的查找对应的漏洞检测规则,该实施例中还构建了漏洞检测规则数据库,用于存储每种类型的软件包对应的漏洞检测规则。

s3:对镜像内的软件包管理工具的数据进行读取,以获取所有与软件包相关的安装类文件的路径。

该实施例中与软件包相关的安装类文件的路径通过对软件包管理工具的内部数据库进行解析得到。

s4:根据所有与软件包相关的安装类文件的路径组成的路径集合,在镜像中进行反向过滤,查找出所有不属于该路径集合的文件,并对所有查找出的文件进行通用漏洞检测规则的漏洞检测。

通过反向过滤,可以确保对镜像中的每一个文件均进行检测。

在获取安装类文件的路径时,由于容器镜像的组成采用了层次化的联合文件系统,每执行一次软件包的安装以及删除操作都会形成新的一层。最新的软件包数据库会存放在最新的一层,一般可以直接查找到包含软件包数据库的最新一层进行相关软件列表的扫描。

尽管如此,由于容器镜像千差万别,实际应用中需要扫描的层依然会非常的多,如果每一次都进行全镜像的扫描,则会对工具带来很大的性能负担。考虑到容器镜像的层本身就可以复用,而大多数镜像都会依赖一个基础镜像进行构建,它们之间大多都会包含一些被复用的层或者本身就具有一定的相互依赖关系。因此该实施例中在对多个镜像进行扫描时采取贪婪扫描的策略在扫描第一个镜像时对其每一层均进行扫描,并将其扫描结果存储至文件数据库内并作为缓存,在后续扫描其他镜像时,首先从缓存内查找对应层是否包含扫描结果,如果是,则不再对该层进行扫描,这将会大大提高容器镜像批量扫描的效率。

本发明实施例可以检测出docker镜像漏洞、软件中不安全的配置、软件中包含敏感信息的配置、非软件安装的文件、被改动的安装文件,并能够对镜像的用途和技术栈等进行预测和分类,从而能够全面发现docker镜像中存在的各种安全风险,以便及时进行使用上的安全加固,提升docker镜像的安全防护水平,满足如等级保护、行业规范等政策法规的安全建设要求。本实施例为用户提供快速、完备的技术支持、为信息系统安全可靠的可持续运行提供有力保障。

实施例二:

本发明还提供一种容器镜像安全检测终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例一的上述方法实施例中的步骤。

进一步地,作为一个可执行方案,所述容器镜像安全检测终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述容器镜像安全检测终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述容器镜像安全检测终端设备的组成结构仅仅是容器镜像安全检测终端设备的示例,并不构成对容器镜像安全检测终端设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述容器镜像安全检测终端设备还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。

进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述容器镜像安全检测终端设备的控制中心,利用各种接口和线路连接整个容器镜像安全检测终端设备的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述容器镜像安全检测终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。

所述容器镜像安全检测终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)以及软件分发介质等。

尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1