一种源代码分析方法、装置、电子设备及存储介质制造方法及图纸

技术编号:39299641 阅读:32 留言:0更新日期:2023-11-07 11:08
本申请公开了一种源代码分析方法、装置、电子设备及存储介质,涉及代码溯源技术领域。该方法包括:首先,对目标源码文件进行AST分析,得到该目标源码文件的第一目标AST;然后,识别目标源码文件中的跨函数片段,并根据神经网络模型对跨函数片段进行分析,得到跨函数片段的跨函数分析结果,将分析结果加载到第一目标AST中,得到第二目标AST;最后,获取第二目标AST中的目标函数特征,将目标函数特征与特征词库中所有函数特征进行比对,并根据比对后的比对结果生成该目标源码文件的溯源分析报告,用以提高对对源代码溯源分析的准确性。用以提高对对源代码溯源分析的准确性。用以提高对对源代码溯源分析的准确性。

【技术实现步骤摘要】
一种源代码分析方法、装置、电子设备及存储介质


[0001]本申请涉及代码溯源
,尤其涉及一种源代码分析方法、装置、电子设备及存储介质。

技术介绍

[0002]在软件供应链应用场景中,为了提升应用软件研发效率会从外部引入大量开源组件。然而,引入的开源组件可能会存在各种漏洞与开源协议风险,导致开源组件所存在的风险影响应用软件的整体研发。因此,对开源组件的源代码进行溯源分析也必不可少。
[0003]源代码也称源程序,是指一系列人类可读的计算机语言指令。源代码最为常用的格式是文本文件,一般以源码文件的形式呈现。源码文件的安全可靠,也是计算机设备正常运行的重要因素。当源码文件存在漏洞不但会影响应用软件的整体研发,还会影响到计算机设备的正常运行,甚至对计算机设备造成安全威胁。
[0004]目前,对于源码文件进行溯源分析主要依赖于特征词库匹配的方式,将出现过安全漏洞的历史源码文件进行收集,通过信息合并、特征提取等手段构建特征词库。当需要对当前的源码文件进行分析时,将源码文件与特征词库进行匹配,若源码文件中存在与特征词库相匹配的数据,则说明源码文件可能存在安全漏洞,此时可以将该源码文件交由技术人员进一步审核。
[0005]然而,特征词库包含的特征信息形式较为固定且数量有限,因此基于特征词库检测源码文件漏洞的准确性较低,对于一些不常见的漏洞形式,基于特征词库往往无法检测出来。

技术实现思路

[0006]本申请提供了一种源代码分析方法,用以提高对源代码溯源分析的准确性。
[0007]第一方面,提供一种源代码分析方法,包括:
[0008]对目标源码文件进行AST分析,得到所述目标源码文件的第一目标AST;
[0009]识别所述目标源码文件中的跨函数片段,并根据神经网络模型对所述跨函数片段进行分析,得到所述跨函数片段的跨函数分析结果;
[0010]将所述分析结果加载到所述第一目标AST中,得到第二目标AST;
[0011]获取所述第二目标AST中的目标函数特征,将所述目标函数特征与特征词库中所有函数特征进行比对,并根据比对后的比对结果生成所述目标源码文件的溯源分析报告。
[0012]可选的,所述对目标源码文件进行AST分析,得到所述目标源码文件的第一目标AST,包括:
[0013]识别所述目标源码文件中的函数片段;其中,所述函数片段包括N个函数结构,所述N为大于1的整数;
[0014]对所述N个函数结构进行向量表征,得到向量化的函数特征;
[0015]根据所述N个函数结构各自在AST上对应的节点,确定所述N个函数结构之间的路
径关系,并生成程序依赖图和数据流分析结果;
[0016]根据所述函数特征、所述程序依赖图,以及所述数据流分析结果,生成所述目标源码文件的第一目标AST。
[0017]可选的,所述根据神经网络模型对所述跨函数片段进行分析,包括:
[0018]将所述跨函数片段按照设定长度进行切片,得到切片后的跨函数片段;
[0019]从所述切片后的跨函数片段中提取各自的跨函数体;
[0020]将所述各自的跨函数体输入到所述神经网络模型中进行聚类,并基于softmax函数对所述各自的跨函数体进行加权。
[0021]可选的,所述将所述目标函数特征与特征词库中所有函数特征进行比对,并根据比对后的比对结果生成所述目标源码文件的溯源分析报告,包括:
[0022]分别计算所述目标函数特征与所述特征词库中所有函数特征之间的相似度;
[0023]当所述所有函数特征中的第一函数特征与所述目标函数特征之间的相似度满足相似度要求时,获取所述第一函数特征的函数信息;
[0024]根据所述函数信息,生成所述目标源码文件的溯源分析报告。
[0025]可选的,所述对目标源码文件进行抽象语法树AST分析之前,还包括:
[0026]获取原始源码文件;
[0027]对所述原始源码文件进行编译处理,得到所述目标源码文件。
[0028]第二方面,提供一种源代码分析装置,包括:
[0029]语法树构建模块,用于对目标源码文件进行AST分析,得到所述目标源码文件的第一目标AST;
[0030]跨函数分析模块,用于识别所述目标源码文件中的跨函数片段,并根据神经网络模型对所述跨函数片段进行分析,得到所述跨函数片段的跨函数分析结果;
[0031]加载模块,用于将所述分析结果加载到所述第一目标AST中,得到第二目标AST;
[0032]溯源分析模块,用于获取所述第二目标AST中的目标函数特征,将所述目标函数特征与特征词库中所有函数特征进行比对,并根据比对后的比对结果生成所述目标源码文件的溯源分析报告。
[0033]可选的,所述语法树构建模块,具体用于:
[0034]识别所述目标源码文件中的函数片段;其中,所述函数片段包括N个函数结构,所述N为大于1的整数;
[0035]对所述N个函数结构进行向量表征,得到向量化的函数特征;
[0036]根据所述N个函数结构各自在AST上对应的节点,确定所述N个函数结构之间的路径关系,并生成程序依赖图和数据流分析结果;
[0037]根据所述函数特征、所述程序依赖图,以及所述数据流分析结果,生成所述目标源码文件的第一目标AST。
[0038]可选的,所述跨函数分析模块,具体用于:
[0039]将所述跨函数片段按照设定长度进行切片,得到切片后的跨函数片段;
[0040]从所述切片后的跨函数片段中提取各自的跨函数体;
[0041]将所述各自的跨函数体输入到所述神经网络模型中进行聚类,并基于softmax函数对所述各自的跨函数体进行加权。
[0042]可选的,所述溯源分析模块,具体用于:
[0043]分别计算所述目标函数特征与所述特征词库中所有函数特征之间的相似度;
[0044]当所述所有函数特征中的第一函数特征与所述目标函数特征之间的相似度满足相似度要求时,获取所述第一函数特征的函数信息;
[0045]根据所述函数信息,生成所述目标源码文件的溯源分析报告。
[0046]可选的,所述装置还包括编译模块;所述编译模块用于获取原始源码文件;对所述原始源码文件进行编译处理,得到所述目标源码文件。
[0047]第三方面,提供一种电子设备,包括:
[0048]存储器,用于存放计算机程序;处理器,用于执行所述存储器上所存放的计算机程序时,实现第一方面中任一项所述的方法步骤。
[0049]第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中任一项所述的方法步骤。
[0050]本申请实施例中,有益效果如下:
[0051]首先,对目标源码文件进行AST分析,得到该目标源码文件的第一目标AST;然后,识别目标源码文件中的跨函数片段,并根据神经本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种源代码分析方法,其特征在于,包括:对目标源码文件进行抽象语法树AST分析,得到所述目标源码文件的第一目标AST;识别所述目标源码文件中的跨函数片段,并根据神经网络模型对所述跨函数片段进行分析,得到所述跨函数片段的跨函数分析结果;将所述分析结果加载到所述第一目标AST中,得到第二目标AST;获取所述第二目标AST中的目标函数特征,将所述目标函数特征与特征词库中所有函数特征进行比对,并根据比对后的比对结果生成所述目标源码文件的溯源分析报告。2.如权利要求1所述的方法,其特征在于,所述对目标源码文件进行抽象语法树AST分析,得到所述目标源码文件的第一目标AST,包括:识别所述目标源码文件中的函数片段;其中,所述函数片段包括N个函数结构,所述N为大于1的整数;对所述N个函数结构进行向量表征,得到向量化的函数特征;根据所述N个函数结构各自在AST上对应的节点,确定所述N个函数结构之间的路径关系,并生成程序依赖图和数据流分析结果;根据所述函数特征、所述程序依赖图,以及所述数据流分析结果,生成所述目标源码文件的第一目标AST。3.如权利要求1所述的方法,其特征在于,所述根据神经网络模型对所述跨函数片段进行分析,包括:将所述跨函数片段按照设定长度进行切片,得到切片后的跨函数片段;从所述切片后的跨函数片段中提取各自的跨函数体;将所述各自的跨函数体输入到所述神经网络模型中进行聚类,并基于softmax函数对所述各自的跨函数体进行加权。4.如权利要求1所述的方法,其特征在于,所述将所述目标函数特征与特征词库中所有函数特征进行比对,并根据比对后的比对结果生成所述目标源码文件的溯源分析报告,包括:分别计算所述目标函数特征与所述特征词库中所有函数特征之间的相似度;当所述所有函数特征中的第一函数特征与所述目标函数特征之间的相似度满足相似度要求时,获取所述第一函数特征的函数信息;根据所述函数信息,生成所述目标源码文件的溯源分析报告。5.如权利要求1

4任一项所述的方法,其特征在于,所述对目标源码文件进行抽象语法树AST分析之前,还包括:获取原始源码文件;对所述原始源码文件进行编译处理,得到所述目标源码文件。6.一种源代码分析装置,其特征在于,包括:语法树构建模块,用于对目标源码文件进行抽象语法树AST分析,得到所述目标源码文件的第一目标AST;跨...

【专利技术属性】
技术研发人员:姚倩
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:

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

1