本发明涉及漏洞检测领域,特别是涉及一种docker容器运行状态下漏洞检测方法、系统及设备。
背景技术:
1、目前云计算平台的广泛应用,以虚拟化及容器为代表的云基础软件负责对数据中心存算资源进行高效的调配管理,并合理分配给上层应用,实现“软件定义数据中心”,成为云计算时代重要的基础设施。docker作为虚拟化技术应运而生,凭借其轻量、快速和高效的绝对优势,在互联网企业中得到了大量应用。伴随docker技术的发展与普及,docker安全问题越来越引起人们的重视。
2、2021年,安全公司paloalto networks研究人员aviv sasson,在dockerhub上发现的恶意容器映像档,分别来自10个不同账号,总下载次数超过2000万次。
3、为了及时有效的查看docker容器运行状态下操作系统漏洞,需要分析内部应用软件的漏洞。但现有的漏洞检测方法无法有效分析docker容器运行状态下操作系统漏洞以及应用软件的漏洞。
技术实现思路
1、本发明的目的是提供一种docker容器运行状态下漏洞检测方法、系统及设备,以解决现有的漏洞检测方法无法有效分析docker容器运行状态下操作系统漏洞以及应用软件的漏洞的问题。
2、为实现上述目的,本发明提供了如下方案:
3、一种docker容器运行状态下漏洞检测方法,包括:
4、在docker环境中部署docker容器探针;
5、利用docker容器探针将宿主机的proc目录挂载至待检测的docker容器内;所述proc目录为位于内存中的伪文件系统,所述proc目录保存运行时信息以及查看有关系统硬件及正在运行的进程信息;
6、利用所述docker容器探针获取所述待检测的docker容器的内核版本信息;
7、利用所述docker容器探针获取所述待检测的docker容器的系统软件信息;
8、利用所述docker容器探针获取所述待检测的docker容器的应用软件信息;
9、将所述内核版本信息、所述系统软件信息以及所述应用软件信息与所述公共漏洞和暴露cve数据库进行匹配,检测所述待检测的docker容器的漏洞分析结果;所述漏洞分析结果包括cve名称、软件包版本、修正版本、发布时间以及严重程度。
10、可选的,利用所述docker容器探针获取所述待检测的docker容器的内核版本信息,具体包括:
11、切换到“/proc/<待检测容器进程在宿主机的pid>/ns/mnt”目录的命名空间内;
12、在所述命名空间内读取“/etc/os-release”目录中的信息,获取内核版本信息;/etc/os-release为内核版本信息所在位置。
13、可选的,利用所述docker容器探针获取所述待检测的docker容器的系统软件信息,具体包括:
14、通过读取“/proc/<待检测容器进程在宿主机的pid>/root/lib/apk/db/installed”目录获取系统软件信息。
15、可选的,利用所述docker容器探针获取所述待检测的docker容器的应用软件信息,具体包括:
16、循环读取“/proc/<待检测容器进程在宿主机的pid>/root/”目录下的文件;
17、当所述文件为软件包类型时,获取应用软件信息。
18、可选的,将所述内核版本信息、所述系统软件信息以及所述应用软件信息与所述公共漏洞和暴露数据库进行匹配,检测所述待检测的docker容器的漏洞分析结果,具体包括:
19、根据所述内核信息信息获取所述公共漏洞和暴露cve数据库中对应的cve数据;
20、将cve数据按照软件名称为key,根据所述系统软件信息以及应用软件信息构造cve map类型结构数据;
21、通过软件名称,根据所述cve map类型结构数据,判断所述应用软件信息是否存在cve漏洞;
22、若存在cve漏洞且应用软件的当前版本小于所述cve的已修复版本时,记录所述cve,确定所述待检测的docker容器的漏洞分析结果。
23、一种docker容器运行状态下漏洞检测系统,包括:
24、docker容器探针部署模块,用于在docker环境中部署docker容器探针;
25、挂载模块,用于利用docker容器探针将宿主机的proc目录挂载至待检测的docker容器内;所述proc目录为位于内存中的伪文件系统,所述proc目录保存运行时信息以及查看有关系统硬件及正在运行的进程信息;
26、内核版本信息获取模块,用于利用所述docker容器探针获取所述待检测的docker容器的内核版本信息;
27、系统软件信息获取模块,用于利用所述docker容器探针获取所述待检测的docker容器的系统软件信息;
28、应用软件信息获取模块,用于利用所述docker容器探针获取所述待检测的docker容器的应用软件信息;
29、漏洞分析结果检测模块,用于将所述内核版本信息、所述系统软件信息以及所述应用软件信息与所述公共漏洞和暴露cve数据库进行匹配,检测所述待检测的docker容器的漏洞分析结果;所述漏洞分析结果包括cve名称、软件包版本、修正版本、发布时间以及严重程度。
30、可选的,内核版本信息获取模块,具体包括:
31、切换单元,用于切换到“/proc/<待检测容器进程在宿主机的pid>/ns/mnt”目录的命名空间内;
32、内核版本信息获取单元,用于在所述命名空间内读取“/etc/os-release”目录中的信息,获取内核版本信息;/etc/os-release为内核版本信息所在位置。
33、可选的,漏洞分析结果检测模块,具体包括:
34、cve数据获取单元,用于根据所述内核信息信息获取所述公共漏洞和暴露cve数据库中对应的cve数据;
35、cve map类型结构数据构造单元,用于将cve数据按照软件名称为key,根据所述系统软件信息以及应用软件信息构造cve map类型结构数据;
36、判断单元,用于通过软件名称,根据所述cve map类型结构数据,判断所述应用软件信息是否存在cve漏洞;
37、漏洞分析结果确定单元,用于若存在cve漏洞且应用软件的当前版本小于所述cve的已修复版本时,记录所述cve,确定所述待检测的docker容器的漏洞分析结果。
38、一种电子设备,包括存储器及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行上述所述的docker容器运行状态下漏洞检测方法。
39、一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的docker容器运行状态下漏洞检测方法。
40、根据本发明提供的具体实施例,本发明公开了以下技术效果:本发明提供了一种docker容器运行状态下漏洞检测方法、系统及设备,通过将利用docker容器探针将宿主机的proc目录挂载至待检测的docker容器内,利用docker容器探针探测所述待检测的docker容器的内核版本信息、系统软件信息以及应用软件信息,并构建公共漏洞和暴露(commonvulnerabilities and exposures,cve)数据库,生成待检测的docker容器的漏洞分析结果,从而针对docker容器在运行状态也能够有效检测出操作系统漏洞以及应用软件的漏洞,实时发现docker容器中存在的安全风险。