文件安全风险检测方法、模型的训练方法、装置和设备
文献发布时间:2023-06-19 13:45:04
技术领域
本申请涉及网络安全技术领域,特别是涉及一种文件安全风险检测方法、用于文件安全风险检测的模型的训练方法、装置、设备和计算机可读存储介质。
背景技术
源代码也称源程序,是指一系列人类可读的计算机语言指令。源代码最为常用的格式是文本文件,一般以源码文件的形式呈现。源码文件的安全可靠,是计算机设备正常运行的重要因素。当源码文件存在漏洞时会影响到计算机设备的正常运行,甚至对计算机设备造成安全威胁。
目前对于源码文件的文件安全风险的检测主要依赖于特征词库匹配的方式,将出现过安全漏洞的历史源码文件进行收集,通过信息合并、特征提取等手段构建特征词库。当需要对当前的源码文件进行文件安全风险的检测时,将源码文件与特征词库进行匹配,若源码文件中存在与特征词库匹配的数据,则说明源码文件可能存在安全漏洞,此时可以将该源码文件交由管理人员进一步审核。
由于特征词库包含的特征信息形式较为固定且数量有限,因此基于特征词库检测源码文件漏洞的准确性较低,对于一些不常见的漏洞形式,基于特征词库往往无法检测出来。
可见,如何提升文件安全风险的准确性,是本领域技术人员需要解决的问题。
发明内容
本申请实施例的目的是提供一种文件安全风险检测方法、用于文件安全风险检测的模型的训练方法、装置、设备和计算机可读存储介质,可以提升文件安全风险的准确性。
为解决上述技术问题,本申请实施例提供一种文件安全风险检测方法,包括:
将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量;
利用训练好的层级网络模型对所述源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;并对各所述代码段和各所述代码句进行语义分析,以确定出所述源码文件存在安全漏洞的风险。
可选地,所述对各所述代码段和各所述代码句进行语义分析,以确定出所述源码文件存在安全漏洞的风险包括:
依据所述层级网络模型中各层级注意力向量,对所述源码特征向量中包含的代码段和代码句进行量化;
根据量化后的代码段和量化后的代码句,确定出所述源码文件存在安全漏洞的风险。
可选地,所述依据所述层级网络模型中各层级注意力向量,对所述源码特征向量中包含的代码段和代码句进行量化包括:
基于初级注意力向量和各代码句包含的源码特征向量,确定出各所述代码句对应的权重值;其中,所述初级注意力向量为基于安全漏洞语料库对所述层级网络模型进行训练得到词向量;
基于次级注意力向量和各代码段中包含的代码句,确定出各所述代码段对应的权重值;其中,所述次级注意力向量为基于安全漏洞语料库对所述层级网络模型进行训练得到句向量;
基于所述代码句对应的权重值和所述代码段对应的权重值,确定出所述源码文件存在安全漏洞的风险。
可选地,所述基于所述代码句对应的权重值和所述代码段对应的权重值,确定出所述源码文件存在安全漏洞的风险包括:
依据各所述代码段对应的权重值,选取出权重值最高的目标代码段;
将所述目标代码段中权重值最高的代码句作为具有安全漏洞风险的语句。
可选地,还包括:
记录所述源码文件中各代码段对应的权重值以及各代码句对应的权重值。
可选地,还包括:
判断各代码句对应的权重值是否大于预设阈值;
在存在权重值大于预设阈值的代码句的情况下,将所述权重值大于预设阈值的代码句作为风险语句。
可选地,所述将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量包括:
对所述源码文件进行标准化处理;
利用训练好的词向量模型将标准化的源码文件转化为源码特征向量。
可选地,所述对所述源码文件进行标准化处理包括:
删除所述源码文件中的无效字符;
按照设定的映射表,将删除无效字符后的源码文件中的变量名和函数名转换为对应的符号,以得到标准化的源码文件。
本申请实施例还提供了一种用于文件安全风险检测的模型的训练方法,包括:
将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量;
利用所述历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型。
可选地,所述利用所述历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型包括:
基于所述历史源码特征向量中包含的历史词向量,对所述层级网络模型进行训练,以得到对代码句量化处理的初级注意力向量;
基于所述历史源码特征向量中包含的历史句向量,对所述层级网络模型进行训练,以得到对代码段量化处理的次级注意力向量。
可选地,所述历史源码文件包括安全漏洞语料库。
可选地,所述将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量包括:对所述源码文件进行标准化处理;
利用训练好的词向量模型将标准化的源码文件转化为源码特征向量。
可选地,所述词向量模型的训练过程包括:
利用所述安全漏洞语料库对初始词向量模型进行训练,以得到词向量模型。
本申请实施例还提供了一种文件安全风险的检测装置文件安全风险的检测装置,包括处理单元、划分单元和分析单元;
所述处理单元,用于将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量;
所述划分单元,用于利用训练好的层级网络模型对所述源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;
所述分析单元,用于对各所述代码段和各所述代码句进行语义分析,以确定出所述源码文件存在安全漏洞的风险。
可选地,所述分析单元包括量化子单元和确定子单元;
所述量化子单元,用于依据所述层级网络模型中各层级注意力向量,对所述源码特征向量中包含的代码段和代码句进行量化;
所述确定子单元,用于根据量化后的代码段和量化后的代码句,确定出所述源码文件存在安全漏洞的风险。
可选地,所述量化子单元用于基于初级注意力向量和各代码句包含的源码特征向量,确定出各所述代码句对应的权重值;其中,所述初级注意力向量为基于安全漏洞语料库对所述层级网络模型进行训练得到词向量;基于次级注意力向量和各代码段中包含的代码句,确定出各所述代码段对应的权重值;其中,所述次级注意力向量为基于安全漏洞语料库对所述层级网络模型进行训练得到句向量;基于所述代码句对应的权重值和所述代码段对应的权重值,确定出所述源码文件存在安全漏洞的风险。
可选地,所述量化子单元用于依据各所述代码段对应的权重值,选取出权重值最高的目标代码段;将所述目标代码段中权重值最高的代码句作为具有安全漏洞风险的语句。
可选地,还包括记录单元;
所述记录单元,用于记录所述源码文件中各代码段对应的权重值以及各代码句对应的权重值。
可选地,还包括判断单元和作为单元;
所述判断单元,用于判断各代码句对应的权重值是否大于预设阈值;
所述作为单元,用于在存在权重值大于预设阈值的代码句的情况下,将所述权重值大于预设阈值的代码句作为风险语句。
可选地,所述处理单元包括标准化子单元和转化子单元;
所述标准化子单元,用于对所述源码文件进行标准化处理;
所述转化子单元,用于利用训练好的词向量模型将所述标准化的源码文件转化为源码特征向量。
可选地,所述标准化子单元,用于删除所述源码文件中的无效字符;按照设定的映射表,将删除无效字符后的源码文件中的变量名和函数名转换为对应的符号,以得到标准化的源码文件;
本申请实施例还提供了一种用于文件安全风险检测的模型的训练装置,包括处理单元和训练单元;
所述处理单元,用于将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量;
所述训练单元,用于利用所述历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型。
可选地,所述训练单元用于基于所述历史源码特征向量中包含的历史词向量,对所述层级网络模型进行训练,以得到对代码句量化处理的初级注意力向量;基于所述历史源码特征向量中包含的历史句向量,对所述层级网络模型进行训练,以得到对代码段量化处理的次级注意力向量。
可选地,所述历史源码文件包括安全漏洞语料库。
可选地,所述处理单元包括标准化子单元和转化子单元;
所述标准化子单元,用于对所述源码文件进行标准化处理;
所述转化子单元,用于利用训练好的词向量模型将标准化的源码文件转化为源码特征向量。
可选地,针对于所述词向量模型的训练过程,所述装置包括词向量训练单元;
所述词向量训练单元,用于利用所述安全漏洞语料库对初始词向量模型进行训练,以得到词向量模型。
本申请实施例还提供了一种文件安全风险的检测设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述任意一项所述文件安全风险检测方法的步骤和/或上述用于文件安全风险检测的模型的训练方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述文件安全风险检测方法的步骤和/或上述用于文件安全风险检测的模型的训练方法的步骤。
由上述技术方案可以看出,将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量;源码特征向量是层级网络模型可识别的数据格式。为了充分获取源码文件包含的语义信息,可以利用训练好的层级网络模型对源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;并对各代码段和各代码句进行语义分析,以确定出源码文件存在安全漏洞的风险。在该技术方案中,层级网络模型可以对源码特征向量进行不同层级的划分,从而可以充分挖掘源码文件的语义信息,通过语义分析可以准确的识别出源码文件中具有安全漏洞风险的代码句和代码段,提升了文件安全风险检测的准确性。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种检测文件安全风险的场景示意图;
图2为本申请实施例提供的一种文件安全风险检测方法的流程图;
图3为本申请实施例提供的一种用于文件安全风险检测的模型的训练方法的流程图;
图4为本申请实施例提供的一种文件安全风险的检测装置的结构示意图;
图5本申请实施例提供的一种用于文件安全风险检测的模型的训练装置的结构示意图
图6为本申请实施例提供的一种文件安全风险的检测设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
传统方式中对于源码文件的文件安全风险的检测主要依赖于特征词库匹配的方式,当需要对源码文件进行文件安全风险的检测时,将源码文件与特征词库进行匹配,若源码文件中存在与特征词库匹配的数据,则说明源码文件可能存在安全漏洞。由于特征词库包含的特征信息形式较为固定且数量有限,因此基于特征词库检测源码文件漏洞的准确性较低,对于一些不常见的漏洞形式,基于特征词库往往无法检测出来。
故此,本申请实施例提供了一种文件安全风险检测方法、装置、设备和计算机可读存储介质。将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量。利用训练好的层级网络模型对源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;并对各代码段和各代码句进行语义分析,以确定出源码文件存在安全漏洞的风险。
如图1所示为本申请实施例提供的一种检测文件安全风险的场景示意图,在获取到源码文件之后,可以依据层级网络模型对输入数据的格式要求,将源码文件转换为源码特征向量。源码文件包含的源码特征向量的个数往往较多,一个源码特征向量可以看作是一个代码词。为了充分挖掘源码文件的语义信息,在本申请实施例中层级网络模型采用了两层神经网络,第一层神经网络可以将代码词构成代码句,分析各代码句对应的权重值。第二层神经网络可以将代码句构成代码段,分析各代码段对应的权重值。权重值反映了各代码句和代码段与安全漏洞的相关性。权重值越高,说明代码句或代码段存储安全漏洞的风险越高。层级网络模型可以基于代码句对应的权重值和代码段对应的权重值,确定出源码文件存在安全漏洞的风险。
在本申请实施例中,层级网络模型可以对源码特征向量进行不同层级的划分,从而可以充分挖掘源码文件的语义信息,通过语义分析可以准确的识别出源码文件中具有安全漏洞风险的代码句和代码段,提升了文件安全风险检测的准确性。
接下来,详细介绍本申请实施例所提供的一种文件安全风险检测方法。图2为本申请实施例提供的一种文件安全风险检测方法的流程图,该方法包括:
S201:将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量。
格式要求可以依据层级网络模型的数据输入格式设置。层级网络模型的输入数据一般为向量的形式,因此在本申请实施例中,可以利用词向量模型将源码文件转化为源码特征向量。
考虑到源码文件中可能包含有一些无效字符,例如,注释信息、非ASCII编码等字符。在具体实现中,可以先对源码文件进行标准化处理,再利用训练好的词向量模型将标准化的源码文件转化为源码特征向量。
标准化处理可以是将源码文件中不规范的信息转变为统一规范的信息。
标准化处理可以包括删除源码文件中的无效字符,将源码文件中出现的变量名和函数名转换为统一的符号进行表示。为了保证相同变量名或函数名的统一化,可以按照设定的映射表,将删除无效字符后的源码文件中的变量名和函数名转换为对应的符号,以得到标准化的源码文件;最后利用训练好的词向量模型将标准化的源码文件转化为源码特征向量。
在本申请实施例中,为了使得源码特征向量的语义和源码文件具有更高的相关性,可以利用安全漏洞语料库对初始词向量模型进行训练,以得到训练好的词向量模型。安全漏洞语料库中可以包含正常的源码文件和存在安全漏洞的源码文件。
利用安全漏洞语料库对初始词向量模型进行训练,可以使得训练好的词向量模型转换得到的词向量更加充分的体现源码文件的实际语义。
S202:利用训练好的层级网络模型对源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句。
为了充分挖掘源码文件的语义,可以设置层级网络模型,层级网络模型可以采用多层神经网络结构。在具体实现中,可以采用两层神经网络结构,第一层神经网络可以用于将源码特征向量划分为代码句,第二层神经网络可以用于将代码句划分成代码段。神经网络结构的类型有多种,例如可以采用长短期记忆网络(Long Short-Term Memory,LSTM)。
源码文件中数据以行的形式呈现,在转换为源码特征向量之后,源码特征向量仍是按照其所属的行进行排列。在进行代码句的划分时,可以将每一行源码特征向量作为一个代码句。
考虑到不同行的源码特征向量的个数有所差异,为了使得代码句的规范化,可以设定代码句的大小,例如,设置30个源码特征向量作为一个代码句。当一行的源码特征向量个数大于30个时,可以从该行源码特征向量中任取30个源码特征向量作为一个代码句。当一行的源码特征向量个数不足30个时,可以采用补零的方式,凑够30个向量作为一个代码句。
同理,对于代码段而言,不同代码段包含的代码句个数所有差异,为了使得代码段的规范化,可以设定代码段的大小,例如,设置100个代码句作为一个代码段。当一个代码段包含的代码句个数大于100个时,可以从该代码段中任取100个代码句作为最终的一个代码段。当一个代码段包含的代码句个数大于100个时,可以采用补零的方式,凑够100个代码句作为一个代码段。
S203:对各代码段和各代码句进行语义分析,以确定出源码文件存在安全漏洞的风险。
本申请实施例采用的层级网络模型可以为两层神经网络结构。为了实现对代码段和代码句的语义分析,在层级网络模型训练阶段可以针对于每层神经网络训练其对应的层级注意力向量。
依据层级网络模型中各层级注意力向量,可以对源码特征向量中包含的代码段和代码句进行量化;从而根据量化后的代码段和量化后的代码句,确定出源码文件存在安全漏洞的风险。
以两层神经网络结构为例,层级注意力向量可以包括初级注意力向量和次级注意力向量。
在具体实现中,可以基于初级注意力向量和各代码句包含的源码特征向量,确定出各代码句对应的权重值;其中,初级注意力向量为基于安全漏洞语料库对层级网络模型进行训练得到词向量。
基于次级注意力向量和各代码段中包含的代码句,确定出各代码段对应的权重值;其中,次级注意力向量为基于安全漏洞语料库对层级网络模型进行训练得到句向量。
每一层神经网络都可以依赖于其对应的层级注意力向量对代码字词进行加权求和,从而实现对代码段和代码句的量化。
每个代码句的处理方式类似,以一个代码句为例,将该代码句包含的源码特征向量与初级注意力向量相乘,将所有乘积值进行累加,可以得到该代码句对应的权重值。
每个代码段的处理方式类似,以一个代码段为例,该代码段包含的代码句与次级注意力向量相乘,将所有乘积值进行累加,可以得到该代码段对应的权重值。
权重值越高,说明代码句或代码段存在安全漏洞的风险越高。层级网络模型可以基于代码句对应的权重值和代码段对应的权重值,确定出源码文件存在安全漏洞的风险。
在实际应用中,可以依据各代码段对应的权重值,选取出权重值最高的目标代码段;目标代码段是所有代码段中具有安全漏洞风险最高的代码段。为了进一步确定出源码文件中具有较高安全漏洞风险的位置,可以将目标代码段中权重值最高的代码句作为具有安全漏洞风险的语句。
由上述技术方案可以看出,将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量;源码特征向量是层级网络模型可识别的数据格式。为了充分获取源码文件包含的语义信息,可以利用训练好的层级网络模型对源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;并对各代码段和各代码句进行语义分析,以确定出源码文件存在安全漏洞的风险。在该技术方案中,层级网络模型可以对源码特征向量进行不同层级的划分,从而可以充分挖掘源码文件的语义信息,通过语义分析可以准确的识别出源码文件中具有安全漏洞风险的代码句和代码段,提升了文件安全风险检测的准确性。
在本申请实施例中,为了便于管理人员了解源码文件中各段数据存在安全漏洞的风险,以及每段数据中各行数据存在安全漏洞的风险,可以在确定出代码句对应的权重值和代码段对应的权重值之后,记录源码文件中各代码段对应的权重值以及各代码句对应的权重值。
管理人员通过查看各代码段对应的权重值以及各代码句对应的权重值的记录,可以清楚的获知源码文件中各段数据以及各行数据存在安全漏洞的风险分布情况。
在本申请实施例中,可以设置阈值对源码文件中各代码句进行安全漏洞风险的筛选。在具体实现中,可以判断各代码句对应的权重值是否大于预设阈值;在存在权重值大于预设阈值的代码句的情况下,可以将权重值大于预设阈值的代码句作为风险语句。
其中,预设阈值的取值可以根据实际需求进行设置,在此不做限定。
通过设置阈值对代码句进行筛选,可以从源码文件中筛选出具有较高安全漏洞风险的语句,从而便于管理人员可以及时对高风险的语句进行处理,以降低源码文件中安全漏洞造成的影响。
图3为本申请实施例提供的一种用于文件安全风险检测的模型的训练方法的流程图,该方法包括:
S301:将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量。
格式要求可以依据层级网络模型的数据输入格式设置。层级网络模型的输入数据一般为向量的形式,因此在本申请实施例中,可以利用词向量模型将历史源码文件转化为历史源码特征向量。
考虑到历史源码文件中可能包含有一些无效字符,例如,注释信息、非ASCII编码等字符。在具体实现中,可以先对历史源码文件进行标准化处理,再利用训练好的词向量模型将标准化的历史源码文件转化为源码特征向量。
对历史源码文件进行标准化处理的方式可以参见S201的处理流程,在此不再赘述。
历史源码文件中可以包含具有安全风险的源码文件以及一些不具有安全风险的源码文件。在实际应用中,可以从安全漏洞语料库获取具有安全风险的源码文件。
在对词向量模型进行训练时,也可以利用安全漏洞语料库对初始词向量模型进行训练,以得到词向量模型。
S302:利用历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型。
在本申请实施例中,为了充分挖掘源码文件中各字词之间的语义信息,初始层级网络模型可以采用两层神经网络结构。第一层神经网络可以用于将源码特征向量划分为代码句,第二层神经网络可以用于将代码句划分成代码段。
第一层神经网络可以用于挖掘代码句的语义信息,第二层神经网络可以用于挖掘代码段的语义信息。相应的,在模型训练阶段,可以基于历史源码特征向量中包含的历史词向量,对层级网络模型进行训练,以得到对代码句量化处理的初级注意力向量;基于历史源码特征向量中包含的历史句向量,对层级网络模型进行训练,以得到对代码段量化处理的次级注意力向量。
初级注意力向量和次级注意力向量是基于注意力机制对层级网络模型训练得到的注意力向量。每个代码句或代码段的内容不同,其对应的注意力向量的数值也会有所不同,基于注意力向量可以实现对代码句和代码段的量化。因此利用训练好的层级网络模型可以实现源码文件中各代码段和各代码句的语义分析,从而确定出源码文件存在安全漏洞的风险。
由上述技术方案可以看出,将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量。历史源码文件可以包含具有安全风险的源码文件以及一些不具有安全风险的源码文件,可以分别作为模型训练的正样本和负样本,保证模型训练的准确性。利用历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型。在该技术方案中,采用两层神经网络结构作为层级网络模型的架构,可以实现对源码文件中代码段和代码句两种层级的划分,通过不同层级的划分可以充分的挖掘源码文件语义信息。
图4为本申请实施例提供的一种文件安全风险的检测装置的结构示意图,包括处理单元41、划分单元42和分析单元43;
处理单元41,用于将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量;
划分单元42,用于利用训练好的层级网络模型对源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;
分析单元43,用于对各代码段和各代码句进行语义分析,以确定出源码文件存在安全漏洞的风险。
可选地,分析单元包括第一计算子单元、第二计算子单元和确定子单元;
第一计算子单元,用于基于初级注意力向量和各代码句包含的源码特征向量,确定出各代码句对应的权重值;其中,初级注意力向量为基于安全漏洞语料库对层级网络模型进行训练得到词向量;
第二计算子单元,用于基于次级注意力向量和各代码段中包含的代码句,确定出各代码段对应的权重值;其中,次级注意力向量为基于安全漏洞语料库对层级网络模型进行训练得到句向量;
确定子单元,用于基于代码句对应的权重值和代码段对应的权重值,确定出源码文件存在安全漏洞的风险。
可选地,确定子单元用于依据各代码段对应的权重值,选取出权重值最高的目标代码段;将目标代码段中权重值最高的代码句作为具有安全漏洞风险的语句。
可选地,还包括记录单元;
记录单元,用于记录源码文件中各代码段对应的权重值以及各代码句对应的权重值。
可选地,还包括判断单元和作为单元;
判断单元,用于判断各代码句对应的权重值是否大于预设阈值;
作为单元,用于在存在权重值大于预设阈值的代码句的情况下,将权重值大于预设阈值的代码句作为风险语句。
可选地,处理单元包括删除子单元、转换子单元和转化子单元;
删除子单元,用于删除源码文件中的无效字符;
转换子单元,用于按照设定的映射表,将删除无效字符后的源码文件中的变量名和函数名转换为对应的符号,以得到标准化的源码文件;
转化子单元,用于利用训练好的词向量模型将标准化的源码文件转化为源码特征向量。
图4所对应实施例中特征的说明可以参见图2所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量;源码特征向量是层级网络模型可识别的数据格式。为了充分获取源码文件包含的语义信息,可以利用训练好的层级网络模型对源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;并对各代码段和各代码句进行语义分析,以确定出源码文件存在安全漏洞的风险。在该技术方案中,层级网络模型可以对源码特征向量进行不同层级的划分,从而可以充分挖掘源码文件的语义信息,通过语义分析可以准确的识别出源码文件中具有安全漏洞风险的代码句和代码段,提升了文件安全风险检测的准确性。
图5为本申请实施例提供的一种用于文件安全风险检测的模型的训练装置的结构示意图,包括处理单元51和训练单元52;
处理单元51,用于将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量;
训练单元52,用于利用历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型。
可选地,训练单元用于基于历史源码特征向量中包含的历史词向量,对层级网络模型进行训练,以得到对代码句量化处理的初级注意力向量;基于历史源码特征向量中包含的历史句向量,对层级网络模型进行训练,以得到对代码段量化处理的次级注意力向量。
可选地,历史源码文件包括安全漏洞语料库。
可选地,处理单元包括标准化子单元和转化子单元;
标准化子单元,用于对源码文件进行标准化处理;
转化子单元,用于利用训练好的词向量模型将标准化的源码文件转化为源码特征向量。
可选地,针对于词向量模型的训练过程,装置包括词向量训练单元;
词向量训练单元,用于利用安全漏洞语料库对初始词向量模型进行训练,以得到词向量模型。
图5所对应实施例中特征的说明可以参见图3所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量。历史源码文件可以包含具有安全风险的源码文件以及一些不具有安全风险的源码文件,可以分别作为模型训练的正样本和负样本,保证模型训练的准确性。利用历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型。在该技术方案中,采用两层神经网络结构作为层级网络模型的架构,可以实现对源码文件中代码段和代码句两种层级的划分,通过不同层级的划分可以充分的挖掘源码文件语义信息。
图6为本申请实施例提供的一种文件安全风险的检测设备60的结构示意图,包括:
存储器61,用于存储计算机程序;
处理器62,用于执行计算机程序以实现如上述任意一项文件安全风险检测方法的步骤和/或上述用于文件安全风险检测的模型的训练方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任意一项文件安全风险检测方法的步骤和/或上述用于文件安全风险检测的模型的训练方法的步骤。
以上对本申请实施例所提供的一种文件安全风险检测方法、用于文件安全风险检测的模型的训练方法、装置、设备和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
- 文件安全风险检测方法、模型的训练方法、装置和设备
- 试题文件筛选方法、模型训练方法、装置、设备及介质