本申请公开一种组件检测方法、装置、电子设备及存储介质,属于互联网技术领域,该方法包括:提取待检测的源代码文件的有向函数调用信息,基于有向函数调用信息,生成有向函数的调用图,基于有向函数的调用图,确定各重叠社区,并对各重叠社区进行聚类优化,得到目标重叠社区,其中,任意两个重叠社区存在至少一个相同的代码片段,同一代码片段内含有相同的有向函数调用信息,对各目标重叠社区以及源代码文件中各函数进行软件成分分析,得到待检测源代码文件中各开源组件的特征信息,基于各特征信息,确定源代码文件包括的各目标开源组件。可以使源代码文件中开源组件的检测更加准确,提高了组件检测准确度。提高了组件检测准确度。提高了组件检测准确度。
【技术实现步骤摘要】
一种组件检测方法、装置、电子设备及存储介质
[0001]本申请涉及互联网
,尤其涉及一种组件检测方法、装置、电子设备及存储介质。
技术介绍
[0002]随着开源组件在软件研发过程中的应用范围不断扩大,开源组件已经进入各个领域的开发当中,例如日常使用的手机、平板、电视、手环等电子产品,以及由大型计算机、服务器等组成的系统中均存在开源组件。由于开源组件可能存在漏洞,因此,对软件供应链系统中的开源组件进行安全检测与防护尤为重要。
[0003]现有技术中,开发人员在进行软件开发时通常会对开源组件进行加工,因此仅通过对源代码进行软件成分分析识别出来的开源组件并不准确,甚至会产生误报。由于无法准确评估源代码中可能存在的漏洞,也就无法针对漏洞进行修复,从而对项目造成不可预估的风险。
技术实现思路
[0004]本申请实施例提供一种组件检测方法、装置、电子设备及存储介质,用以提高开源组件的检测准确率。
[0005]第一方面,本申请实施例提供一种组件检测方法,包括:
[0006]提取待检测的源代码文件的有向函数调用信息;
[0007]基于所述有向函数调用信息,生成有向函数的调用图;
[0008]基于所述有向函数的调用图,确定各重叠社区,并对所述各重叠社区进行聚类优化,得到目标重叠社区,其中,任意两个重叠社区存在至少一个相同的代码片段,同一代码片段内含有相同的有向函数调用信息;
[0009]对各所述目标重叠社区以及所述源代码文件中各函数进行软件成分分析,得到所述待检测源代码文件中各开源组件的特征信息;
[0010]基于所述各特征信息,确定所述源代码文件包括的各目标开源组件。
[0011]在一些实施例中,所述对所述各重叠社区进行聚类优化,包括:
[0012]基于所述各重叠社区的内部结构和调用关系以及所述各重叠社区的层次结构,对所述各重叠社区进行聚类优化,得到所述目标重叠社区;其中所述内部结构表征重叠社区的代码构成信息,所述调用关系表征重叠社区内的函数指向信息,所述层次结构表征重叠社区之间的依赖关系。
[0013]在一些实施例中,所述对各目标重叠社区以及所述源代码文件中各函数进行软件成分分析,得到所述待检测源代码文件中各开源组件的特征信息,包括:
[0014]对所述各目标重叠社区以及所述源代码文件中各函数进行软件成分分析,得到所述待检测源代码文件中的多个特征元素,其中所述特征元素用于表征开源组件的特征;
[0015]提取所述多个特征元素的词向量特征;
[0016]采用欧氏距离公式对所述提取的各词向量特征进行计算,得到所述待检测源代码文件中各开源组件的特征信息。
[0017]在一些实施例中,所述基于所述各特征信息,确定所述源代码文件包括的各目标开源组件,包括:
[0018]基于所述各特征信息,从预先构建的开源组件与所述开源组件对应的特征信息的映射关系中,确定所述各特征信息对应的开源组件,并将确定出的开源组件作为所述源代码文件包括的目标开源组件。
[0019]在一些实施例中,所述检测出所述源代码文件包括的目标开源组件之后,还包括:
[0020]基于所述各目标开源组件的标识信息,从预先构建的各目标开源组件的标识信息及其对应的漏洞信息的对应关系中,确定各所述目标开源组件的漏洞信息;所述漏洞信息包括漏洞编号、漏洞描述以及漏洞修复建议中的部分或全部。
[0021]第二方面,本申请实施例提供一种组件检测装置,包括:
[0022]提取模块,用于提取待检测的源代码文件的有向函数调用信息;
[0023]生成模块,用于基于所述有向函数调用信息,生成有向函数的调用图;
[0024]第一确定模块,用于基于所述有向函数的调用图,确定各重叠社区,并对所述各重叠社区进行聚类优化,得到目标重叠社区,其中,任意两个重叠社区存在至少一个相同的代码片段,同一代码片段内含有相同的有向函数调用信息;
[0025]分析模块,用于对各所述目标重叠社区以及所述源代码文件中各函数进行软件成分分析,得到所述待检测源代码文件中各开源组件的特征信息;
[0026]第二确定模块,用于基于所述各特征信息,确定所述源代码文件包括的各目标开源组件。
[0027]在一些实施例中,所述第一确定模块,具体用于:
[0028]基于所述各重叠社区的内部结构和调用关系以及所述各重叠社区的层次结构,对所述各重叠社区进行聚类优化,得到所述目标重叠社区;其中所述内部结构表征重叠社区的代码构成信息,所述调用关系表征重叠社区内的函数指向信息,所述层次结构表征重叠社区之间的依赖关系。
[0029]在一些实施例中,所述分析模块,具体用于:
[0030]对所述各目标重叠社区以及所述源代码文件中各函数进行软件成分分析,得到所述待检测源代码文件中的多个特征元素,其中所述特征元素用于表征开源组件的特征;
[0031]提取所述多个特征元素的词向量特征;
[0032]采用欧氏距离公式对所述提取的各词向量特征进行计算,得到所述待检测源代码文件中各开源组件的特征信息。
[0033]在一些实施例中,所述第二确定模块,具体用于:
[0034]基于所述各特征信息,从预先构建的开源组件与所述开源组件对应的特征信息的映射关系中,确定所述各特征信息对应的开源组件,并将确定出的开源组件作为所述源代码文件包括的目标开源组件。
[0035]在一些实施例中,还包括:
[0036]第三确定模块,用于所述第二确定模块检测出所述源代码文件包括的目标开源组件之后,基于所述各目标开源组件的标识信息,从预先构建的各目标开源组件的标识信息
及其对应的漏洞信息的对应关系中,确定各所述目标开源组件的漏洞信息;所述漏洞信息包括漏洞编号、漏洞描述以及漏洞修复建议中的部分或全部。
[0037]第三方面,本申请实施例提供一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中:
[0038]存储器存储有可被至少一个处理器执行的计算机程序,该计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述组件检测方法。
[0039]第四方面,本申请实施例提供一种计算机可读存储介质,当所述计算机可读存储介质中的计算机程序由电子设备的处理器执行时,所述电子设备能够执行上述组件检测方法。
[0040]本申请实施例中,提取待检测的源代码文件的有向函数调用信息,基于有向函数调用信息,生成有向函数的调用图,基于有向函数的调用图,确定各重叠社区,并对各重叠社区进行聚类优化,得到目标重叠社区,其中,任意两个重叠社区存在至少一个相同的代码片段,同一代码片段内含有相同的有向函数调用信息,对各目标重叠社区以及源代码文件中各函数进行软件成分分析,得到待检测源代码文件中各开源组件的特征信息,基于各特征信息,确定源代码文件包括的各目标开源组件。这样,先对源代码文件中的重叠社区进行聚类优化分析,再结合软件本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种组件检测方法,其特征在于,包括:提取待检测的源代码文件的有向函数调用信息;基于所述有向函数调用信息,生成有向函数的调用图;基于所述有向函数的调用图,确定各重叠社区,并对所述各重叠社区进行聚类优化,得到目标重叠社区,其中,任意两个重叠社区存在至少一个相同的代码片段,同一代码片段内含有相同的有向函数调用信息;对各所述目标重叠社区以及所述源代码文件中各函数进行软件成分分析,得到所述待检测源代码文件中各开源组件的特征信息;基于所述各特征信息,确定所述源代码文件包括的各目标开源组件。2.如权利要求1所述的方法,其特征在于,所述对所述各重叠社区进行聚类优化,包括:基于所述各重叠社区的内部结构和调用关系以及所述各重叠社区的层次结构,对所述各重叠社区进行聚类优化,得到所述目标重叠社区;其中所述内部结构表征重叠社区的代码构成信息,所述调用关系表征重叠社区内的函数指向信息,所述层次结构表征重叠社区之间的依赖关系。3.如权利要求1所述的方法,其特征在于,所述对各目标重叠社区以及所述源代码文件中各函数进行软件成分分析,得到所述待检测源代码文件中各开源组件的特征信息,包括:对所述各目标重叠社区以及所述源代码文件中各函数进行软件成分分析,得到所述待检测源代码文件中的多个特征元素,其中所述特征元素用于表征开源组件的特征;提取所述多个特征元素的词向量特征;采用欧氏距离公式对所述提取的各词向量特征进行计算,得到所述待检测源代码文件中各开源组件的特征信息。4.如权利要求1所述的方法,其特征在于,所述基于所述各特征信息,确定所述源代码文件包括的各目标开源组件,包括:基于所述各特征信息,从预先构建的开源组件与所述开源组件对应的特征信息的映射关系中,确定所述各特征信息对应的开源组件,并将确定出的开源组件作为所述源代码文件包括的目标开源组件。5.如权利要求1所述的方法,其特征在于,所述检测出所述源代码文件包括的目标开源组件之后,还包括:基于所述各目标开源组件的标识信息,从预先构建的各目标开源组件的标识信息及其对应的漏洞信息的对应关系中,确定各所述目标开源组件的漏洞信息;所述漏洞信...
【专利技术属性】
技术研发人员:姚倩,
申请(专利权)人:中国电信股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。