供应链代码识别方法、装置、服务器及可读存储介质制造方法及图纸

技术编号:24681985 阅读:40 留言:0更新日期:2020-06-27 07:37
本说明书实施例公开一种供应链代码识别方法、装置、服务器及计算机可读存储介质,在所述供应链代码识别方法中,获取目标应用程序的目标代码,并生成目标代码对应的调用图谱,根据目标包名信息,在调用图谱包含的节点中筛选出与目标包名信息相匹配的目标节点集合,获取目标节点集合的目标特征值,若目标特征值满足预设的供应链节点特征值范围,则确定目标包名信息对应的代码块为供应链代码。通过上述方案,能够准确的在目标代码中识别出供应链代码,进而能够为避免不可信供应链代码带来的安全隐患提供的有效的前提条件。

Supply chain code identification method, device, server and readable storage medium

【技术实现步骤摘要】
供应链代码识别方法、装置、服务器及可读存储介质
本说明书实施例涉及计算机
,尤其涉及一种供应链代码识别方法、装置、服务器及可读存储介质。
技术介绍
随着科学技术的不断发展,电子技术也得到了飞速的发展,越来越多的功能可以通过安装在电子设备中的应用程序实现。现有技术中,在应用程序的开发过程中,会引入第三方SDK,即供应链代码,例如,在整个应用程序开发的项目中,会涉及大量团队,不同的团队可能需要使用不同的供应链代码完成各自的开发。
技术实现思路
本说明书实施例提供一种供应链代码识别方法、装置、服务器及计算机可读存储介质。第一方面,本说明书实施例提供一种供应链代码识别方法,该方法包括:获取目标应用程序的目标代码,所述目标代码中包含有所述目标应用程序在开发过程中使用的供应链代码;构建与所述目标代码对应的调用图谱,其中,所述调用图谱中包含多个节点,每个节点的节点属性包含有该节点所属代码块的包名信息;基于目标包名信息,在所述调用图谱包含的多个节点中筛选出包名信息与所述目标包名信息相匹配的节点,构成目标节点集合;获取所述目标节点集合的目标特征值,若所述目标特征值满足预设的供应链代码节点特征值范围,则确定所述目标包名信息对应的代码块为供应链代码。第二方面,本说明书实施例提供一种供应链代码识别装置,该装置包括:获取模块,用于获取目标应用程序的目标代码,所述目标代码中包含有所述目标应用程序在开发过程中使用的供应链代码;调用图谱构建模块,用于构建与所述目标代码对应的调用图谱,其中,所述调用图谱中包含多个节点,每个节点的节点属性包含有该节点所属代码块的包名信息;节点筛选模块,用于基于目标包名信息,在所述调用图谱包含的多个节点中筛选出包名信息与所述目标包名信息相匹配的节点,构成目标节点集合;识别模块,用于获取所述目标节点集合的目标特征值,若所述目标特征值满足预设的供应链代码节点特征值范围,则确定所述目标包名信息对应的代码块为供应链代码。第三方面,本说明书实施例提供一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行上述任一项所述方法的步骤。第四方面,本说明书实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。本说明书实施例有益效果如下:在本说明书实施例提供的供应链代码识别方法中,获取目标应用程序的目标代码,其中,目标代码中包含有目标应用程序在开发过程中使用的供应链代码,构建与目标代码对应的调用图谱,调用图谱中节点的节点属性包含有该节点所述代码块的包名信息,根据目标包名信息将调用图谱中的节点进行筛选,选出节点的包名信息与目标包名信息相匹配的节点,这些节点构成目标节点集合,通过检测节点集合的目标特征值是否满足预设的供应链代码节点特征值范围,来确定目标包名信息对应的代码块是否为供应链代码。本方案中,通过检测目标包名信息下的节点特征是否符合供应链代码的节点特征,来确定目标包名信息是否为供应链代码的包名信息,能够在庞大的目标代码中有效筛选出供应链代码。由于有些供应链代码为不可信代码,如果不能有效识别出供应链代码,则会导致不可信供应链代码威胁到应用程序的安全,通过上述方案,能够有效识别出供应链代码,为进一步的对供应链代码进行风险控制提供了基础。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本说明书的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1为本说明书实施例第一方面提供的一种供应链代码识别方法的流程图;图2为本说明书实施例第二方面提供的供应链代码识别装置的示意图;图3为本说明书实施例第三方面提供的服务器的示意图。具体实施方式为了更好的理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。第一方面,本说明书实施例提供一种供应链代码识别方法,该方法可以应用于电子设备,如用户终端、服务器等,通过本说明书实施例提供的方法,能够检测正在开发或已经开发完毕的应用程序中是否存在供应链代码,并将识别出的供应链代码进行标记,以加强供应链代码的风险控制。如图1所示,为本说明书实施例提供的供应链代码识别方法的流程图,该方法包括以下步骤:步骤S11:获取目标应用程序的目标代码,所述目标代码中包含有所述目标应用程序在开发过程中使用的供应链代码;步骤S12:构建与所述目标代码对应的调用图谱,其中,所述调用图谱中包含多个节点,每个节点的节点属性包含有该节点所属代码块的包名信息;步骤S13:基于目标包名信息,在所述调用图谱包含的多个节点中筛选出包名信息与所述目标包名信息相匹配的节点,构成目标节点集合;步骤S14:获取所述目标节点集合的目标特征值,若所述目标特征值满足预设的供应链代码节点特征值范围,则确定所述目标包名信息对应的代码块为供应链代码。本说明书实施例中,目标应用程序可以是已经开发完成的任意应用程序,也可以是正在开发的应用程序。在目标应用的开发过程中,通常会引入不可信的第三方提供的供应链代码,即非目标应用程序开发者自己研发的软件代码,而是由第三方提供的代码,例如,供应链代码可以为第三方SDK(SoftwareDevelopmentKit,软件开发工具包),即由第三方提供的具有特定功能的封装好的代码块。为了保证目标应用程序的安全,需要对供应链代码进行额外的安全措施,而进行安全措施的前提是能够准确的识别出这些供应链代码。本说明书实施例中,目标代码可以是目标应用程序的源代码,也可以是其他包含有供应链代码的其他代码。目标代码可以通过多种方式获取,例如直接获取目标应用程序在开发过程中编写的源代码,或者通过目标应用程序的APK包来获取目标代码,这里不做限定,目标代码中包含有引入的供应链代码。在获取目标代码之后,通过对目标代码进行遍历,生成目标代码的调用图谱,调用图谱由节点以及节点之间的关系构成,用来表征内部代码调用链路的复杂有向图。在具体实施过程中,通过对目标代码进行分析,获取调用图谱中的各个节点,调用图谱中的节点类型可以包括函数节点、变量节点等,每个节点都有各自的节点属性,节点属性中至少包括节点所属代码块的包名信息。进一步的,在生成调用图谱之后,基于调用图谱进行供应链代码的筛选。在具体实施过程中,目标包名信息可以是调用图谱中任意节点对应的包名信息,也可以是对调用图谱中任意节点对应的包名信息进行处理,如裁剪、提取等处理后得到包名信息,这里不做限定。本说明书实施例中,由于供应链代码的包名是未知的,因此,可以通过确本文档来自技高网...

【技术保护点】
1.一种供应链代码识别方法,所述方法包括:/n获取目标应用程序的目标代码,所述目标代码中包含有所述目标应用程序在开发过程中使用的供应链代码;/n构建与所述目标代码对应的调用图谱,其中,所述调用图谱中包含多个节点,每个节点的节点属性包含有该节点所属代码块的包名信息;/n基于目标包名信息,在所述调用图谱包含的多个节点中筛选出包名信息与所述目标包名信息相匹配的节点,构成目标节点集合;/n获取所述目标节点集合的目标特征值,若所述目标特征值满足预设的供应链代码节点特征值范围,则确定所述目标包名信息对应的代码块为供应链代码。/n

【技术特征摘要】
1.一种供应链代码识别方法,所述方法包括:
获取目标应用程序的目标代码,所述目标代码中包含有所述目标应用程序在开发过程中使用的供应链代码;
构建与所述目标代码对应的调用图谱,其中,所述调用图谱中包含多个节点,每个节点的节点属性包含有该节点所属代码块的包名信息;
基于目标包名信息,在所述调用图谱包含的多个节点中筛选出包名信息与所述目标包名信息相匹配的节点,构成目标节点集合;
获取所述目标节点集合的目标特征值,若所述目标特征值满足预设的供应链代码节点特征值范围,则确定所述目标包名信息对应的代码块为供应链代码。


2.根据权利要求1所述的方法,所述获取目标应用程序的目标代码,包括:
获取所述目标应用程序的二进制代码;
对所述二进制代码进行反编译,将反编译结果作为所述目标代码。


3.根据权利要求1所述的方法,所述构建与所述目标代码对应的调用图谱,包括:
对所述目标代码进行代码分析,提取每个节点的节点属性以及节点之间的关系,以构建图谱数据库;
基于所述图谱数据库,生成所述调用图谱。


4.根据权利要求1所述的方法,在所述基于目标包名信息,在所述调用图谱包含的多个节点中筛选出包名信息与所述目标包名信息相匹配的节点之前,所述方法还包括:
基于所述调用图谱中每个节点对应的包名信息,生成包名信息集合;
基于M个预设包名长度,分别对所述包名信息集合进行M轮包名裁剪,生成M组裁剪后的包名信息集合,其中,针对每轮包名裁剪,基于该轮包名裁剪对应的预设包名长度,将所述包名信息集合中的每个包名信息的长度裁剪成所述预设包名长度,生成该轮裁剪后的包名信息集合,M为正整数;
在所述M组裁剪后的包名信息集合中确定出所述目标包名信息。


5.根据权利要求4所述的方法,所述基于目标包名信息,在所述调用图谱包含的多个节点中筛选出包名信息与所述目标包名信息相匹配的节点,构成目标节点集合,包括:
遍历所述M组裁剪后的包名信息集合中的每个包名信息,通过以下步骤获得与每个包名信息对应的目标节点集合:
针对每组裁剪后的包名信息集合中的每个包名信息,将该包名信息作为所述目标包名信息,并基于该组裁剪后的包名信息集合对应的预设包名长度,对所述调用图谱中的每个节点的包名信息进行裁剪;基于所述目标包名信息,对每个节点的裁剪后的包名信息进行聚类,以获得与所述目标包名信息对应的目标节点集合,其中,所述目标节点集合中的每个节点的裁剪后的包名信息与所述目标包名信息之间的相似度不小于预设相似度。


6.根据权利要求1所述的方法,所述获取所述目标节点集合的目标特征值,若所述目标特征值满足预设的供应链代码节点特征值范围,则确定所述目标包名信息对应的代码块为供应链代码,包括:
获取所述目标节点集合中包含的节点总数、入口节点数、出口节点数、以及外部调用节点数;
将所述节点总数、所述入口节点数、所述出口节点数以及所述外部调用节点数与所述预设的供应链代码节点特征值范围进行匹配,若匹配成功,则确定与所述目标包名信息对应的代码块为供应链代码。


7.根据权利要求1所述的方法,若确定出多个供应链代码时,所述方法还包括:
确定所述多个供应链代码中每个供应链代码的风险等级;
基于所述每个供应链代码的风险等级,对所述每个供应链代码进行安全加固。


8.一种供应链代码识别装置,所述装置...

【专利技术属性】
技术研发人员:赵豪李文杰
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1