一种容器漏洞检测方法及系统与流程
未命名
10-08
阅读:100
评论:0
1.本发明涉及网络信息安全技术领域,尤其涉及一种容器漏洞检测方法及系统。
背景技术:
2.容器漏洞检测技术是随着容器技术(如docker)的发展而兴起的。容器漏洞检测的发展经历了以下几个阶段:初期阶段:docker容器技术的诞生,企业和开发者开始尝试使用容器部署应用。在这个阶段,容器安全并未受到足够的重视,漏洞检测主要基于操作系统和应用程序的传统方法。容器安全意识觉醒阶段:随着容器技术的普及,企业和开发者开始关注容器安全问题。在这个阶段,一些专注于容器安全的公司和开源项目应运而生,如aquasecurity、clair和anchore等,它们开始为容器提供漏洞扫描和安全管理功能。容器安全成熟阶段:随着容器技术的广泛应用,容器安全需求不断增长,企业对容器漏洞检测的要求也越来越高。在这个阶段,容器安全解决方案逐渐成熟,提供了更多的功能和更高效的漏洞检测方法,如静态分析、动态分析和沙箱技术等。容器安全集成阶段:随着devops和云原生技术的发展,容器安全逐渐融入整个应用开发和部署生命周期。容器漏洞检测不再仅仅是单独的安全工具,而是与ci/cd流程、kubernetes等平台紧密集成,实现自动化的漏洞检测和修复。
3.容器漏洞检测的当前技术有动态分析技术,指的是在容器运行时对其进行安全检测,以发现潜在的漏洞和风险。这种方法通常会分析容器的运行时行为、网络活动、系统调用等,以便识别异常行为和潜在威胁。动态分析的主要优点是能够实时检测到运行时的问题,从而帮助开发人员和运维人员更快地修复漏洞。但是,当前的检测技术仍然存在以下缺点:
4.1.复杂性高:动态检测需要对容器应用程序的运行时环境和网络行为进行实时监控,这会增加系统的复杂性,运行时依赖特定环境,运行容器消耗时间多。
5.2.资源消耗多:动态检测需要实时分析大量数据,这会消耗大量的计算资源和带宽,可能导致系统性能下降。
6.3.高误报率:动态检测可能会误报一些正常行为为潜在的安全威胁,这会给来额外的工作负担。
7.4.对于应用程序的漏洞检测不足,没有对各种语言的包管理器做依赖解析。
8.5.漏洞更新不及时,数据库数据少且陈旧,每次访问少数的漏洞库,并不收到最新的所有的漏洞库的结果。
9.6.支持的系统镜像少,并不涉及市面上常见的大部分系统镜像。
技术实现要素:
10.为了解决上述问题,本发明的目的是提供一种容器漏洞检测方法及系统,使得漏洞检测更加高效准确。
11.为此,本发明实施例提供一种容器漏洞检测方法,所述方法包括:
12.s1:构建知识库,所述知识库包括漏洞知识库、依赖组件知识库及关联知识库,并对漏洞知识库和依赖组件知识库持续更新,具体包括:
13.通过多种发布渠道获取漏洞信息和依赖组件信息,生成原始漏洞数据库和原始组件数据库;分别对原始漏洞数据库中的漏洞信息和原始组件数据库中的依赖组件信息进行处理和分析,得到漏洞知识库、依赖组件知识库;将漏洞知识库与依赖组件知识库进行关联整合,形成关联知识库;
14.s2:对镜像文件进行扫描,并针对镜像文件和应用程序的依赖关系进行解析,提取到当前镜像的所有系统软件包和编程语言的组件的信息;
15.s3:将提取到的系统软件包和编程语言的组件的信息与所述关联知识库进行匹配,检测出当前镜像所有层次的漏洞,生成漏洞报告。
16.优选地,所述通过多种发布渠道获取漏洞信息和依赖组件信息,生成原始漏洞数据库和原始组件数据库的方法包括:
17.从多种权威的发布渠道采取分布式爬虫技术、反爬虫绕过及更新策略进行数据信息采集,涉及到的数据信息包括有漏洞的cve编号、描述、评分、发布时间、更新时间、解决方案、状态、受影响的组件和版本、参考链接,以及各种编程语言的组件的名称、版本、依赖关系、来源、许可证;通过人工方式导入用于特定的组件信息、漏洞基本信息,或者在无互联网条件下通过人工方式进行数据信息导入;最终生成原始漏洞数据库和原始组件数据库。
18.优选地,所述发布渠道包括nvd平台、cnnvd平台、cve平台。
19.优选地,对漏洞知识库和依赖组件知识库持续更新的方法包括:
20.对漏洞知识库和依赖组件知识库持续更新采用在scrapy爬虫框架基础上,进行二次开发和优化,利用gerapy对爬虫进行管理,docker每日定时任务持续更新全球上百万的开源项目的信息、组件信息以及各种漏洞信息。
21.优选地,对镜像文件进行扫描,并针对镜像文件和应用程序的依赖关系进行解析,提取到当前镜像的所有操作系统软件包和编程语言的组件的信息的方法包括:
22.s21:对镜像文件进行扫描,逐层分析镜像层;
23.s22:提取操作系统信息和操作系统的软件包信息;
24.s23:进行应用程序依赖解析和二进制文件解析;
25.s24:根据解析结果,得到当前镜像的所有系统软件包和编程语言的组件的信息。
26.优选地,进行应用程序依赖解析和二进制文件解析的方法为:
27.根据提取的操作系统信息,判断操作系统类型,找到操作系统软件包管理器文件的位置,调用针对该软件包管理器文件开发的解析程序,得到操作系统的软件包信息;遍历所有文件,判断该文件是否满足某个编程语言的依赖管理文件,调用针对该依赖管理文件开发的解析程序,得到镜像文件内编程语言的组件信息;遍历所有文件,判断该文件是否是二进制组件文件,调用针对二进制组件文件开发的解析程序,得到镜像文件内所有二进制组件信息。
28.优选地,所述操作系统类型包括alpine linux、debian linux、red hatenterprise linux、arch linux、ubuntu。
29.优选地,所述应用程序依赖解析,支持二十多种编程语言包括javascript、java、python,和三十多种包管理器包括npm、maven、sbt。。
30.优选地,所述二进制文件解析,支持elf格式的二进制文件和pe格式的二进制文件。
31.本发明实施例还提供了一种容器漏洞检测系统,所述系统包括:
32.知识库构建模块,用于构建知识库,所述知识库包括漏洞知识库、依赖组件知识库及关联知识库,并对漏洞知识库和依赖组件知识库持续更新,具体包括:
33.通过多种发布渠道获取漏洞信息和依赖组件信息,生成原始漏洞数据库和原始组件数据库;分别对原始漏洞数据库中的漏洞信息和原始组件数据库中的依赖组件信息进行处理和分析,得到漏洞知识库、依赖组件知识库;将漏洞知识库与依赖组件知识库进行关联整合,形成关联知识库;
34.解析模块,用于对镜像文件进行扫描,并针对镜像文件和应用程序的依赖关系进行解析,提取到当前镜像的所有系统软件包和编程语言的组件的信息;
35.漏洞报告生成模块,用于将提取到的系统软件包和编程语言的组件的信息与所述关联知识库进行匹配,检测出当前镜像所有层次的漏洞,生成漏洞报告。
36.从以上技术方案可以看出,本发明申请具有以下优点:
37.(1)通过扫描容器镜像,识别并报告其中的安全漏洞,帮助开发者和运维人员确保容器的安全性。
38.(2)支持多种包括alpine linux、debian linux、red hat enterpriselinux、arch linux、ubuntu系统镜像为基础镜像的镜像检测,满足不同场景下的需求。
39.(3)镜像静态分析占用资源少,且不会引起误报。
40.(4)在扫描容器镜像,还能够扫描应用程序所使用的依赖,包括各种编程语言的包管理工具(如npm、yarn、pipenv等)。
41.(5)定时爬取各大权威网站披露的最新漏洞及影响的库、组件、包存入数据库,在扫描过程中对于发现的系统软件包和编程语言的组件,只需要访问数据库中关联到的漏洞信息,节省了时间和带宽。
附图说明
42.为了更清楚地说明本发明实施案例或现有技术中的技术方案,下边将对实施例中所需要使用的附图做简单说明,通过参考附图会更清楚的理解本发明的特征和优点,附图是示意性的而不应该理解为对本发明进行任何限制,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其他的附图。其中:
43.图1为根据实施例中提供的一种容器漏洞检测方法的流程图;
44.图2为实施例中知识库构建流程图;
45.图3为实施例中漏洞信息和依赖组件信息的采集流程图;
46.图4为实施例中漏洞信息和依赖组件信息的清洗与关联流程图;
47.图5为实施例中一个镜像tar包解压示例图;
48.图6为实施例中基础层layer目录图;
49.图7为实施例中基础层之上的layer目录图;
50.图8为根据实施例中提供的一种容器漏洞检测系统的框图。
具体实施方式
51.为使本发明实施例的目的、技术方案与优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
52.实施例一
53.如图1所示,本发明实施例提出一种容器漏洞检测方法,该方法包括:
54.s1:构建知识库,所述知识库包括漏洞知识库、依赖组件知识库及关联知识库,并对漏洞知识库和依赖组件知识库持续更新;
55.s2:对镜像文件进行扫描,并针对镜像文件和应用程序的依赖关系进行解析,提取到当前镜像的所有系统软件包和编程语言的组件的信息;
56.s3:将提取到的系统软件包和编程语言的组件的信息与所述关联知识库进行匹配,检测出当前镜像所有层次的漏洞,生成漏洞报告。
57.本发明提出一种容器漏洞检测方法,通过构建知识库,所述知识库包括漏洞知识库、依赖组件知识库及关联知识库,通定时爬取各大权威网站披露的最新漏洞及影响的系统软件包和编程语言的组件存入数据库,在扫描过程中对于发现的系统软件包和编程语言的组件,只需要访问数据库中关联到的漏洞信息,节省了时间和带宽。通过对镜像文件扫描,针对镜像文件和应用程序的依赖关系进行解析,获得当前镜像的所有系统软件包和编程语言的组件的信息。在解析过程中,操作系统包解析,支持常见的操作系统如alpinelinux、debian linux、ubuntu等;应用程序运行依赖解析,支持二十多种编程语言和三十多种包管理器文件二进制解析;支持elf格式的二进制文件(如linux可执行文件)和pe格式的二进制文件(如windows可执行文件)。将提取到的系统软件包和编程语言的组件的信息与持续更新的关联知识库进行匹配,能够检测出当前镜像所有层次的漏洞,最终生成漏洞报告,漏洞检测更加高效准确。
58.进一步地,在步骤s1中,构建知识库,所述知识库包括漏洞知识库、依赖组件知识库及关联知识库,并对漏洞知识库和依赖组件知识库持续更新。
59.具体地,通过多种发布渠道获取漏洞信息和依赖组件信息,生成原始漏洞数据库和原始组件数据库;分别对原始漏洞数据库中的漏洞信息和原始组件数据库中的依赖组件信息进行处理和分析,得到漏洞知识库、依赖组件知识库;将漏洞知识库与依赖组件知识库进行关联整合,形成关联知识库,如图2所示。
60.本发明获取漏洞信息和依赖组件信息,生成原始漏洞数据库和原始组件数据库的方法包括:从多种权威的发布渠道(包括)采取分布式爬虫技术、反爬虫绕过及更新策略进行数据信息采集,涉及到的数据信息包括有漏洞的cve编号、描述、评分、发布时间、更新时间、解决方案、状态、受影响的组件和版本,参考链接等,以及各种编程语言的组件的名称、版本、依赖关系、来源、许可证等;通过人工方式导入用于特定的组件信息、漏洞基本信息,或者在无互联网条件下通过人工方式进行数据信息导入;最终生成原始漏洞数据库和原始组件数据库,如图3所示。
61.对获取到的漏洞信息和依赖组件信息进行处理和分析,并且将基本信息、清洗结果等进行分类存储和管理,将漏洞知识库与组件知识库进行关联整合,形成关联知识库,如
图4所示。
62.此外,本发明对漏洞知识库和依赖组件知识库持续更新采用在scrapy爬虫框架基础上,进行二次开发和优化,利用gerapy对爬虫进行管理,docker每日定时任务持续更新全球上百万的开源项目的信息、组件信息以及各种漏洞信息。
63.进一步地,在步骤s2中,对镜像文件进行扫描,并针对镜像文件和应用程序的依赖关系进行解析,提取到当前镜像的所有系统软件包和编程语言的组件的信息。
64.为了更加清晰的阐述镜像解析,下面对名称术语进行解释。镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。容器和镜像的关系,像程序设计中的实例和类一样,镜像是静态的定义,容器是镜像运行时的实体。它是一个独立的运行环境,可以在其中运行软件。容器可以启动、停止、删除,而且是相互隔离的。容器之间不会互相影响,也不会影响到宿主系统。通过容器,可以高效灵活的部署和运行软件。
65.在静态分析中,对于容器的分析,是在分析镜像文件。oci(opencontainerinitiative)开放容器规范是事实上的容器标准,已经被大部分容器实现以及容器编排系统所采用,包括docker和kubernetes。开放容器规范定义了如何创建一个符合oci规范的镜像,它规定了镜像的构建系统需要输出的内容和格式,输出的容器镜像可以被解包成一个runtimebundle,runtimebundle是由特定文件和目录结构组成的一个文件夹,从中可以根据运行时标准运行容器。
66.oci规范要求镜像内容必须包括以下三个部分:
67.imagemanifest:提供了镜像的配置和文件系统层定位信息,可以看作是镜像的目录,文件格式为json。
68.imagelayerfilesystemchangeset:序列化之后的文件系统和文件系统变更,它们可按顺序一层层应用为一个容器的rootfs,因此通常也被称为一个layer(与下文提到的镜像层同义),文件格式可以是tar、gzip等压缩格式。
69.imageconfiguration:包含了镜像在运行时所使用的执行参数以及有序的rootfs变更信息,文件类型为json。其中rootfs(rootfilesystem)即/根挂载点所挂载的文件系统,是一个操作系统所包含的文件、配置和目录,但并不包括操作系统内核。
70.如图5所示,一个镜像tar包解压示例,manifest.json中layers记载了layer的文件定位信息。layers列表中的tar包共同组成了生成容器的rootfs,容器的镜像是分层构建的,layers中的元素顺序还代表了镜像层叠加的顺序,所有layer组成一个由下往上叠加的栈式的结构。首先看一下基础层即第一条记录layer中的内容,是一个完整的rootfs,如图6所示。然后再观察上一层layer所得到的文件系统,如图7所示。
71.上述说明镜像的构建过程是增量的,每一层都只包含了和更低一层相比所变更的文件内容,这也是容器镜像得以保持较小体积的原因。
72.具体地,对镜像文件进行扫描,并针对镜像文件和应用程序的依赖关系进行解析,提取到当前镜像的所有系统软件包和编程语言的组件的信息的方法包括:
73.s21对镜像文件进行扫描,逐层分析镜像层;
74.s22:提取操作系统信息和操作系统的软件包信息;
75.s23:根据提取的操作系统信息,判断操作系统类型,找到操作系统软件包管理器文件的位置,调用针对该软件包管理器文件开发的解析程序,得到操作系统的软件包信息;遍历所有文件,判断该文件是否满足某个编程语言的依赖管理文件,调用针对该依赖管理文件开发的解析程序,得到镜像文件内编程语言的组件信息;遍历所有文件,判断该文件是否是二进制组件文件,调用针对二进制组件文件开发的解析程序,得到镜像文件内所有二进制组件信息;
76.s24:根据解析结果,得到当前镜像的所有系统软件包和编程语言的组件的信息。
77.具体地,分析镜像层:容器镜像由多个层组成,每一个层是上一层的增量或者是一些改变,程序会逐层分析这些镜像层。
78.提取操作系统信息:程序会识别镜像的底层操作系统,如alpine linux、debian linux、ubuntu等。
79.提取软件包信息:根据上一步的操作系统类型,从容器镜像中提取已安装的软件包及其版本信息。例如,对于基于alpine linux的系统,程序会解析lib/apk/db/installed文件。
80.其中,一个installed文件例子如下:
81.c:q1yymwoynr7lkcxkm9mhlmwkd6dmy=
82.p:musl
83.v:1.1.24-r2
84.a:x86_64
85.s:377123
86.i:614400
87.t:themuslclibrary(libc)implementation
88.u:https://musl.libc.org/
89.l:mit
90.o:musl
91.m:《timo.teras@iki.fi》
92.t:1584790550
93.c:4024cc3b29ad4c65544ad068b8f59172b5494306
94.p:so:libc.musl-x86_64.so.1=1
95.f:lib
96.r:libc.musl-x86_64.so.1
97.a:0:0:777
98.z:q17yj3jfnypa4mxhjjr0ou6czsjvi=
99.r:ld-musl-x86_64.so.1
100.a:0:0:755
101.z:q19mqzayky6ytqwqm0hkvsrh39o7y=
102.查阅apline的官方文档,p:所在行就是依赖的名称,v:所在的行就是依赖的版本,按行遍历文件,先提取依赖名,再提取依赖版本,对应起来就是所寻找的依赖项。
103.应用程序依赖解析:除了可以检测操作系统安装的包,程序还可以检测应用程序
中使用的依赖项。支持的语言和包管理器,如javascript、java、python等二十多种语言及其对应的三十多种包管理器。程序会解析相应的依赖包管理器文件,如package.json、pom.xml、requirements.txt等。
104.二进制文件解析:程序支持解析elf格式的二进制文件(如linux可执行文件)和pe格式的二进制文件(如windows可执行文件),检测这些二进制文件中使用的库和组件。
105.进一步地,在步骤s3中,将提取到的系统软件包和编程语言的组件的信息与所述关联知识库进行匹配,检测出当前镜像所有层次的漏洞,生成漏洞报告。
106.实施例二
107.如图8所示,本发明提供一种基于容器漏洞检测系统,所述系统包括:
108.知识库构建模块10,用于构建知识库,所述知识库包括漏洞知识库、依赖组件知识库及关联知识库,并对漏洞知识库和依赖组件知识库持续更新,具体包括:
109.通过多种发布渠道获取漏洞信息和依赖组件信息,生成原始漏洞数据库和原始组件数据库;分别对原始漏洞数据库中的漏洞信息和原始组件数据库中的依赖组件信息进行处理和分析,得到漏洞知识库、依赖组件知识库;将漏洞知识库与依赖组件知识库进行关联整合,形成关联知识库;
110.解析模块20,用于对镜像文件进行扫描,并针对镜像文件和应用程序的依赖关系进行解析,提取到当前镜像的所有系统软件包和编程语言的组件的信息;
111.漏洞报告生成模块30,用于将提取到的系统软件包和编程语言的组件的信息与所述关联知识库进行匹配,检测出当前镜像所有层次的漏洞,生成漏洞报告
112.所述系统,用以实现上述所述的容器漏洞检测方法,为了避免冗余,在此不再赘述。
113.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
114.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
115.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
116.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
117.显然,上述实施例仅仅是为清楚地说明所作的举例,并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
技术特征:
1.一种容器漏洞检测方法,其特征在于,包括:s1:构建知识库,所述知识库包括漏洞知识库、依赖组件知识库及关联知识库,并对漏洞知识库和依赖组件知识库持续更新,具体包括:通过多种发布渠道获取漏洞信息和依赖组件信息,生成原始漏洞数据库和原始组件数据库;分别对原始漏洞数据库中的漏洞信息和原始组件数据库中的依赖组件信息进行处理和分析,得到漏洞知识库、依赖组件知识库;将漏洞知识库与依赖组件知识库进行关联整合,形成关联知识库;s2:对镜像文件进行扫描,并针对镜像文件和应用程序的依赖关系进行解析,提取到当前镜像的所有系统软件包和编程语言的组件的信息;s3:将提取到的系统软件包和编程语言的组件的信息与所述关联知识库进行匹配,检测出当前镜像所有层次的漏洞,生成漏洞报告。2.根据权利要求1所述的容器漏洞检测方法,其特征在于,所述通过多种发布渠道获取漏洞信息和依赖组件信息,生成原始漏洞数据库和原始组件数据库的方法包括:从多种权威的发布渠道采取分布式爬虫技术、反爬虫绕过及更新策略进行数据信息采集,涉及到的数据信息包括有漏洞的cve编号、描述、评分、发布时间、更新时间、解决方案、状态、受影响的组件和版本、参考链接,以及各种编程语言的组件的名称、版本、依赖关系、来源、许可证;通过人工方式导入用于特定的组件信息、漏洞基本信息,或者在无互联网条件下通过人工方式进行数据信息导入;最终生成原始漏洞数据库和原始组件数据库。3.根据权利要求1所述的容器漏洞检测方法,其特征在于,所述发布渠道包括nvd平台、cnnvd平台、cve平台。4.根据权利要求1所述的容器漏洞检测方法,其特征在于,对漏洞知识库和依赖组件知识库持续更新的方法包括:对漏洞知识库和依赖组件知识库持续更新采用在scrapy爬虫框架基础上,进行二次开发和优化,利用gerapy对爬虫进行管理,docker每日定时任务持续更新全球上百万的开源项目的信息、组件信息以及各种漏洞信息。5.根据权利要求1所述的容器漏洞检测方法,其特征在于,对镜像文件进行扫描,并针对镜像文件和应用程序的依赖关系进行解析,提取到当前镜像的所有操作系统软件包和编程语言的组件信息的方法包括:s21:对镜像文件进行扫描,逐层分析镜像层;s22:提取操作系统信息和操作系统的软件包信息;s23:进行应用程序依赖解析和二进制文件解析;s24:根据解析结果,得到当前镜像的所有操作系统软件包和编程语言的组件的信息。6.根据权利要求5所述的容器漏洞检测方法,其特征在于,进行应用程序依赖解析和二进制文件解析的方法为:根据提取的操作系统信息,判断操作系统类型,找到操作系统软件包管理器文件的位置,调用针对该软件包管理器文件开发的解析程序,得到操作系统的软件包信息;遍历所有文件,判断该文件是否满足某个编程语言的依赖管理文件,调用针对该依赖管理文件开发的解析程序,得到镜像文件内编程语言的组件的信息;遍历所有文件,判断该文件是否是二进制组件文件,调用针对二进制组件文件开发的解析程序,得到镜像文件内所有二进制组
件信息。7.根据权利要求6所述的容器漏洞检测方法,其特征在于,所述操作系统类型包括alpine linux、debian linux、red hat enterprise linux、arch linux、ubuntu。8.根据权利要求6所述的容器漏洞检测方法,其特征在于,所述应用程序依赖解析,支持二十多种编程语言包括javascript、java、python,和三十多种包管理器包括npm、maven、sbt。9.根据权利要求6所述的容器漏洞检测方法,其特征在于,所述二进制文件解析,支持elf格式的二进制文件和pe格式的二进制文件。10.一种容器漏洞检测系统,其特征在于,包括:知识库构建模块,用于构建知识库,所述知识库包括漏洞知识库、依赖组件知识库及关联知识库,并对漏洞知识库和依赖组件知识库持续更新,具体包括:通过多种发布渠道获取漏洞信息和依赖组件信息,生成原始漏洞数据库和原始组件数据库;分别对原始漏洞数据库中的漏洞信息和原始组件数据库中的依赖组件信息进行处理和分析,得到漏洞知识库、依赖组件知识库;将漏洞知识库与依赖组件知识库进行关联整合,形成关联知识库;解析模块,用于对镜像文件进行扫描,并针对镜像文件和应用程序的依赖关系进行解析,提取到当前镜像的所有系统软件包和编程语言的组件的信息;漏洞报告生成模块,用于将提取到的系统软件包和编程语言的组件的信息与所述关联知识库进行匹配,检测出当前镜像所有层次的漏洞,生成漏洞报告。
技术总结
本发明提供一种容器漏洞检测方法及系统,涉及网络信息安全技术领域,该方法包括构建知识库,所述知识库包括漏洞知识库、依赖组件知识库及关联知识库,并对漏洞知识库和依赖组件知识库持续更新;对镜像文件进行扫描,并针对镜像文件和应用程序的依赖关系进行解析,提取到当前镜像的所有系统软件包和编程语言的组件的信息;将提取到的系统软件包和编程语言的组件的信息与所述关联知识库进行匹配,检测出当前镜像所有层次的漏洞,生成漏洞报告。本发明结合持续更新的关联知识库,能够检测出当前镜像所有层次的漏洞,使得漏洞检测更加高效准确。确。确。
技术研发人员:梁大功 王博 罗昌洪 宋沛东
受保护的技术使用者:苏州棱镜七彩信息科技有限公司
技术研发日:2023.06.14
技术公布日:2023/10/5
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
