一种文件处理方法及相关设备与流程

文档序号:36405833发布日期:2023-12-16 13:05阅读:60来源:国知局
一种文件处理方法及相关设备与流程

本申请实施例涉及计算机领域,尤其涉及一种文件处理方法及相关设备。


背景技术:

1、随着计算机技术的发展,开源软件检测技术的应用也越来越广泛。

2、业界普遍采用软件成分分析方法(software component analysis,sca)来判断被测对象(例如二进制文件)中引用的开源软件名称及版本号,从而完成开源软件检测。

3、但是在实际软件开发过程中并不需要全量使用引入开源软件的所有功能,而sca确定出的开源软件名称和版本号涵盖了其中所有代码,因此sca的检测结果不够准确。


技术实现思路

1、本申请实施例提供一种文件处理方法,用于提高开源软件检测的准确性。本申请实施例还提供了相应的计算机可读存储介质及芯片系统等。

2、本申请第一方面提供一种文件处理方法,包括:获取二进制文件和开源软件特征库,开源软件特征库包括开源软件中每个源代码文件的第一文件特征;提取二进制文件中的第二文件特征;将第一文件特征和第二文件特征进行匹配,以确定二进制文件与每个源代码文件的相似度;根据相似度从每个源代码文件中确定出参与二进制文件编译的目标源代码文件。

3、本申请中,该文件处理方法可以在计算机设备中执行,二进制文件是由开源软件中的源代码文件(或功能模块)编译后链接得到的。该二进制文件为最小二进制文件,当用户上传的是二进制软件包,而不是最小二进制文件时,计算机设备还需要解压二进制软件包得到最小二进制文件,否则会影响后续的匹配。

4、本申请中的开源软件特征库可以是预设在计算机设备中,也可以是计算机设备实时建立的。开源软件特征库中的开源软件可以为市面全部已知的开源软件。

5、本申请中,提取的第一文件特征和第二文件特征可以为提取常量字符串、函数名称等信息。第一文件特征和第二文件特征都为一个特征集合。

6、本申请中,杰卡德距离(jaccard distance)是用来衡量两个集合差异性的一种指标,因此可以计算第一文件特征和第二文件特征中的杰卡德距离作为二进制文件与每个源代码文件的相似度。

7、该第一方面,通过获取开源软件中每个源代码文件的文件特征,并与作为被测对象的二进制文件进行匹配,从而在每个源代码文件中确定出参与二进制文件编译的目标源代码文件,即确定出二进制文件引用的开源软件名称及版本号中,具体的源代码文件,实现更细粒度的特征检测,提高了开源软件检测的准确性。

8、在第一方面的一种可能的实现方式中,第一文件特征包括每个源代码文件的源文件特征和关联源代码文件的关联文件特征,关联源代码文件与源代码文件具有强依赖关系。

9、该种可能的实现方式中,确定第一文件特征中除了包括源代码文件的特征,还包括与源代码文件具有强依赖关系的关联源代码文件的特征,很好地解决了那些缺少特征而导致无法检测的源代码文件的问题,使得检测精准度更进一步的提升。

10、在第一方面的一种可能的实现方式中,上述步骤:获取开源软件特征库包括:获取开源软件中每个源代码文件的源文件特征和函数调用关系;根据函数调用关系和每个源代码文件的引用信息确定出关联源代码文件;获取关联源代码文件的关联文件特征;将源文件特征和关联文件特征进行融合,得到开源软件特征库。

11、该种可能的实现方式中,通过获取开源软件中每个源代码文件的源文件特征和函数调用关系确定关联源代码文件,提升了方案的可实现性。

12、在第一方面的一种可能的实现方式中,该方法还包括:获取组件漏洞库,组件漏洞库包括每个源代码文件的漏洞信息;从漏洞信息中确定出目标源代码文件的目标漏洞信息。

13、该种可能的实现方式中,在完成开源软件检测后,还可以确定二进制文件引用的开源软件和版本号存在的漏洞,从而确定被测对象的漏洞,并生成对应的漏洞扫描报告。根据二进制文件具体涉及的目标源代码文件找到对应的漏洞信息,实现更细粒度的漏洞检测,可以区分出哪些已知漏洞是该二进制文件不涉及的,提高了漏洞扫描报告的准确性。

14、在第一方面的一种可能的实现方式中,上述步骤:获取组件漏洞库包括:获取开源软件的补丁文件;根据补丁文件确定每个源代码文件的漏洞信息。

15、该种可能的实现方式中,通过获取开源软件的补丁文件来确定每个源代码文件的漏洞信息,进而生成组件漏洞库,提升了方案的可实现性。

16、在第一方面的一种可能的实现方式中,漏洞信息包括源代码文件名称、函数名称和源代码片段信息。

17、该种可能的实现方式中,漏洞信息具体包括了源代码文件名称、函数名称和源代码片段信息,即生成具体的精准定位三元组信息,因此在具有三元组信息的基础上,检测到未编译源代码信息后,可以准确的确定该文件影响到的已知漏洞对象。

18、本申请第二方面,提供了一种计算机设备,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该计算机设备包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的模块或单元,如:获取单元、提取单元、匹配单元和确定单元等。

19、本申请第三方面提供一种计算机设备,包括:处理器、通信接口和存储器,所述存储器用于存储程序代码,所述处理器用于调用所述存储器中的程序代码以使得所述计算机设备执行第一方面或第一方面的任意可能的实现方式中的方法。

20、本申请第四方面提供一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行如第一方面或第一方面的任意可能的实现方式中的方法。

21、本申请第五方面提供了一种芯片系统,该芯片系统包括至少一个处理器和接口,该接口用于接收数据和/或信号,至少一个处理器用于支持计算机设备实现上述第一方面或第一方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器,用于保存计算机设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。

22、本申请第六方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当计算机执行指令被处理器执行时,处理器执行如上述第一方面或第一方面任意一种可能的实现方式的方法。

23、本申请实施例中,通过获取开源软件中每个源代码文件的文件特征,并与作为被测对象的二进制文件进行匹配,从而在每个源代码文件中确定出参与二进制文件编译的目标源代码文件,即确定出二进制文件引用的开源软件名称及版本号中,具体的源代码文件,实现更细粒度的特征检测,提高了开源软件检测的准确性。



技术特征:

1.一种文件处理方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述第一文件特征包括所述每个源代码文件的源文件特征和关联源代码文件的关联文件特征,所述关联源代码文件与源代码文件具有强依赖关系。

3.根据权利要求2所述的方法,其特征在于,所述获取开源软件特征库包括:

4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:

5.根据权利要求4所述的方法,其特征在于,所述获取组件漏洞库包括:

6.根据权利要求4或5所述的方法,其特征在于,所述漏洞信息包括源代码文件名称、函数名称和源代码片段信息。

7.一种计算机设备,其特征在于,包括:

8.根据权利要求7所述的设备,其特征在于,所述第一文件特征包括所述每个源代码文件的源文件特征和关联源代码文件的关联文件特征,所述关联源代码文件与源代码文件具有强依赖关系。

9.根据权利要求8所述的设备,其特征在于,所述获取单元具体用于获取所述开源软件中每个源代码文件的源文件特征和函数调用关系;根据所述函数调用关系和所述每个源代码文件的引用信息确定出关联源代码文件;获取所述关联源代码文件的关联文件特征;将所述源文件特征和所述关联文件特征进行融合,得到所述开源软件特征库。

10.根据权利要求7-9中任一项所述的设备,其特征在于,所述获取单元还用于获取组件漏洞库,所述组件漏洞库包括所述每个源代码文件的漏洞信息;所述确定单元还用于从所述漏洞信息中确定出所述目标源代码文件的目标漏洞信息。

11.根据权利要求10所述的设备,其特征在于,所述获取单元具体用于获取所述开源软件的补丁文件;根据所述补丁文件确定所述每个源代码文件的漏洞信息。

12.根据权利要求10或11所述的设备,其特征在于,所述漏洞信息包括源代码文件名称、函数名称和源代码片段信息。

13.一种计算机设备,其特征在于,包括:处理器、通信接口和存储器,所述存储器用于存储程序代码,所述处理器用于调用所述存储器中的程序代码以使得所述控制器执行如权利要求1-6中任一项所述的方法。

14.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1-6中任一项所述的方法。

15.一种芯片系统,其特征在于,包括至少一个处理器和接口,所述接口用于接收数据和/或信号,所述至少一个处理器被配置为用于执行如权利要求1-6中任一项所述的方法。


技术总结
本申请实施例公开了一种文件处理方法及相关设备,该文件处理方法具体包括:通过获取开源软件中每个源代码文件的文件特征,并与作为被测对象的二进制文件进行匹配,从而在每个源代码文件中确定出参与二进制文件编译的目标源代码文件,即确定出二进制文件引用的开源软件名称及版本号中,具体的源代码文件,实现更细粒度的特征检测,提高了开源软件检测的准确性。

技术研发人员:郑志强
受保护的技术使用者:华为云计算技术有限公司
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1