CN113806750A - 文件安全风险检测方法、模型的训练方法、装置和设备 - Google Patents
文件安全风险检测方法、模型的训练方法、装置和设备 Download PDFInfo
- Publication number
- CN113806750A CN113806750A CN202111124485.1A CN202111124485A CN113806750A CN 113806750 A CN113806750 A CN 113806750A CN 202111124485 A CN202111124485 A CN 202111124485A CN 113806750 A CN113806750 A CN 113806750A
- Authority
- CN
- China
- Prior art keywords
- code
- source code
- file
- training
- sentence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012549 training Methods 0.000 title claims abstract description 75
- 238000001514 detection method Methods 0.000 title claims abstract description 50
- 238000000034 method Methods 0.000 title claims abstract description 39
- 239000013598 vector Substances 0.000 claims abstract description 210
- 238000004458 analytical method Methods 0.000 claims abstract description 35
- 238000012545 processing Methods 0.000 claims description 40
- 238000004590 computer program Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 5
- 230000015654 memory Effects 0.000 claims description 5
- 238000013528 artificial neural network Methods 0.000 description 19
- 238000010606 normalization Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000009466 transformation Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000013139 quantization Methods 0.000 description 4
- 230000001131 transforming effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Machine Translation (AREA)
Abstract
本申请实施例公开了一种文件安全风险检测方法、模型的训练方法、装置、设备和介质,将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量;源码特征向量是层级网络模型可识别的数据格式。为了充分获取源码文件包含的语义信息,可以利用训练好的层级网络模型对源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;并对各代码段和各代码句进行语义分析,以确定出源码文件存在安全漏洞的风险。在该技术方案中,层级网络模型可以对源码特征向量进行不同层级的划分,从而可以充分挖掘源码文件的语义信息,通过语义分析可以准确的识别出源码文件中具有安全漏洞风险的代码句和代码段,提升了文件安全风险检测的准确性。
Description
技术领域
本申请涉及网络安全技术领域,特别是涉及一种文件安全风险检测方法、用于文件安全风险检测的模型的训练方法、装置、设备和计算机可读存储介质。
背景技术
源代码也称源程序,是指一系列人类可读的计算机语言指令。源代码最为常用的格式是文本文件,一般以源码文件的形式呈现。源码文件的安全可靠,是计算机设备正常运行的重要因素。当源码文件存在漏洞时会影响到计算机设备的正常运行,甚至对计算机设备造成安全威胁。
目前对于源码文件的文件安全风险的检测主要依赖于特征词库匹配的方式,将出现过安全漏洞的历史源码文件进行收集,通过信息合并、特征提取等手段构建特征词库。当需要对当前的源码文件进行文件安全风险的检测时,将源码文件与特征词库进行匹配,若源码文件中存在与特征词库匹配的数据,则说明源码文件可能存在安全漏洞,此时可以将该源码文件交由管理人员进一步审核。
由于特征词库包含的特征信息形式较为固定且数量有限,因此基于特征词库检测源码文件漏洞的准确性较低,对于一些不常见的漏洞形式,基于特征词库往往无法检测出来。
可见,如何提升文件安全风险的准确性,是本领域技术人员需要解决的问题。
发明内容
本申请实施例的目的是提供一种文件安全风险检测方法、用于文件安全风险检测的模型的训练方法、装置、设备和计算机可读存储介质,可以提升文件安全风险的准确性。
为解决上述技术问题,本申请实施例提供一种文件安全风险检测方法,包括:
将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量;
利用训练好的层级网络模型对所述源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;并对各所述代码段和各所述代码句进行语义分析,以确定出所述源码文件存在安全漏洞的风险。
可选地,所述对各所述代码段和各所述代码句进行语义分析,以确定出所述源码文件存在安全漏洞的风险包括:
依据所述层级网络模型中各层级注意力向量,对所述源码特征向量中包含的代码段和代码句进行量化;
根据量化后的代码段和量化后的代码句,确定出所述源码文件存在安全漏洞的风险。
可选地,所述依据所述层级网络模型中各层级注意力向量,对所述源码特征向量中包含的代码段和代码句进行量化包括:
基于初级注意力向量和各代码句包含的源码特征向量,确定出各所述代码句对应的权重值;其中,所述初级注意力向量为基于安全漏洞语料库对所述层级网络模型进行训练得到词向量;
基于次级注意力向量和各代码段中包含的代码句,确定出各所述代码段对应的权重值;其中,所述次级注意力向量为基于安全漏洞语料库对所述层级网络模型进行训练得到句向量;
基于所述代码句对应的权重值和所述代码段对应的权重值,确定出所述源码文件存在安全漏洞的风险。
可选地,所述基于所述代码句对应的权重值和所述代码段对应的权重值,确定出所述源码文件存在安全漏洞的风险包括:
依据各所述代码段对应的权重值,选取出权重值最高的目标代码段;
将所述目标代码段中权重值最高的代码句作为具有安全漏洞风险的语句。
可选地,还包括:
记录所述源码文件中各代码段对应的权重值以及各代码句对应的权重值。
可选地,还包括:
判断各代码句对应的权重值是否大于预设阈值;
在存在权重值大于预设阈值的代码句的情况下,将所述权重值大于预设阈值的代码句作为风险语句。
可选地,所述将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量包括:
对所述源码文件进行标准化处理;
利用训练好的词向量模型将标准化的源码文件转化为源码特征向量。
可选地,所述对所述源码文件进行标准化处理包括:
删除所述源码文件中的无效字符;
按照设定的映射表,将删除无效字符后的源码文件中的变量名和函数名转换为对应的符号,以得到标准化的源码文件。
本申请实施例还提供了一种用于文件安全风险检测的模型的训练方法,包括:
将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量;
利用所述历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型。
可选地,所述利用所述历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型包括:
基于所述历史源码特征向量中包含的历史词向量,对所述层级网络模型进行训练,以得到对代码句量化处理的初级注意力向量;
基于所述历史源码特征向量中包含的历史句向量,对所述层级网络模型进行训练,以得到对代码段量化处理的次级注意力向量。
可选地,所述历史源码文件包括安全漏洞语料库。
可选地,所述将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量包括:对所述源码文件进行标准化处理;
利用训练好的词向量模型将标准化的源码文件转化为源码特征向量。
可选地,所述词向量模型的训练过程包括:
利用所述安全漏洞语料库对初始词向量模型进行训练,以得到词向量模型。
本申请实施例还提供了一种文件安全风险的检测装置文件安全风险的检测装置,包括处理单元、划分单元和分析单元;
所述处理单元,用于将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量;
所述划分单元,用于利用训练好的层级网络模型对所述源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;
所述分析单元,用于对各所述代码段和各所述代码句进行语义分析,以确定出所述源码文件存在安全漏洞的风险。
可选地,所述分析单元包括量化子单元和确定子单元;
所述量化子单元,用于依据所述层级网络模型中各层级注意力向量,对所述源码特征向量中包含的代码段和代码句进行量化;
所述确定子单元,用于根据量化后的代码段和量化后的代码句,确定出所述源码文件存在安全漏洞的风险。
可选地,所述量化子单元用于基于初级注意力向量和各代码句包含的源码特征向量,确定出各所述代码句对应的权重值;其中,所述初级注意力向量为基于安全漏洞语料库对所述层级网络模型进行训练得到词向量;基于次级注意力向量和各代码段中包含的代码句,确定出各所述代码段对应的权重值;其中,所述次级注意力向量为基于安全漏洞语料库对所述层级网络模型进行训练得到句向量;基于所述代码句对应的权重值和所述代码段对应的权重值,确定出所述源码文件存在安全漏洞的风险。
可选地,所述量化子单元用于依据各所述代码段对应的权重值,选取出权重值最高的目标代码段;将所述目标代码段中权重值最高的代码句作为具有安全漏洞风险的语句。
可选地,还包括记录单元;
所述记录单元,用于记录所述源码文件中各代码段对应的权重值以及各代码句对应的权重值。
可选地,还包括判断单元和作为单元;
所述判断单元,用于判断各代码句对应的权重值是否大于预设阈值;
所述作为单元,用于在存在权重值大于预设阈值的代码句的情况下,将所述权重值大于预设阈值的代码句作为风险语句。
可选地,所述处理单元包括标准化子单元和转化子单元;
所述标准化子单元,用于对所述源码文件进行标准化处理;
所述转化子单元,用于利用训练好的词向量模型将所述标准化的源码文件转化为源码特征向量。
可选地,所述标准化子单元,用于删除所述源码文件中的无效字符;按照设定的映射表,将删除无效字符后的源码文件中的变量名和函数名转换为对应的符号,以得到标准化的源码文件;
本申请实施例还提供了一种用于文件安全风险检测的模型的训练装置,包括处理单元和训练单元;
所述处理单元,用于将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量;
所述训练单元,用于利用所述历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型。
可选地,所述训练单元用于基于所述历史源码特征向量中包含的历史词向量,对所述层级网络模型进行训练,以得到对代码句量化处理的初级注意力向量;基于所述历史源码特征向量中包含的历史句向量,对所述层级网络模型进行训练,以得到对代码段量化处理的次级注意力向量。
可选地,所述历史源码文件包括安全漏洞语料库。
可选地,所述处理单元包括标准化子单元和转化子单元;
所述标准化子单元,用于对所述源码文件进行标准化处理;
所述转化子单元,用于利用训练好的词向量模型将标准化的源码文件转化为源码特征向量。
可选地,针对于所述词向量模型的训练过程,所述装置包括词向量训练单元;
所述词向量训练单元,用于利用所述安全漏洞语料库对初始词向量模型进行训练,以得到词向量模型。
本申请实施例还提供了一种文件安全风险的检测设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述任意一项所述文件安全风险检测方法的步骤和/或上述用于文件安全风险检测的模型的训练方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述文件安全风险检测方法的步骤和/或上述用于文件安全风险检测的模型的训练方法的步骤。
由上述技术方案可以看出,将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量;源码特征向量是层级网络模型可识别的数据格式。为了充分获取源码文件包含的语义信息,可以利用训练好的层级网络模型对源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;并对各代码段和各代码句进行语义分析,以确定出源码文件存在安全漏洞的风险。在该技术方案中,层级网络模型可以对源码特征向量进行不同层级的划分,从而可以充分挖掘源码文件的语义信息,通过语义分析可以准确的识别出源码文件中具有安全漏洞风险的代码句和代码段,提升了文件安全风险检测的准确性。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图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、或技术领域内所公知的任意其它形式的存储介质中。
Claims (17)
1.一种文件安全风险检测方法,其特征在于,包括:
将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量;
利用训练好的层级网络模型对所述源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;并对各所述代码段和各所述代码句进行语义分析,以确定出所述源码文件存在安全漏洞的风险。
2.根据权利要求1所述的文件安全风险检测方法,其特征在于,所述对各所述代码段和各所述代码句进行语义分析,以确定出所述源码文件存在安全漏洞的风险包括:
依据所述层级网络模型中各层级注意力向量,对所述源码特征向量中包含的代码段和代码句进行量化;
根据量化后的代码段和量化后的代码句,确定出所述源码文件存在安全漏洞的风险。
3.根据权利要求2所述的文件安全风险检测方法,其特征在于,所述依据所述层级网络模型中各层级注意力向量,对所述源码特征向量中包含的代码段和代码句进行量化包括:
基于初级注意力向量和各代码句包含的源码特征向量,确定出各所述代码句对应的权重值;其中,所述初级注意力向量为基于安全漏洞语料库对所述层级网络模型进行训练得到词向量;
基于次级注意力向量和各代码段中包含的代码句,确定出各所述代码段对应的权重值;其中,所述次级注意力向量为基于安全漏洞语料库对所述层级网络模型进行训练得到句向量;
基于所述代码句对应的权重值和所述代码段对应的权重值,确定出所述源码文件存在安全漏洞的风险。
4.根据权利要求3所述的文件安全风险检测方法,其特征在于,所述基于所述代码句对应的权重值和所述代码段对应的权重值,确定出所述源码文件存在安全漏洞的风险包括:
依据各所述代码段对应的权重值,选取出权重值最高的目标代码段;
将所述目标代码段中权重值最高的代码句作为具有安全漏洞风险的语句。
5.根据权利要求3所述的文件安全风险检测方法,其特征在于,还包括:
记录所述源码文件中各代码段对应的权重值以及各代码句对应的权重值。
6.根据权利要求3所述的文件安全风险检测方法,其特征在于,还包括:
判断各代码句对应的权重值是否大于预设阈值;
在存在权重值大于预设阈值的代码句的情况下,将所述权重值大于预设阈值的代码句作为风险语句。
7.根据权利要求1至6任意一项所述的文件安全风险检测方法,其特征在于,所述将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量包括:
对所述源码文件进行标准化处理;
利用训练好的词向量模型将标准化的源码文件转化为源码特征向量。
8.根据权利要求7所述的文件安全风险检测方法,其特征在于,所述对所述源码文件进行标准化处理包括:
删除所述源码文件中的无效字符;
按照设定的映射表,将删除无效字符后的源码文件中的变量名和函数名转换为对应的符号,以得到标准化的源码文件。
9.一种用于文件安全风险检测的模型的训练方法,其特征在于,包括:
将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量;
利用所述历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型。
10.根据权利要求9所述的用于文件安全风险检测的模型的训练方法,其特征在于,所述利用所述历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型包括:
基于所述历史源码特征向量中包含的历史词向量,对所述层级网络模型进行训练,以得到对代码句量化处理的初级注意力向量;
基于所述历史源码特征向量中包含的历史句向量,对所述层级网络模型进行训练,以得到对代码段量化处理的次级注意力向量。
11.根据权利要求9所述的用于文件安全风险检测的模型的训练方法,其特征在于,所述历史源码文件包括安全漏洞语料库。
12.根据权利要求11所述的用于文件安全风险检测的模型的训练方法,其特征在于,所述将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量包括:对所述源码文件进行标准化处理;
利用训练好的词向量模型将标准化的源码文件转化为源码特征向量。
13.根据权利要求12所述的文件安全风险检测方法,其特征在于,所述词向量模型的训练过程包括:
利用所述安全漏洞语料库对初始词向量模型进行训练,以得到词向量模型。
14.一种文件安全风险的检测装置,其特征在于,包括处理单元、划分单元和分析单元;
所述处理单元,用于将获取的源码文件按照设定的格式要求进行处理,以得到源码特征向量;
所述划分单元,用于利用训练好的层级网络模型对所述源码特征向量进行层级划分,以得到代码段和各代码段包含的代码句;
所述分析单元,用于对各所述代码段和各所述代码句进行语义分析,以确定出所述源码文件存在安全漏洞的风险。
15.一种用于文件安全风险检测的模型的训练装置,其特征在于,包括处理单元和训练单元;
所述处理单元,用于将获取的历史源码文件按照设定的格式要求进行处理,以得到历史源码特征向量;
所述训练单元,用于利用所述历史源码特征向量对初始层级网络模型进行训练,以得到用于实现代码段和代码句语义分析的层级网络模型。
16.一种文件安全风险的检测设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至8任意一项所述文件安全风险检测方法的步骤和/或权利要求9至13任意一项所述用于文件安全风险检测的模型的训练方法的步骤。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任意一项所述文件安全风险检测方法的步骤和/或权利要求9至13任意一项所述用于文件安全风险检测的模型的训练方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111124485.1A CN113806750B (zh) | 2021-09-24 | 2021-09-24 | 文件安全风险检测方法、模型的训练方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111124485.1A CN113806750B (zh) | 2021-09-24 | 2021-09-24 | 文件安全风险检测方法、模型的训练方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113806750A true CN113806750A (zh) | 2021-12-17 |
CN113806750B CN113806750B (zh) | 2024-02-23 |
Family
ID=78896724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111124485.1A Active CN113806750B (zh) | 2021-09-24 | 2021-09-24 | 文件安全风险检测方法、模型的训练方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113806750B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814053A (zh) * | 2010-03-29 | 2010-08-25 | 中国人民解放军信息工程大学 | 一种基于功能模型的二进制代码漏洞发现方法 |
DE202013102179U1 (de) * | 2012-12-25 | 2013-08-01 | Kaspersky Lab, Zao | System zu detektieren von durch eine virtuelle Maschine ausgeführtem Schadcode |
US20150186648A1 (en) * | 2013-12-30 | 2015-07-02 | University Of Louisiana At Lafayette | System and method for identifying and comparing code by semantic abstractions |
US20180150742A1 (en) * | 2016-11-28 | 2018-05-31 | Microsoft Technology Licensing, Llc. | Source code bug prediction |
CN108763931A (zh) * | 2018-05-28 | 2018-11-06 | 上海交通大学 | 基于Bi-LSTM和文本相似性的漏洞检测方法 |
CN109657466A (zh) * | 2018-11-26 | 2019-04-19 | 杭州英视信息科技有限公司 | 一种函数级软件漏洞检测方法 |
CN110245496A (zh) * | 2019-05-27 | 2019-09-17 | 华中科技大学 | 一种源代码漏洞检测方法及检测器和其训练方法及系统 |
EP3572944A1 (en) * | 2018-05-24 | 2019-11-27 | Fujitsu Limited | Concurrency vulnerability detection |
GB201917161D0 (en) * | 2019-08-23 | 2020-01-08 | Praetorian | System and method for automatically detecting a security vulnerability in a source code using a machine learning model |
US20200104631A1 (en) * | 2018-09-27 | 2020-04-02 | International Business Machines Corporation | Generating vector representations of code capturing semantic similarity |
CN110968874A (zh) * | 2019-11-28 | 2020-04-07 | 腾讯科技(深圳)有限公司 | 一种漏洞检测方法、装置、服务器及存储介质 |
CN112182585A (zh) * | 2020-09-29 | 2021-01-05 | 湖南大学 | 源代码漏洞检测方法、系统及存储介质 |
WO2021037196A1 (zh) * | 2019-08-28 | 2021-03-04 | 杭州趣链科技有限公司 | 智能合约代码漏洞检测方法、装置、计算机设备和存储介质 |
CN112631944A (zh) * | 2020-12-31 | 2021-04-09 | 平安国际智慧城市科技股份有限公司 | 基于抽象语法树的源码检测方法及装置、计算机存储介质 |
CN113297584A (zh) * | 2021-07-28 | 2021-08-24 | 四川大学 | 漏洞检测方法、装置、设备及存储介质 |
CN113420296A (zh) * | 2021-07-08 | 2021-09-21 | 国网甘肃省电力公司电力科学研究院 | 一种基于Bert模型与BiLSTM的C源代码漏洞检测方法 |
-
2021
- 2021-09-24 CN CN202111124485.1A patent/CN113806750B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101814053A (zh) * | 2010-03-29 | 2010-08-25 | 中国人民解放军信息工程大学 | 一种基于功能模型的二进制代码漏洞发现方法 |
DE202013102179U1 (de) * | 2012-12-25 | 2013-08-01 | Kaspersky Lab, Zao | System zu detektieren von durch eine virtuelle Maschine ausgeführtem Schadcode |
US20150186648A1 (en) * | 2013-12-30 | 2015-07-02 | University Of Louisiana At Lafayette | System and method for identifying and comparing code by semantic abstractions |
US20180150742A1 (en) * | 2016-11-28 | 2018-05-31 | Microsoft Technology Licensing, Llc. | Source code bug prediction |
EP3572944A1 (en) * | 2018-05-24 | 2019-11-27 | Fujitsu Limited | Concurrency vulnerability detection |
CN108763931A (zh) * | 2018-05-28 | 2018-11-06 | 上海交通大学 | 基于Bi-LSTM和文本相似性的漏洞检测方法 |
US20200104631A1 (en) * | 2018-09-27 | 2020-04-02 | International Business Machines Corporation | Generating vector representations of code capturing semantic similarity |
CN109657466A (zh) * | 2018-11-26 | 2019-04-19 | 杭州英视信息科技有限公司 | 一种函数级软件漏洞检测方法 |
CN110245496A (zh) * | 2019-05-27 | 2019-09-17 | 华中科技大学 | 一种源代码漏洞检测方法及检测器和其训练方法及系统 |
GB201917161D0 (en) * | 2019-08-23 | 2020-01-08 | Praetorian | System and method for automatically detecting a security vulnerability in a source code using a machine learning model |
US20210056211A1 (en) * | 2019-08-23 | 2021-02-25 | Praetorian | System and method for automatically detecting a security vulnerability in a source code using a machine learning model |
WO2021037196A1 (zh) * | 2019-08-28 | 2021-03-04 | 杭州趣链科技有限公司 | 智能合约代码漏洞检测方法、装置、计算机设备和存储介质 |
CN110968874A (zh) * | 2019-11-28 | 2020-04-07 | 腾讯科技(深圳)有限公司 | 一种漏洞检测方法、装置、服务器及存储介质 |
CN112182585A (zh) * | 2020-09-29 | 2021-01-05 | 湖南大学 | 源代码漏洞检测方法、系统及存储介质 |
CN112631944A (zh) * | 2020-12-31 | 2021-04-09 | 平安国际智慧城市科技股份有限公司 | 基于抽象语法树的源码检测方法及装置、计算机存储介质 |
CN113420296A (zh) * | 2021-07-08 | 2021-09-21 | 国网甘肃省电力公司电力科学研究院 | 一种基于Bert模型与BiLSTM的C源代码漏洞检测方法 |
CN113297584A (zh) * | 2021-07-28 | 2021-08-24 | 四川大学 | 漏洞检测方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
白硕栋: "基于表示学习的漏洞源代码语义理解研究", 《硕士电子期刊》, no. 04 * |
Also Published As
Publication number | Publication date |
---|---|
CN113806750B (zh) | 2024-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109302410B (zh) | 一种内部用户异常行为检测方法、系统及计算机存储介质 | |
CN110135160B (zh) | 软件检测的方法、装置及系统 | |
KR102353545B1 (ko) | 재난대응 추천방법 및 그 장치 | |
CN110222513B (zh) | 一种线上活动的异常监测方法、装置及存储介质 | |
CN110968689A (zh) | 罪名及法条预测模型的训练方法以及罪名及法条预测方法 | |
CN111241496B (zh) | 确定小程序特征向量的方法、装置和电子设备 | |
CN114818689A (zh) | 一种域名检测方法、装置、设备、存储介质 | |
CN114116973A (zh) | 多文档的文本查重方法、电子设备及存储介质 | |
CN116150651A (zh) | 基于ai的深度合成检测方法和系统 | |
CN113468035B (zh) | 日志异常检测方法、装置、训练方法、装置及电子设备 | |
CN112579781B (zh) | 文本归类方法、装置、电子设备及介质 | |
CN110866700B (zh) | 确定企业员工信息泄露源的方法及装置 | |
CN109992778B (zh) | 基于机器学习的简历文档判别方法及装置 | |
CN113806750A (zh) | 文件安全风险检测方法、模型的训练方法、装置和设备 | |
CN116701641A (zh) | 一种非结构化数据的分级分类方法及装置 | |
CN116186263A (zh) | 文档检测方法、装置、计算机设备及计算机可读存储介质 | |
CN110555212A (zh) | 基于自然语言处理的文档校验方法、装置和电子设备 | |
CN116305257A (zh) | 隐私信息监测装置和隐私信息监测方法 | |
CN113761875B (zh) | 事件抽取方法、装置、电子设备及存储介质 | |
Alherbawi et al. | JPEG image classification in digital forensic via DCT coefficient analysis | |
CN113850085B (zh) | 企业的等级评估方法、装置、电子设备及可读存储介质 | |
CN113553487B (zh) | 网址类型的检测方法、装置、电子设备及存储介质 | |
US20240078320A1 (en) | Method and apparatus of anomaly detection of system logs based on self-supervised learning | |
CN117707922A (zh) | 测试用例的生成方法、装置、终端设备和可读存储介质 | |
CN117252539A (zh) | 基于神经网络的工程标准规范获取方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |