System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,尤其涉及一种软件成分分析方法、装置及设备。
技术介绍
1、随着互联网技术的发展,软件在各个领域中发挥着重要作用。软件开发的复杂性不断增加,为了提高软件开发效率,在软件开发中引入了第三方组件或开源组件,而这些第三方组件往往存在潜在的安全漏洞和风险。因此,在软件发布之前,需要对软件进行软件成分分析,基于软件成分进行安全检测,从而确保软件的安全性。
2、但目前的软件成分分析技术是通过对软件的源代码文件进行静态扫描的方式,确定软件所依赖的开源组件。但在实际应用中,这种方式检测得到的软件成分存在误检、漏检的情况,软件成分分析的准确性较低。
技术实现思路
1、本申请提供一种软件成分分析方法、装置及设备,用于提高软件成分分析的准确性。
2、第一方面,本申请实施例提供一种软件成分分析方法,包括:在目标软件运行过程中,监测并采集所述目标软件中正在加载的类文件信息;从所述类文件信息中,提取所述目标软件在运行过程中使用的n个开源组件以及所述n个开源组件的组件信息;根据所述n个开源组件的组件信息和预设的组件库,确定所述目标软件的第一成分信息,所述组件库包括开源组件与唯一标识的对应关系,所述第一成分信息包括n个开源组件、所述n个开源组件的唯一标识和组件信息,n为正整数;根据所述第一成分信息,确定所述目标软件的软件成分信息。
3、在本申请实施例中,由于开源组件在目标软件中实现相应功能是通过类文件加载的方式实现,通过在目标软件的运行过程中,监测目标软件中正在
4、在一种可能的实施方式中,所述组件库包括第一组件库和第二组件库,所述第一组件库为开源组件的参考元信息库,所述第二组件库为开源组件的参考五元组信息库;根据所述n个开源组件的组件信息和预设的组件库,确定所述目标软件的第一成分信息,包括:将所述n个开源组件中每个开源组件的组件信息与所述第一组件库进行匹配,记录所述n个开源组件中与所述第一组件库匹配成功的开源组件的唯一标识,并将所述n个开源组件中未与所述第一组件库匹配成功的开源组件确定为未知开源组件;根据所述未知开源组件在所述目标软件中的五元组信息和所述第二组件库,确定所述未知开源组件的唯一标识。
5、在一种可能的实施方式中,所述五元组信息包括所述未知开源组件对应的类名称、方法名、参数信息、类路径信息和引入依赖信息;根据所述未知开源组件在所述目标软件中的五元组信息和所述第二组件库,确定所述未知开源组件的唯一标识,包括:根据所述类名称、所述方法名和所述参数信息,确定所述第二组件库中是否存在候选开源组件,所述候选开源组件与所述未知开源组件的类名称、方法名和参数信息相同;若存在所述候选开源组件,则根据所述类路径信息、所述引入依赖信息和所述候选开源组件的五元组信息,确定所述未知开源组件的唯一标识;若不存在所述候选开源组件,则根据所述未知开源组件在所述目标软件中的类目录结构信息、方法返回值类型、参数数量和参数类型,从所述第二组件库中确定与所述未知开源组件匹配的唯一标识。
6、在一种可能的实施方式中,根据所述第一成分信息,确定所述目标软件的软件成分信息,包括:根据每个开源组件的唯一标识,确定所述第一成分信息和第二成分信息包括的开源组件是否相同,所述第二成分信息是对所述目标软件进行静态检测得到的,所述第二成分信息包括m个开源组件、所述m个开源组件的组件信息和唯一标识,m为正整数;若相同,则将所述n个开源组件、所述n个开源组件的组件信息和唯一标识与所述m个开源组件的组件信息融合后,确定为所述目标软件的软件成分信息;若不相同,则根据每个开源组件的唯一标识,确定所述m个开源组件中与所述n个开源组件匹配的目标开源组件,并将所述目标开源组件在所述第二成分信息中的组件信息和所述第一成分信息融合后,确定为所述目标软件的软件成分信息。
7、在一种可能的实施方式中,所述方法还包括:对所述目标软件的源代码文件和可执行文件进行静态扫描,获得所述目标软件的所述第二成分信息。
8、第二方面,本申请实施例提供一种软件成分分析装置,包括:监测模块,用于在目标软件运行过程中,监测并采集所述目标软件中正在加载的类文件信息;提取模块,用于从所述类文件信息中,提取所述目标软件在运行过程中使用的n个开源组件以及所述n个开源组件的组件信息;确定模块,用于根据所述n个开源组件的组件信息和预设的组件库,确定所述目标软件的第一成分信息,所述组件库包括开源组件与唯一标识的对应关系,所述第一成分信息包括n个开源组件、所述n个开源组件的唯一标识和组件信息,n为正整数;所述确定模块,还用于根据所述第一成分信息,确定所述目标软件的软件成分信息。
9、在一种可能的实施方式中,所述组件库包括第一组件库和第二组件库,所述第一组件库为开源组件的参考元信息库,所述第二组件库为开源组件的参考五元组信息库;所述确定模块,具体用于:将所述n个开源组件中每个开源组件的组件信息与所述第一组件库进行匹配,记录所述n个开源组件中与所述第一组件库匹配成功的开源组件的唯一标识,并将所述n个开源组件中未与所述第一组件库匹配成功的开源组件确定为未知开源组件;根据所述未知开源组件在所述目标软件中的五元组信息和所述第二组件库,确定所述未知开源组件的唯一标识。
10、在一种可能的实施方式中,所述五元组信息包括所述未知开源组件对应的类名称、方法名、参数信息、类路径信息和引入依赖信息;所述确定模块,具体用于:根据所述类名称、所述方法名和所述参数信息,确定所述第二组件库中是否存在候选开源组件,所述候选开源组件与所述未知开源组件的类名称、方法名和参数信息相同;若存在所述候选开源组件,则根据所述类路径信息、所述引入依赖信息和所述候选开源组件的五元组信息,确定所述未知开源组件的唯一标识;若不存在所述候选开源组件,则根据所述未知开源组件在所述目标软件中的类目录结构信息、方法返回值类型、参数数量和参数类型,从所述第二组件库中确定与所述未知开源组件匹配的唯一标识。
11、在一种可能的实施方式中,所述确定模块,具体用于:根据每个开源组件的唯一标识,确定所述第一成分信息和第二成分信息包括的开源组件是否相同,所述第二成分信息是对所述目标软件进行静态检测得到的,所述第二成分信息包括m个开源组件、所述m个开源组件的组件信息和唯一标识,m为正整数;若相同,则将所述n个开源组件、所述n个开源组件的组件信息和唯一标识与所述m个开源组件的组件信息融合后,确定为所述目标软件的软件成分信息;若不相同,则根据每个开源组件的唯一标识,确定所述m个开源组件中与所述n个开源组件匹配的目标开源组件,并将所述目标开源组件在所述第二成分信息中的组件信息和所述第一成分信息融合后,确定为所述目标软件的软件成分信息。
12本文档来自技高网...
【技术保护点】
1.一种软件成分分析方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述组件库包括第一组件库和第二组件库,所述第一组件库为开源组件的参考元信息库,所述第二组件库为开源组件的参考五元组信息库;
3.根据权利要求2所述的方法,其特征在于,所述五元组信息包括所述未知开源组件对应的类名称、方法名、参数信息、类路径信息和引入依赖信息;
4.根据权利要求1-3任一项所述的方法,其特征在于,根据所述第一成分信息,确定所述目标软件的软件成分信息,包括:
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.一种软件成分分析装置,其特征在于,包括:
7.根据权利要求6所述的装置,其特征在于,所述组件库包括第一组件库和第二组件库,所述第一组件库为开源组件的参考元信息库,所述第二组件库为开源组件的参考五元组信息库;
8.根据权利要求7所述的装置,其特征在于,所述五元组信息包括所述未知开源组件对应的类名称、方法名、参数信息、类路径信息和引入依赖信息;
9.一种软件成分分析设备,其
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如权利要求1-5中任一项所述的方法。
11.一种计算机程序产品,其特征在于,包含有计算机指令,当其在计算机上运行时,使得上述如权利要求1-5中任一项所述的方法被实现。
...【技术特征摘要】
1.一种软件成分分析方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述组件库包括第一组件库和第二组件库,所述第一组件库为开源组件的参考元信息库,所述第二组件库为开源组件的参考五元组信息库;
3.根据权利要求2所述的方法,其特征在于,所述五元组信息包括所述未知开源组件对应的类名称、方法名、参数信息、类路径信息和引入依赖信息;
4.根据权利要求1-3任一项所述的方法,其特征在于,根据所述第一成分信息,确定所述目标软件的软件成分信息,包括:
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.一种软件成分分析装置,其特征在于,包括:
7.根据权利要求6所述的装...
【专利技术属性】
技术研发人员:江冠儒,宋国栋,
申请(专利权)人:天翼安全科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。