本技术涉及金融,特别涉及一种开源组件安全的识别方法、装置及电子设备。
背景技术:
1、企业构建和使用的大多数应用程序在其代码中都包含开源组件。当开发人员在应用程序的源代码中引入开源依赖项时,他们往往不知道包含的子依赖项,进而造成应用程序中包含过期版本的开源组件,也即,更新或修补程序可用但还未应用。开源组件的准确更新对应用程序的安全至关重要,如果未更新的组件被遗忘,将有可能变成高风险利用。随着应用程序向云端的迁移以及程序复杂性的增加,开源组件产生的软件风险也随之增加。
2、目前对于开源安全的扫描主要包括以下两种方式:(1)针对制品库中的所有制品(也即应用程序的安装包)进行开源安全扫描,识别每个制品所依赖的所有开源依赖组件,当检测到出现漏洞的开源组件时,快速识别存在开源漏洞的制品;但是此种方式要求所有制品都进入制品库进行统一管理,扫描效率较低;(2)通过扫描源代码对代码工程的依赖组件文件进行扫描,识别代码工程的依赖组件;由于制品与源代码之间的关联性无法关联对应,即使找到存在风险的制品,也无法快速找到对应源代码,并且通过扫描源代码对依赖组件进行扫描,只能识别代码中的一次依赖组件,无法识别子依赖组件,存在遗漏开源组件的问题,识别效率以及准确性较低;此外基于源代码的扫描也无法确定存在安全风险的制品。可见,现有技术只能实现单节点的开源组件的识别,并且识别准确性和效率较低。
3、针对上述无法准确、快速实现应用程序的开源组件安全的识别的问题,目前尚未提出有效解决方案。
技术实现思路
1、本技术实施方式的目的是提供一种开源组件安全的识别方法、装置及电子设备,以解决无法准确、快速实现应用程序的开源组件安全的识别的问题。
2、为解决上述技术问题,本说明书第一方面提供了一种开源组件安全的识别方法,包括:
3、在检测到存在漏洞的目标开源组件时,获取预先构建的依赖组件知识库,其中,所述依赖组件知识库包含依赖组件与程序代码、应用程序以及部署对象之间的关联关系;
4、从所述依赖组件知识库中查找与所述目标开源组件匹配的目标依赖组件,并确定所述目标依赖组件对应的目标程序代码、目标应用程序以及目标部署对象;
5、基于所述目标程序代码、所述目标应用程序和所述目标部署对象,确定引用所述目标依赖组件的代码位置信息以及生产服务信息;
6、基于所述代码位置信息以及所述生产服务信息,生成安全识别结果。
7、在本说明书的一些实施例中,所述依赖组件知识库通过以下方式构建:
8、在应用程序的流水线中各节点的执行过程中,获取各节点的执行参数以及执行结果;
9、基于各节点的执行参数以及执行结果,确定所述应用程序对应的程序代码信息以及部署对象信息;
10、在所述流水线的编译构建环节,获取所述应用程序的依赖组件信息;
11、基于所述依赖组件信息、所述程序代码信息、所述应用程序的信息以及所述部署对象信息,构建所述依赖组件知识库。
12、在本说明书的一些实施例中,所述执行参数、所述执行结果以及所述依赖组件信息的获取是通过异步的方式实现的。
13、在本说明书的一些实施例中,在应用程序的流水线中各节点的执行过程中,获取各节点的执行参数以及执行结果,包括:
14、在所述流水线的代码获取节点,获取所述应用程序的代码仓库信息、仓库分支信息以及代码版本信息;
15、在所述流水线的部署节点,获取所述应用程序的部署记录。
16、在本说明书的一些实施例中,基于各节点的执行参数以及执行结果,确定所述应用程序对应的程序代码信息以及部署对象信息,包括:
17、将所述代码仓库信息、所述仓库分支信息以及所述代码版本信息进行关联,生成所述程序代码信息;
18、从所述部署记录中提取部署对象以及应用程序信息,并将提取出的应用程序信息与所述部署对象关联,生成所述部署对象信息。
19、在本说明书的一些实施例中,在所述流水线的编译构建环节,获取所述应用程序的依赖组件信息,包括:
20、在所述编译构建环节,获取应用程序的依赖信息并输出为依赖日志文件;
21、对所述依赖日志文件进行解析,提取依赖组件以及依赖组件对应的信息,以对所述依赖日志文件进行结构化转换,得到所述依赖组件信息,所述依赖组件信息包括依赖组件以及依赖组件对应的数量和版本信息。
22、在本说明书的一些实施例中,基于所述依赖组件信息、所述程序代码信息、所述应用程序的信息以及所述部署对象信息,构建所述依赖组件知识库,包括:
23、基于所述依赖组件信息和所述程序代码信息,构建依赖组件与程序代码之间的第一关联关系;
24、基于依赖组件信息和所述部署对象信息,构建依赖组件与部署对象之间的第二关联关系;
25、基于所述应用程序的信息和所述部署对象信息,构建依赖组件与应用程序之间的第三关联关系以及应用程序与部署对象之间的第四关联关系;
26、基于所述第一关联关系、所述第二关联关系、所述第三关联关系和所述第四关联关系,构建所述依赖组件知识库。
27、在本说明书的一些实施例中,基于所述目标程序代码、所述目标应用程序和所述目标部署对象,确定引用所述目标依赖组件的代码位置信息以及生产服务信息,包括:
28、确定引用所述目标依赖组件的目标程序代码对应的目标代码库以及所述目标程序代码在所述目标代码库中的位置;
29、基于目标程序代码对应的代码库以及在代码库中的位置,生成所述代码位置信息;
30、获取引用所述目标依赖组件的目标部署对象的部署对象信息;
31、在所述目标部署对象中确定所述目标应用程序的路径信息;
32、基于所述路径信息和所述目标部署对象的部署对象信息,确定引用所述目标依赖组件的生产服务信息。
33、在本说明书的一些实施例中,基于所述目标程序代码、所述目标应用程序和所述目标部署对象,确定引用所述目标依赖组件的代码位置信息以及生产服务信息之后,还包括:
34、基于所述代码位置信息将所述应用程序的源代码中的目标依赖组件替换为待更新的依赖组件;
35、基于所述生产服务信息,将部署于目标部署对象的目标应用程序中的目标依赖组件替换为待更新的依赖组件。
36、本说明书第二方面提供了一种开源组件安全的识别装置,包括:
37、数据获取模块,用于在检测到存在漏洞的目标开源组件时,获取预先构建的依赖组件知识库,其中,所述依赖组件知识库包含依赖组件与程序代码、应用程序以及部署对象之间的关联关系;
38、依赖确定模块,用于从所述依赖组件知识库中查找与所述目标开源组件匹配的目标依赖组件,并确定所述目标依赖组件对应的目标程序代码、目标应用程序以及目标部署对象;
39、位置确定模块,用于基于所述目标程序代码、所述目标应用程序和所述目标部署对象,确定引用所述目标依赖组件的代码位置信息以及生产服务信息;
40、结果生成模块,用于基于所述代码位置信息以及所述生产服务信息,生成安全识别结果。
41、本说明书第三方面提供了一种电子设备,包括:
42、存储器和处理器,所述处理器和所述存储器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而上述第一方面所述方法的步骤。
43、本说明书第四方面提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序指令,所述计算机程序指令被执行时实现上述第一方面所述方法的步骤。
44、本说明书第五方面提供了一种计算机程序产品,包含有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述方法的步骤。
45、本说明书实施例中的开源组件安全的识别方法,在检测到存在漏洞的目标开源组件时,获取预先构建的依赖组件知识库,其中,依赖组件知识库包含依赖组件与程序代码、应用程序以及部署对象之间的关联关系;从依赖组件知识库中查找与目标开源组件匹配的目标依赖组件,并确定目标依赖组件对应的目标程序代码、目标应用程序以及目标部署对象;基于目标程序代码、目标应用程序和目标部署对象,确定引用目标依赖组件的代码位置信息以及生产服务信息;基于代码位置信息以及生产服务信息,生成安全识别结果。本说明书实施例中,预先构建的依赖组件知识库中不仅包含依赖组件与程序代码之间的关联关系,还包括依赖组件与应用程序以及部署对象之间的关联关系,进而在检测到存在漏洞的目标开源组件时,可以在依赖组件知识库中查找与目标开源组件匹配的目标依赖组件,进而基于依赖组件知识库中存储的关联关系,可以确定与目标依赖组件关联的目标程序代码、目标应用程序以及目标部署对象,也即通过本说明书实施例中的依赖组件知识库,不仅可以实现源代码端的开源组件的识别,还可以实现应用程序以及部署对象端的开源组件的识别,实现应用程序全周期的开源组件安全的识别,并且准确性以及效率更高。进一步的,基于目标程序代码、目标应用程序以及目标部署对象,可以快速、准确定地确定引用目标依赖组件的代码位置信息以及生产服务信息,提升开源安全漏洞修复的准确性和效率。
1.一种开源组件安全的识别方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述依赖组件知识库通过以下方式构建:
3.根据权利要求2所述的方法,其特征在于,所述执行参数、所述执行结果以及所述依赖组件信息的获取是通过异步的方式实现的。
4.根据权利要求2所述的方法,其特征在于,在应用程序的流水线中各节点的执行过程中,获取各节点的执行参数以及执行结果,包括:
5.根据权利要求4所述的方法,其特征在于,基于各节点的执行参数以及执行结果,确定所述应用程序对应的程序代码信息以及部署对象信息,包括:
6.根据权利要求2所述的方法,其特征在于,在所述流水线的编译构建环节,获取所述应用程序的依赖组件信息,包括:
7.根据权利要求2所述的方法,其特征在于,基于所述依赖组件信息、所述程序代码信息、所述应用程序的信息以及所述部署对象信息,构建所述依赖组件知识库,包括:
8.根据权利要求1所述的方法,其特征在于,基于所述目标程序代码、所述目标应用程序和所述目标部署对象,确定引用所述目标依赖组件的代码位置信息以及生产服务信息,包括:
9.根据权利要求1至8任一项所述的方法,其特征在于,基于所述目标程序代码、所述目标应用程序和所述目标部署对象,确定引用所述目标依赖组件的代码位置信息以及生产服务信息之后,还包括:
10.一种开源组件安全的识别装置,其特征在于,包括:
11.一种电子设备,其特征在于,包括:
12.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序指令,所述计算机程序指令被执行时实现权利要求1至9任一项所述方法的步骤。
13.一种计算机程序产品,其特征在于,包含有计算机程序,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述方法的步骤。
