CN110245496A - 一种源代码漏洞检测方法及检测器和其训练方法及系统 - Google Patents
一种源代码漏洞检测方法及检测器和其训练方法及系统 Download PDFInfo
- Publication number
- CN110245496A CN110245496A CN201910447971.3A CN201910447971A CN110245496A CN 110245496 A CN110245496 A CN 110245496A CN 201910447971 A CN201910447971 A CN 201910447971A CN 110245496 A CN110245496 A CN 110245496A
- Authority
- CN
- China
- Prior art keywords
- loophole
- candidate
- code
- source code
- bug
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
Abstract
本发明公开了一种源代码漏洞检测方法及检测器和其训练方法及系统,包括:基于源代码中的每个函数生成一个抽象语法树,遍历所有抽象语法树,搜集能匹配到同一种漏洞语法特征的代码元素,将代码元素称为候选漏洞元素,确定所有候选漏洞元素;基于程序切片技术,在源代码中识别出与每个候选漏洞元素有语义关联的代码语句,以确定对应的候选漏洞代码段,并为每个候选漏洞代码段添加漏洞标签;将每个候选漏洞代码段对应的向量数据输入到神经网络模型中,并基于每个候选漏洞代码段的标签训练所述神经网络模型,得到漏洞检测器。本发明基于深度神经网络,采用通用的框架提取漏洞语法特征,不局限于漏洞类型,可扩展性强。
Description
技术领域
本发明涉及漏洞检测领域,更具体地,涉及一种源代码漏洞检测方法及检测器和其训练方法及系统。
背景技术
目前绝大部分的安全问题来源于源代码的不合理的编写,尽管开发人员代码安全意识在提高,但软件中的安全问题仍日益突出。根据美国国家漏洞数据库(NationalVulnerability Database,NVD)的报告显示,2017年全球记录了超过1.34万个漏洞,比2016年全年的漏洞记录数的2倍还多,而这个数字还在不断攀升。因此,漏洞是软件系统中不容小觑的问题,而解决这个的方法就是使用有效的漏洞检测技术发现漏洞并进行漏洞修护。
基于源码的静态漏洞检测是一种常用的检测方法,主要分为两方面,基于代码相似性和基于模式匹配。代码相似性只能检测出因代码克隆而导致的漏洞问题,可扩展性很差。模式匹配需要专家分析得出漏洞规则,之后根据规则在其他的代码中发现漏洞。
目前基于漏洞特征来检测漏洞的工具和研究主要分为3类。第一类是人工的方法:由人类专家生成漏洞的模式,之后根据模式检测是否有漏洞。例如商业软件工具Checkmarx,以规则形式匹配漏洞特征。但由于人工生成模式的时间和资源有限,这一类的方法很难得到各类漏洞的特征,导致这些漏洞检测工具的误报率或漏报率比较高。
第二类是半自动化的方法:同样需要人类专家的参与,主要是对数据属性的定义,例如,应用程序编程接口(Application Programming Interface,API)系统调用、代码中单词的词频、分支数量、计算复杂度等。之后采用机器学习方法根据属性值来甄别是否有漏洞。这类方法同样需要专家的参与,来定义漏洞的属性。此外,对漏洞的识别都处于函数、构件或文件这些粗粒度级别,并没有办法确定漏洞的具体位置。
第三类则是更为自动化的方法:无需人类专家定义属性,通过自动化的学习对函数进行高层表征,例如可以使用深度学习模型对代码的漏洞特征进行表征并学习,但目前深度学习方面只有针对API的工作,只能针对API这种语法特征,深度学习所能学习到的信息是有限的,并且没有形成一个完整的框架,通用性和可扩展性很差,并没有能满足各种漏洞类型的有效工具。
发明内容
针对现有技术的缺陷,本发明的目的在于解决现有漏洞检测技术人工参与大,粒度粗,涉及的漏洞类型少等的技术问题。
为实现上述目的,第一方面,本发明提供一种源代码漏洞检测器的训练方法,包括:
基于源代码中的每个函数生成一个抽象语法树,遍历所有抽象语法树,搜集能匹配到同一种漏洞语法特征的代码元素,将所述代码元素称为候选漏洞元素,确定每一种漏洞语法特征对应的所有候选漏洞元素;
基于程序切片技术,在源代码中识别出与每个候选漏洞元素有语义关联的代码语句,以确定对应的候选漏洞代码段,并将候选漏洞代码段与已知漏洞数据库匹配对比,为每个候选漏洞代码段添加标签,所述标签指示候选漏洞代码段有漏洞或无漏洞;
将每个候选漏洞代码段对应的向量数据输入到神经网络模型中,并基于每个候选漏洞代码段的标签训练所述神经网络模型,得到漏洞检测器,所述漏洞检测器用于检测接收到的向量数据对应的代码段是否包含漏洞。
可选地,通过如下步骤确定候选漏洞元素:
判断每个抽象语法树中是否有属于某一类漏洞语法特征的代码元素,若有,则将该代码元素记为一个候选漏洞元素;所述漏洞语法特征包括如下四类:库函数或API函数调用、数组使用、指针使用或表达式定义;所述漏洞语法特征指示包含对应语法的代码元素可能包含漏洞。
具体地,库函数是一个广义的概念,顾名思义是把函数放到库里,是把一些常用到的函数编完放到一个文件里,供用户用;API函数是应用程序接口,是一些预定义的函数。
可选地,通过如下步骤确定候选漏洞代码段:
为源代码中的每个函数生成程序依赖图PDG,所述PDG中每个节点对应源代码中的一行代码语句;
针对每个候选漏洞元素,在对应的PDG中,根据每个候选漏洞元素所在位置的前后两个方向进行前向切片和后向切片,并将前向切片和后向切片结合得到每个候选漏洞元素对应的程序切片;所述前向切片提取出与所述候选漏洞元素有数据依赖关系的节点,所述后向切片提取出与所述候选漏洞元素有数据依赖和控制依赖的节点;
根据每个候选漏洞元素对应的程序切片在PDG中所包含的节点,将节点所对应的代码语句按照其在源代码中的顺序保存,得到每个候选元素对应的候选代码段。
可选地,通过如下步骤为每个候选漏洞代码段添加标签:
根据每个候选代码段所保存代码语句对应的源代码路径,在已知漏洞数据库中匹配相应的源代码文件;
确定每个候选代码段所匹配的源代码文件中的漏洞行,如果该候选代码段包含所述漏洞行,则为该候选代码段添加指示有漏洞的标签,否则添加指示无漏洞的标签。
第二方面,本发明提供一种基于上述第一方面所述的源代码漏洞检测器的训练方法训练得到的源代码漏洞检测器。
第三方面,本发明提供一种漏洞检测方法,包括如下步骤:
基于待检测的源代码中的每个函数生成一个抽象语法树,遍历所有抽象语法树,搜集能匹配到同一种漏洞语法特征的代码元素,将所述代码元素称为候选漏洞元素,确定每一种漏洞语法特征对应的所有候选漏洞元素;
基于程序切片技术,在待检测源代码中识别出与每个候选漏洞元素有语义关联的代码语句,以确定对应的候选漏洞代码段;
将每个候选漏洞代码段对应的向量数据输入到源代码漏洞检测器,以检测该候选漏洞代码段是否包含漏洞;所述源代码漏洞检测器通过上述第一方面所述的源代码漏洞检测器的训练方法训练得到。
第四方面,本发明提供一种源代码漏洞检测器的训练系统,包括:
候选漏洞元素检测单元,用于基于源代码中的每个函数生成一个抽象语法树,遍历所有抽象语法树,搜集能匹配到同一种漏洞语法特征的代码元素,将所述代码元素称为候选漏洞元素,确定每一种漏洞语法特征对应的所有候选漏洞元素;
候选漏洞代码段检测单元,用于基于程序切片技术,在源代码中识别出与每个候选漏洞元素有语义关联的代码语句,以确定对应的候选漏洞代码段,并将候选漏洞代码段与已知漏洞数据库匹配对比,为每个候选漏洞代码段添加标签,所述标签指示候选漏洞代码段有漏洞或无漏洞;
漏洞检测器训练单元,用于将每个候选漏洞代码段对应的向量数据输入到神经网络模型中,并基于每个候选漏洞代码段的标签训练所述神经网络模型,得到漏洞检测器,所述漏洞检测器用于检测接收到的向量数据对应的代码段是否包含漏洞。
可选地,所述候选漏洞元素检测单元判断每个抽象语法树中是否有属于某一类漏洞语法特征的代码元素,若有,则将该代码元素记为一个候选漏洞元素;所述漏洞语法特征包括如下四类:库函数或API函数调用、数组使用、指针使用或表达式定义;所述漏洞语法特征指示包含对应语法的代码元素可能包含漏洞。
可选地,所述候选漏洞代码段检测单元为源代码中的每个函数生成程序依赖图PDG,所述PDG中每个节点对应源代码中的一行代码语句;针对每个候选漏洞元素,在对应的PDG中,根据每个候选漏洞元素所在位置的前后两个方向进行前向切片和后向切片,并将前向切片和后向切片结合得到每个候选漏洞元素对应的程序切片;所述前向切片提取出与所述候选漏洞元素有数据依赖关系的节点,所述后向切片提取出与所述候选漏洞元素有数据依赖和控制依赖的节点;根据每个候选漏洞元素对应的程序切片在PDG中所包含的节点,将节点所对应的代码语句按照其在源代码中的顺序保存,得到每个候选元素对应的候选代码段。
可选地,所述候选漏洞代码段检测单元根据每个候选代码段所保存代码语句对应的源代码路径,在已知漏洞数据库中匹配相应的源代码文件;确定每个候选代码段所匹配的源代码文件中的漏洞行,如果该候选代码段包含所述漏洞行,则为该候选代码段添加指示有漏洞的标签,否则添加指示无漏洞的标签。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
(1)相比于现有的基于漏洞特征的漏洞检测方案,本发明基于深度神经网络,充分分析了漏洞代码的特点,提出了一种通用的漏洞检测框架,可以表征和学习漏洞代码的语法和语义信息。基于深度学习的模型训练更为准确,不依赖于专家知识,且不局限于漏洞类型
(2)相比于现有的基于漏洞特征的漏洞检测方案,本发明从源代码中提取漏洞行并分析其语法特性,具有相同语法特性的漏洞归为一类漏洞特征,目前我们已经提取了4种语法特征,包括库函数或API函数调用、数组使用、指针使用、表达式定义,不仅可以对当前的漏洞代码进行分类处理,还可扩充数据集,增加模型分类准确率。而且可扩展性强,相关研究人员可以通过该框架提取其他的漏洞语法特征,增强神经网络学习能力。
(3)本申请的数据集是切片形式,切片的提取依据是先提取源代码文件中的漏洞行,再基于全部漏洞行总结漏洞所具有的某些特性来获取关注点,因此,根据关注点所获取的切片能最大程度的保留漏洞代码的特征,对于深度学习模型的学习有很大的帮助,训练出来的模型能以更低的误报率和漏报率来检测目标程序中的漏洞,并且能够定位漏洞代码的位置。
附图说明
图1为本发明实施例提供的源代码漏洞检测器的训练方法流程图;
图2为本发明实施例公开的一种通用的漏洞检测框架示意图;
图3为本发明实施例公开的一种从源代码中提取SyVC的示意图;
图4为本发明实施例公开的一种将SyVC转化为SeVC的示意图;
图5为本发明实施例提供的源代码漏洞检测器的训练系统架构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
图1为本发明提供的源代码漏洞检测器的训练方法流程图,如图1所示,包括:
S101,基于源代码中的每个函数生成一个抽象语法树,遍历所有抽象语法树,搜集能匹配到同一种漏洞语法特征的代码元素,将所述代码元素称为候选漏洞元素,确定每一种漏洞语法特征对应的所有候选漏洞元素;
S102,基于程序切片技术,在源代码中识别出与每个候选漏洞元素有语义关联的代码语句,以确定对应的候选漏洞代码段,并将候选漏洞代码段与已知漏洞数据库匹配对比,为每个候选漏洞代码段添加标签,所述标签指示候选漏洞代码段有漏洞或无漏洞;
S103,将每个候选漏洞代码段对应的向量数据输入到神经网络模型中,并基于每个候选漏洞代码段的标签训练所述神经网络模型,得到漏洞检测器,所述漏洞检测器用于检测接收到的向量数据对应的代码段是否包含漏洞。
在一个具体的示例中,本发明提出了一种通用的软件源代码漏洞智能检测方法,所述方法包括:
(1)基于语法的候选漏洞元素生成:针对源代码,为每个函数生成一个抽象语法树,之后遍历这个抽象语法树,搜集能够匹配到同一种漏洞语法特征的代码元素,将这些元素称为基于语法的候选漏洞元素SyVC。
(2)基于语义的候选漏洞代码段生成:基于程序依赖和数据依赖,使用程序切片技术,在源码中识别出与上述SyVC有语义关联的代码语句,将这个语句集合称之为基于语义的候选漏洞代码段SeVC,每一个SeVC为一个样本。
(3)向量表征生成:将所有的SeVC输入到文本-向量表征模型,进行模型的训练和向量表征,得到向量形式的数据。
(4)深度学习模型的训练与漏洞检测:将表征为向量的训练集SeVC输入到神经网络模型中做训练,生成漏洞分类器,之后采用训练好的漏洞分类器来分类目标程序,输出含有漏洞的样本数据。
进一步地,步骤(1)具体包括以下步骤:
(1.1)语法特征提取:从源代码中提取漏洞行并分析其语法特性,具有相同语法特性的漏洞归为一类漏洞特征,目前我们已经提取了4种语法特征,包括库/API函数调用、数组使用、指针使用、表达式定义。
(1.2)语法特征匹配:将源代码根据函数划分,为每个函数生成一个抽象语法树并执行遍历操作,检测抽象语法树中是否有属于某一类语法特征的代码元素。
(1.3)SyVC提取:遍历所有数据集,基于(1.2)所述的匹配方法,提取出满足条件的所有代码元素,一个元素即为一个SyVC。
进一步地,步骤(2)具体包括以下步骤:
(2.1)生成(Program Dependence Graph,PDG):为每个函数生成一个PDG,程序依赖图中每个节点表示一条语句或一个控制分支。
(2.2)为每个SyVC生成一个程序切片:针对每一个SyVC,在函数的程序依赖图PDG中,根据SyVC所在位置的前后两个方向进行前向切片和后向切片,前向切片是提取出跟SyVC有着数据依赖的图节点,后向切片是提取出与SyVC有数据依赖和控制依赖的图节点,再将前向和后向切片结合在一起就是SyVC所对应的程序切片。
(2.3)生成含有语义的候选漏洞代码段SeVC:将图节点对应的代码语句保存下来,并且保存语句在源代码中的顺序,根据顺序合并成代码段,这个代码段就是SeVC。
(2.4)给候选代码段SeVC添加类型标签:对步骤(2.3)得到的每个候选代码段SeVC,若包含已知的漏洞代码,则添加有漏洞标签,否则添加无漏洞标签;
进一步地,步骤(3)具体包括以下步骤:
(3.1)训练文本-向量表征模型。将所有的SeVC统一输入到模型中,根据上下文依赖关系训练向量表征,一个向量表征一个代码段,代码越相近的SeVC,向量越相似,距离越近。
进一步地,步骤(4)具体包括以下步骤:
(4.1)漏洞分类器训练,训练集的向量表征及对应的(2.4)所生成的类型标签输入到神经网络模型进行训练,最后输出训练好的漏洞分类器;
(4.2)漏洞检测,采用训练好的漏洞分类器来分类目标程序代码段的向量表征,最后输出分类结果为含漏洞的代码段。
进一步地,所述步骤(2.2)生成程序切片的具体实施方式为:为源码生成PDG,基于数据依赖和控制依赖,为每个SyVC生成前向程序切片和后向程序切片。
进一步地,所述步骤(2.3)将程序切片合并的具体实施方式为:按照语句在源程序中出现的顺序合并,重复的语句仅保留一条。
进一步地,所述步骤(3.1)的具体实施方式为:首先去除掉源码的相关注释及机器无法识别的字符,并将其中属于用户自定义的函数名和变量名映射为统一的符号格式。之后再通过词法分析将源码表征为向量;
进一步地,所述步骤(3.1)还需设置一个向量的固定长度,具体实现方式为,在向量的尾部或前部填充0或截断将候选代码段的长度固定。
进一步地,所述步骤(3.1)的将候选代码段表征为向量采用word2vec算法。
进一步地,所述步骤(4.2)的神经网络模型可采用循环神经网络、双向循环神经网络、卷积神经网络中的任意一种。
本发明的整体思路在于,针对漏洞行,总结漏洞语法特征,根据特征寻找代码中的代码元素,之后基于控制依赖和数据依赖对代码元素提取程序切片并合并成候选代码段,再对代码段进行打标签和向量表征之后,输入到神经网络中训练漏洞分类器,不依赖于专家知识,使得漏洞特征生成完全自动化。同时,因为本申请的数据集是切片形式,切片的提取依据是先提取源代码文件中的漏洞行,再基于全部漏洞行总结漏洞所具有的某些特性来获取关注点。因此,根据关注点所获取的切片能最大程度的保留漏洞代码的特征,对于深度学习模型的学习有很大的帮助,训练出来的模型能以更低的误报率和漏报率来检测目标程序中的漏洞,并且能够定位漏洞代码的位置。
如图2所示为本发明实施例公开的一种通用的漏洞检测框架流程示意图,包括以下步骤:
(1)基于语法的候选漏洞元素生成:针对源代码,为每个函数生成一个抽象语法树(AST),之后遍历这个抽象语法树,搜集能够匹配到同一种漏洞语法特征的代码元素,将这些元素称为候选漏洞元素SyVC。
(2)基于语义的候选漏洞代码段生成:基于程序依赖和数据依赖,使用程序切片技术,在源码中识别出与上述SyVC有语义关联的代码语句,将这个语句集合称为候选代码段SeVC,每一个SeVC为一个训练样本。
(3)向量表征生成:将所有的SeVC输入到文本-向量表征模型,进行模型的训练和向量表征,得到向量形式的数据。
(4)深度学习模型的训练与漏洞检测:将表征为向量的训练集输入到神经网络模型中做训练,生成漏洞分类器,之后采用训练好的漏洞分类器来检测目标程序,输出含有漏洞的样本数据。
如图3为本发明实施例公开的一种从源代码中提取SyVC的示意图,具体包括以下步骤:
(1.1)语法特征提取:基于现有的工具,从C/C++源代码中提取漏洞行,分析其漏洞规则,将具有相同语法特性的漏洞归为一类漏洞特征。目前我们已经提取了4种语法特征,包括库/API函数调用、数组使用、指针使用、表达式定义,每一种语法特征都跟许多的漏洞相对应,如API函数调用这一类覆盖有811个函数调用,这些函数调用包含有106个CWE ID。
(1.2)语法特征匹配:为了能够提取出SyVC,我们需要先确定某一个代码元素是否是属于特定的语法特征。因此我们先将源代码根据函数划分,知乎为每个函数生成一个抽象语法树并执行遍历操作。逐一检测抽象语法树中的代码元素是否属于某一类语法特征。4类特征的具体检测过程如下:
图3中的子图(a),针对图中的“memset”元素,可以看出它是一个被调用的元素,我们通过检索匹配发现“memset”又是属于811个API函数调用中的一个,那么就将“memset”这个元素定义为属于库/API函数调用这一类语法特征。
子图(b)当中,对于图中的“source”元素,可以看出它是一个标识符,并且它出现在前面分支的标识符声明语句中,且该标识符声明语句包含有“[”的字符,那么就将“source”这个元素定义为数组使用这一类。
子图(c)当中,对于图中的“data”元素,可以看出它是一个标识符,并且它出现在前面分支的标识符声明语句中,且该标识符声明语句包含有“*”的字符,那么就将“data”这个元素定义为数组使用这一类。
子图(d)当中,对于图中的“data=dataBuffer-8”元素,可以看出他是一个表达式语句,并且该语句包含有“=”字符,且在右边有1个或多个标识符,那么就将“data=dataBuffer-8”这个元素定义为数组使用这一类。
(1.3)SyVC提取:遍历所有数据集,基于(1.2)所述的4类语法特征匹配方法,提取出数据集中的所有能被归于某一类语法特征的代码元素,一个代码元素即为一个基于语法特征的候选漏洞代码段SyVC,如上述“memset”,“data”,“source”都是SyVC。
如图4为本发明实施例公开的一种将SyVC转化为SeVC的示意图,具体包括以下步骤:
(2.1)生成PDG:为每个函数生成一个PDG,程序依赖图中每个节点表示一行语句。
(2.2)为每个SyVC生成一个程序切片:针对每一个SyVC,在函数的程序依赖图PDG中,根据SyVC所在位置的前后两个方向进行前向切片和后向切片,前向切片是聚合跟SyVC有着数据依赖的图节点,后向切片是聚合跟SyVC有这数据依赖和控制依赖的图节点,再将前向和后向切片聚合在一起就是SyVC所对应的程序切片。
生成程序切片的具体实施方式为:通过对程序进行词法语法分析,生成过程间程序依赖图。对于每个接收外部输入的关注点,基于程序依赖图对各参数分别生成前向程序切片;对于每个不接收外部输入的关注点,基于程序依赖图对各参数分别生成后向程序切片。如图4步骤2所示,灰色节点25为关注点所对应的节点,通过PDG可以看出,24节点对其有数据依赖的关系(’data’从24传递到了25节点),这属于后向切片,而25节点对26节点同样存在数据依赖的关系,这属于前向切片。此外,18节点对24节点也有数据依赖关系,因为切片应该添加18节点,同理9号节点和14号节点对18号节点有不同的数据依赖关系,也应添加。这样搜寻完整个PDG,会得到基于25节点这个关注点的程序切片与以下节点存在依赖关系:1,3,4,7,9,10,11,13,14,16,18,22,23,24,25,26。其中26,1,3,4,为节点25的前向切片,而7,9,10,11,13,14,16,18,22,23,24为节点25的后向切片。将前向切片和后向切片合并,就得到了基于节点25这个关注点的程序切片。
(2.3)生成含有语义的候选漏洞代码段SeVC:程序切片由多个图节点组成,而每个图节点是对应与源代码当中的一行语句的。如25节点对应的语句为:data[99]=’\0’。将所有图节点对应的代码语句保存下来,并且保存语句在源代码中的顺序,根据顺序合并成代码段,这个代码段就是SeVC。
将各参数的程序切片合并的具体实施方式为:对于属于相同用户自定义函数的语句,按照语句在函数中出现的顺序合并,其中,重复的语句仅保留一条;对于属于不同用户自定义函数的语句,若在程序切片中这些用户自定义函数间已存在顺序,则按此函数顺序合并,否则采用随机的函数顺序合并。如图4步骤2-步骤3的过程所示,25节点在源代码中属于func()函数,因此先将程序切片中属于fun()函数的语句按源码顺序进行合并,即:7,9,10,11,13,14,16,18,22,23,24,25,26。而剩余的节点属于printLine()函数,因此将属于printLine()函数中的节点根据源码的顺序进行合并,即:1,3,4。之后,将不同函数的语句进行合并。即可得到代码段形式的程序切片。即按照7,9,10,11,13,14,16,18,22,23,24,25,26,1,3,4的顺序合并而成的代码段。
图5为本发明实施例提供的源代码漏洞检测器的训练系统架构图,如图5所示,包括:
候选漏洞元素检测单元,用于基于源代码中的每个函数生成一个抽象语法树,遍历所有抽象语法树,搜集能匹配到同一种漏洞语法特征的代码元素,将所述代码元素称为候选漏洞元素,确定每一种漏洞语法特征对应的所有候选漏洞元素;
候选漏洞代码段检测单元,用于基于程序切片技术,在源代码中识别出与每个候选漏洞元素有语义关联的代码语句,以确定对应的候选漏洞代码段,并将候选漏洞代码段与已知漏洞数据库匹配对比,为每个候选漏洞代码段添加标签,所述标签指示候选漏洞代码段有漏洞或无漏洞;
漏洞检测器训练单元,用于将每个候选漏洞代码段对应的向量数据输入到神经网络模型中,并基于每个候选漏洞代码段的标签训练所述神经网络模型,得到漏洞检测器,所述漏洞检测器用于检测接收到的向量数据对应的代码段是否包含漏洞。
具体各个单元的功能可参见前述方法实施例,在此不做赘述。
本发明公开了一种通用的软件源代码漏洞智能检测框架及系统,包括基于语法的候选漏洞元素生成、基于语义的候选漏洞代码段生成、向量表征生成和深度学习模型的训练与漏洞检测四部分。首先基于源代码漏洞的语法特征,从训练程序和目标程序源码中提取基于语法的候选漏洞元素。然后采用程序切片技术,提取与上述基于语法的候选漏洞元素存在语义关联的语句,生成基于语义的候选漏洞代码段。再将基于语义的候选漏洞代码段输入到文本-向量表征模型,表征为向量形式的数据。最后将从训练程序得到的向量表征输入到深度神经网络训练,生成漏洞检测分类器,用来分类从目标程序得到的向量表征,输出目标程序中含有漏洞的基于语义的候选漏洞代码段。本发明基于深度神经网络,采用通用的框架提取漏洞语法特征,不局限于漏洞类型,目前已经提取出包括API调用、数组使用、表达式定义、指针使用4类语法特征,且可扩展性强,相关研究人员可以通过该框架提取其他的漏洞语法特征,增强神经网络学习能力。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种源代码漏洞检测器的训练方法,其特征在于,包括:
基于源代码中的每个函数生成一个抽象语法树,遍历所有抽象语法树,搜集能匹配到同一种漏洞语法特征的代码元素,将所述代码元素称为候选漏洞元素,确定每一种漏洞语法特征对应的所有候选漏洞元素;
基于程序切片技术,在源代码中识别出与每个候选漏洞元素有语义关联的代码语句,以确定对应的候选漏洞代码段,并将候选漏洞代码段与已知漏洞数据库匹配对比,为每个候选漏洞代码段添加标签,所述标签指示候选漏洞代码段有漏洞或无漏洞;
将每个候选漏洞代码段对应的向量数据输入到神经网络模型中,并基于每个候选漏洞代码段的标签训练所述神经网络模型,得到漏洞检测器,所述漏洞检测器用于检测接收到的向量数据对应的代码段是否包含漏洞。
2.根据权利要求1所述的源代码漏洞检测器的训练方法,其特征在于,通过如下步骤确定候选漏洞元素:
判断每个抽象语法树中是否有属于某一类漏洞语法特征的代码元素,若有,则将该代码元素记为一个候选漏洞元素;所述漏洞语法特征包括如下四类:库函数或API函数调用、数组使用、指针使用或表达式定义;所述漏洞语法特征指示包含对应语法的代码元素可能包含漏洞。
3.根据权利要求1所述的源代码漏洞检测器的训练方法,其特征在于,通过如下步骤确定候选漏洞代码段:
为源代码中的每个函数生成程序依赖图PDG,所述PDG中每个节点对应源代码中的一行代码语句;
针对每个候选漏洞元素,在对应的PDG中,根据每个候选漏洞元素所在位置的前后两个方向进行前向切片和后向切片,并将前向切片和后向切片结合得到每个候选漏洞元素对应的程序切片;所述前向切片提取出与所述候选漏洞元素有数据依赖关系的节点,所述后向切片提取出与所述候选漏洞元素有数据依赖和控制依赖的节点;
根据每个候选漏洞元素对应的程序切片在PDG中所包含的节点,将节点所对应的代码语句按照其在源代码中的顺序保存,得到每个候选元素对应的候选代码段。
4.根据权利要求3所述的源代码漏洞检测器的训练方法,其特征在于,通过如下步骤为每个候选漏洞代码段添加标签:
根据每个候选代码段所保存代码语句对应的源代码路径,在已知漏洞数据库中匹配相应的源代码文件;
确定每个候选代码段所匹配的源代码文件中的漏洞行,如果该候选代码段包含所述漏洞行,则为该候选代码段添加指示有漏洞的标签,否则添加指示无漏洞的标签。
5.一种基于权利要求1至4任一项所述的源代码漏洞检测器的训练方法训练得到的源代码漏洞检测器。
6.一种漏洞检测方法,其特征在于,包括如下步骤:
基于待检测的源代码中的每个函数生成一个抽象语法树,遍历所有抽象语法树,搜集能匹配到同一种漏洞语法特征的代码元素,将所述代码元素称为候选漏洞元素,确定每一种漏洞语法特征对应的所有候选漏洞元素;
基于程序切片技术,在待检测源代码中识别出与每个候选漏洞元素有语义关联的代码语句,以确定对应的候选漏洞代码段;
将每个候选漏洞代码段对应的向量数据输入到源代码漏洞检测器,以检测该候选漏洞代码段是否包含漏洞;所述源代码漏洞检测器通过权利要求1至4任一项所述的源代码漏洞检测器的训练方法训练得到。
7.一种源代码漏洞检测器的训练系统,其特征在于,包括:
候选漏洞元素检测单元,用于基于源代码中的每个函数生成一个抽象语法树,遍历所有抽象语法树,搜集能匹配到同一种漏洞语法特征的代码元素,将所述代码元素称为候选漏洞元素,确定每一种漏洞语法特征对应的所有候选漏洞元素;
候选漏洞代码段检测单元,用于基于程序切片技术,在源代码中识别出与每个候选漏洞元素有语义关联的代码语句,以确定对应的候选漏洞代码段,并将候选漏洞代码段与已知漏洞数据库匹配对比,为每个候选漏洞代码段添加标签,所述标签指示候选漏洞代码段有漏洞或无漏洞;
漏洞检测器训练单元,用于将每个候选漏洞代码段对应的向量数据输入到神经网络模型中,并基于每个候选漏洞代码段的标签训练所述神经网络模型,得到漏洞检测器,所述漏洞检测器用于检测接收到的向量数据对应的代码段是否包含漏洞。
8.根据权利要求7所述的源代码漏洞检测器的训练系统,其特征在于,所述候选漏洞元素检测单元判断每个抽象语法树中是否有属于某一类漏洞语法特征的代码元素,若有,则将该代码元素记为一个候选漏洞元素;所述漏洞语法特征包括如下四类:库函数或API函数调用、数组使用、指针使用或表达式定义;所述漏洞语法特征指示包含对应语法的代码元素可能包含漏洞。
9.根据权利要求7所述的源代码漏洞检测器的训练系统,其特征在于,所述候选漏洞代码段检测单元为源代码中的每个函数生成程序依赖图PDG,所述PDG中每个节点对应源代码中的一行代码语句;针对每个候选漏洞元素,在对应的PDG中,根据每个候选漏洞元素所在位置的前后两个方向进行前向切片和后向切片,并将前向切片和后向切片结合得到每个候选漏洞元素对应的程序切片;所述前向切片提取出与所述候选漏洞元素有数据依赖关系的节点,所述后向切片提取出与所述候选漏洞元素有数据依赖和控制依赖的节点;根据每个候选漏洞元素对应的程序切片在PDG中所包含的节点,将节点所对应的代码语句按照其在源代码中的顺序保存,得到每个候选元素对应的候选代码段。
10.根据权利要求9所述的源代码漏洞检测器的训练系统,其特征在于,所述候选漏洞代码段检测单元根据每个候选代码段所保存代码语句对应的源代码路径,在已知漏洞数据库中匹配相应的源代码文件;确定每个候选代码段所匹配的源代码文件中的漏洞行,如果该候选代码段包含所述漏洞行,则为该候选代码段添加指示有漏洞的标签,否则添加指示无漏洞的标签。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910447971.3A CN110245496B (zh) | 2019-05-27 | 2019-05-27 | 一种源代码漏洞检测方法及检测器和其训练方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910447971.3A CN110245496B (zh) | 2019-05-27 | 2019-05-27 | 一种源代码漏洞检测方法及检测器和其训练方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110245496A true CN110245496A (zh) | 2019-09-17 |
CN110245496B CN110245496B (zh) | 2021-04-20 |
Family
ID=67885222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910447971.3A Active CN110245496B (zh) | 2019-05-27 | 2019-05-27 | 一种源代码漏洞检测方法及检测器和其训练方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110245496B (zh) |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110674503A (zh) * | 2019-09-24 | 2020-01-10 | 杭州云象网络技术有限公司 | 一种基于图卷积神经网络的智能合约死循环检测方法 |
CN110866254A (zh) * | 2019-09-29 | 2020-03-06 | 华为终端有限公司 | 一种检测漏洞方法与电子设备 |
CN111131262A (zh) * | 2019-12-26 | 2020-05-08 | 北京神州绿盟信息安全科技股份有限公司 | 一种漏洞扫描方法及装置 |
CN111142857A (zh) * | 2019-12-17 | 2020-05-12 | 华东师范大学 | 基于离线监督学习的函数式程序自动合成方法 |
CN111274134A (zh) * | 2020-01-17 | 2020-06-12 | 扬州大学 | 基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质 |
CN111460450A (zh) * | 2020-03-11 | 2020-07-28 | 西北大学 | 一种基于图卷积网络的源代码漏洞检测方法 |
CN111523119A (zh) * | 2020-04-26 | 2020-08-11 | 南开大学 | 漏洞检测的方法和装置、电子设备及计算机可读存储介质 |
CN111753303A (zh) * | 2020-07-29 | 2020-10-09 | 哈尔滨工业大学 | 一种基于深度学习和强化学习的多粒度代码漏洞检测方法 |
CN111832028A (zh) * | 2020-07-27 | 2020-10-27 | 中国工商银行股份有限公司 | 代码审计方法和装置、电子设备、及介质 |
CN112100626A (zh) * | 2020-09-24 | 2020-12-18 | 成都信息工程大学 | 一种提高源代码审计漏洞命中率开发方法 |
CN112131122A (zh) * | 2020-09-27 | 2020-12-25 | 北京软安科技有限公司 | 一种源代码缺陷检测工具误报评估方法及装置 |
CN112162777A (zh) * | 2020-09-27 | 2021-01-01 | 北京软安科技有限公司 | 一种源代码特征提取方法及装置 |
CN112541180A (zh) * | 2020-12-16 | 2021-03-23 | 北京理工大学 | 一种基于语法特征和语义特征的软件安全漏洞检测方法 |
CN112699377A (zh) * | 2020-12-30 | 2021-04-23 | 哈尔滨工业大学 | 基于切片属性图表示学习的函数级代码漏洞检测方法 |
CN113051253A (zh) * | 2021-04-15 | 2021-06-29 | 广州云族佳科技有限公司 | 一种构建标签数据库的方法和装置 |
CN113158194A (zh) * | 2021-03-30 | 2021-07-23 | 西北大学 | 一种基于多关系图网络的漏洞模型的构建方法及检测方法 |
CN113221126A (zh) * | 2021-05-31 | 2021-08-06 | 北京中科天齐信息技术有限公司 | 一种TensorFlow程序漏洞检测方法、装置及电子设备 |
CN113392016A (zh) * | 2021-06-25 | 2021-09-14 | 中债金科信息技术有限公司 | 对程序异常情况处理的规约生成方法、装置、设备及介质 |
CN113420296A (zh) * | 2021-07-08 | 2021-09-21 | 国网甘肃省电力公司电力科学研究院 | 一种基于Bert模型与BiLSTM的C源代码漏洞检测方法 |
CN113468534A (zh) * | 2021-09-01 | 2021-10-01 | 北京邮电大学 | 针对安卓应用程序的漏洞检测方法及相关装置 |
CN113742732A (zh) * | 2020-05-27 | 2021-12-03 | 南京大学 | 一种代码漏洞扫描与定位方法 |
CN113806750A (zh) * | 2021-09-24 | 2021-12-17 | 深信服科技股份有限公司 | 文件安全风险检测方法、模型的训练方法、装置和设备 |
CN113821448A (zh) * | 2021-11-22 | 2021-12-21 | 上海斗象信息科技有限公司 | 一种Webshell代码的检测方法及装置、可读存储介质 |
CN114139165A (zh) * | 2021-12-07 | 2022-03-04 | 扬州大学 | 基于机器学习中的多目标识别的智能合约漏洞检测方法 |
CN114201406A (zh) * | 2021-12-16 | 2022-03-18 | 中国电信股份有限公司 | 基于开源组件的代码检测方法、系统、设备及存储介质 |
WO2022096574A1 (en) * | 2020-11-05 | 2022-05-12 | Accenture Global Solutions Limited | Scalable source code vulnerability remediation |
CN114579977A (zh) * | 2022-02-25 | 2022-06-03 | 无锡物联网创新中心有限公司 | 一种用于嵌入式操作系统的代码漏洞检测方法 |
CN114692155A (zh) * | 2022-05-30 | 2022-07-01 | 中国海洋大学 | 基于知识图谱的漏洞代码图谱构建及代码漏洞检测方法 |
CN114861194A (zh) * | 2022-05-13 | 2022-08-05 | 兰州交通大学 | 一种基于bgru与cnn融合模型的多类型漏洞检测方法 |
CN115412335A (zh) * | 2022-08-26 | 2022-11-29 | 国网江苏省电力有限公司电力科学研究院 | 5g电力物联网边缘设备漏洞检测方法、装置及系统 |
CN115495755B (zh) * | 2022-11-15 | 2023-04-07 | 四川大学 | 一种基于CodeBERT和R-GCN的源代码漏洞多分类检测的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661543A (zh) * | 2008-08-28 | 2010-03-03 | 西门子(中国)有限公司 | 软件源代码安全漏洞的检测方法及检测装置 |
CN103455759A (zh) * | 2012-06-05 | 2013-12-18 | 深圳市腾讯计算机系统有限公司 | 一种页面漏洞检测装置及检测方法 |
CN104573503A (zh) * | 2015-02-11 | 2015-04-29 | 中国农业银行股份有限公司 | 一种内存访问溢出的检测方法及装置 |
CN107885999A (zh) * | 2017-11-08 | 2018-04-06 | 华中科技大学 | 一种基于深度学习的漏洞检测方法及系统 |
CN109002712A (zh) * | 2018-06-22 | 2018-12-14 | 北京大学 | 一种基于值依赖图的污染数据分析方法、系统与电子设备 |
-
2019
- 2019-05-27 CN CN201910447971.3A patent/CN110245496B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661543A (zh) * | 2008-08-28 | 2010-03-03 | 西门子(中国)有限公司 | 软件源代码安全漏洞的检测方法及检测装置 |
CN103455759A (zh) * | 2012-06-05 | 2013-12-18 | 深圳市腾讯计算机系统有限公司 | 一种页面漏洞检测装置及检测方法 |
CN104573503A (zh) * | 2015-02-11 | 2015-04-29 | 中国农业银行股份有限公司 | 一种内存访问溢出的检测方法及装置 |
CN107885999A (zh) * | 2017-11-08 | 2018-04-06 | 华中科技大学 | 一种基于深度学习的漏洞检测方法及系统 |
CN109002712A (zh) * | 2018-06-22 | 2018-12-14 | 北京大学 | 一种基于值依赖图的污染数据分析方法、系统与电子设备 |
Non-Patent Citations (1)
Title |
---|
贠大庆: "静态程序切片技术及其在安全领域的应用研究", 《西安电子科技大学学位论文》 * |
Cited By (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110674503B (zh) * | 2019-09-24 | 2021-06-15 | 杭州云象网络技术有限公司 | 一种基于图卷积神经网络的智能合约死循环检测方法 |
CN110674503A (zh) * | 2019-09-24 | 2020-01-10 | 杭州云象网络技术有限公司 | 一种基于图卷积神经网络的智能合约死循环检测方法 |
CN110866254A (zh) * | 2019-09-29 | 2020-03-06 | 华为终端有限公司 | 一种检测漏洞方法与电子设备 |
CN111142857A (zh) * | 2019-12-17 | 2020-05-12 | 华东师范大学 | 基于离线监督学习的函数式程序自动合成方法 |
CN111131262A (zh) * | 2019-12-26 | 2020-05-08 | 北京神州绿盟信息安全科技股份有限公司 | 一种漏洞扫描方法及装置 |
CN111131262B (zh) * | 2019-12-26 | 2021-11-16 | 绿盟科技集团股份有限公司 | 一种漏洞扫描方法及装置 |
CN111274134A (zh) * | 2020-01-17 | 2020-06-12 | 扬州大学 | 基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质 |
CN111274134B (zh) * | 2020-01-17 | 2023-07-11 | 扬州大学 | 基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质 |
CN111460450A (zh) * | 2020-03-11 | 2020-07-28 | 西北大学 | 一种基于图卷积网络的源代码漏洞检测方法 |
CN111523119A (zh) * | 2020-04-26 | 2020-08-11 | 南开大学 | 漏洞检测的方法和装置、电子设备及计算机可读存储介质 |
CN111523119B (zh) * | 2020-04-26 | 2023-05-05 | 南开大学 | 漏洞检测的方法和装置、电子设备及计算机可读存储介质 |
CN113742732A (zh) * | 2020-05-27 | 2021-12-03 | 南京大学 | 一种代码漏洞扫描与定位方法 |
CN111832028A (zh) * | 2020-07-27 | 2020-10-27 | 中国工商银行股份有限公司 | 代码审计方法和装置、电子设备、及介质 |
CN111753303A (zh) * | 2020-07-29 | 2020-10-09 | 哈尔滨工业大学 | 一种基于深度学习和强化学习的多粒度代码漏洞检测方法 |
CN112100626A (zh) * | 2020-09-24 | 2020-12-18 | 成都信息工程大学 | 一种提高源代码审计漏洞命中率开发方法 |
CN112131122B (zh) * | 2020-09-27 | 2022-09-30 | 北京智联安行科技有限公司 | 一种源代码缺陷检测工具误报评估方法及装置 |
CN112162777A (zh) * | 2020-09-27 | 2021-01-01 | 北京软安科技有限公司 | 一种源代码特征提取方法及装置 |
CN112131122A (zh) * | 2020-09-27 | 2020-12-25 | 北京软安科技有限公司 | 一种源代码缺陷检测工具误报评估方法及装置 |
WO2022096574A1 (en) * | 2020-11-05 | 2022-05-12 | Accenture Global Solutions Limited | Scalable source code vulnerability remediation |
CN112541180A (zh) * | 2020-12-16 | 2021-03-23 | 北京理工大学 | 一种基于语法特征和语义特征的软件安全漏洞检测方法 |
CN112541180B (zh) * | 2020-12-16 | 2022-09-13 | 北京理工大学 | 一种基于语法特征和语义特征的软件安全漏洞检测方法 |
CN112699377A (zh) * | 2020-12-30 | 2021-04-23 | 哈尔滨工业大学 | 基于切片属性图表示学习的函数级代码漏洞检测方法 |
CN113158194A (zh) * | 2021-03-30 | 2021-07-23 | 西北大学 | 一种基于多关系图网络的漏洞模型的构建方法及检测方法 |
CN113051253A (zh) * | 2021-04-15 | 2021-06-29 | 广州云族佳科技有限公司 | 一种构建标签数据库的方法和装置 |
CN113221126A (zh) * | 2021-05-31 | 2021-08-06 | 北京中科天齐信息技术有限公司 | 一种TensorFlow程序漏洞检测方法、装置及电子设备 |
CN113392016A (zh) * | 2021-06-25 | 2021-09-14 | 中债金科信息技术有限公司 | 对程序异常情况处理的规约生成方法、装置、设备及介质 |
CN113420296A (zh) * | 2021-07-08 | 2021-09-21 | 国网甘肃省电力公司电力科学研究院 | 一种基于Bert模型与BiLSTM的C源代码漏洞检测方法 |
CN113468534A (zh) * | 2021-09-01 | 2021-10-01 | 北京邮电大学 | 针对安卓应用程序的漏洞检测方法及相关装置 |
CN113806750A (zh) * | 2021-09-24 | 2021-12-17 | 深信服科技股份有限公司 | 文件安全风险检测方法、模型的训练方法、装置和设备 |
CN113806750B (zh) * | 2021-09-24 | 2024-02-23 | 深信服科技股份有限公司 | 文件安全风险检测方法、模型的训练方法、装置和设备 |
CN113821448A (zh) * | 2021-11-22 | 2021-12-21 | 上海斗象信息科技有限公司 | 一种Webshell代码的检测方法及装置、可读存储介质 |
CN114139165A (zh) * | 2021-12-07 | 2022-03-04 | 扬州大学 | 基于机器学习中的多目标识别的智能合约漏洞检测方法 |
CN114201406A (zh) * | 2021-12-16 | 2022-03-18 | 中国电信股份有限公司 | 基于开源组件的代码检测方法、系统、设备及存储介质 |
CN114201406B (zh) * | 2021-12-16 | 2024-02-02 | 中国电信股份有限公司 | 基于开源组件的代码检测方法、系统、设备及存储介质 |
CN114579977A (zh) * | 2022-02-25 | 2022-06-03 | 无锡物联网创新中心有限公司 | 一种用于嵌入式操作系统的代码漏洞检测方法 |
CN114861194B (zh) * | 2022-05-13 | 2024-03-08 | 兰州交通大学 | 一种基于bgru与cnn融合模型的多类型漏洞检测方法 |
CN114861194A (zh) * | 2022-05-13 | 2022-08-05 | 兰州交通大学 | 一种基于bgru与cnn融合模型的多类型漏洞检测方法 |
CN114692155B (zh) * | 2022-05-30 | 2022-08-23 | 中国海洋大学 | 基于知识图谱的漏洞代码图谱构建及代码漏洞检测方法 |
CN114692155A (zh) * | 2022-05-30 | 2022-07-01 | 中国海洋大学 | 基于知识图谱的漏洞代码图谱构建及代码漏洞检测方法 |
CN115412335A (zh) * | 2022-08-26 | 2022-11-29 | 国网江苏省电力有限公司电力科学研究院 | 5g电力物联网边缘设备漏洞检测方法、装置及系统 |
CN115412335B (zh) * | 2022-08-26 | 2024-03-05 | 国网江苏省电力有限公司电力科学研究院 | 5g电力物联网边缘设备漏洞检测方法、装置及系统 |
CN115495755B (zh) * | 2022-11-15 | 2023-04-07 | 四川大学 | 一种基于CodeBERT和R-GCN的源代码漏洞多分类检测的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110245496B (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110245496A (zh) | 一种源代码漏洞检测方法及检测器和其训练方法及系统 | |
CN109657473B (zh) | 一种基于深度特征的细粒度漏洞检测方法 | |
CN110222512A (zh) | 一种基于中间语言的软件漏洞智能检测与定位方法与系统 | |
CN111783100A (zh) | 基于图卷积网络对代码图表示学习的源代码漏洞检测方法 | |
CN108268777A (zh) | 一种利用补丁信息进行未知漏洞发现的相似性检测方法 | |
CN106228068B (zh) | 基于混合特征的Android恶意代码检测方法 | |
CN108200054A (zh) | 一种基于dns解析的恶意域名检测方法及装置 | |
CN108763931A (zh) | 基于Bi-LSTM和文本相似性的漏洞检测方法 | |
CN107360152A (zh) | 一种基于语义分析的Web威胁感知系统 | |
CN109670306A (zh) | 基于人工智能的电力恶意代码检测方法、服务器及系统 | |
CN109190371A (zh) | 一种基于行为图的Android恶意软件检测方法和技术 | |
CN108229170B (zh) | 利用大数据和神经网络的软件分析方法和装置 | |
CN107111610A (zh) | 用于神经语言行为识别系统的映射器组件 | |
CN109067800A (zh) | 一种固件漏洞的跨平台关联检测方法 | |
CN114357190A (zh) | 一种数据检测方法、装置、电子设备及存储介质 | |
CN110704846A (zh) | 一种人在回路的智能化安全漏洞发现方法 | |
CN110210218A (zh) | 一种病毒检测的方法以及相关装置 | |
CN112257076B (zh) | 一种基于随机探测算法和信息聚合的漏洞检测方法 | |
CN113297580B (zh) | 基于代码语义分析的电力信息系统安全防护方法及装置 | |
CN113722711A (zh) | 基于大数据安全漏洞挖掘的数据添加方法及人工智能系统 | |
CN110334510A (zh) | 一种基于随机森林算法的恶意文件检测技术 | |
CN116074092B (zh) | 一种基于异构图注意力网络的攻击场景重构系统 | |
CN115859307A (zh) | 基于树型注意力和加权图匹配的相似漏洞检测方法 | |
CN112988327A (zh) | 一种基于云边协同的容器安全管理方法和系统 | |
KR20210142443A (ko) | 사이버 공간에서 실시간 공격 탐지를 위한 시간에 따른 지속적인 적응형 학습을 제공하는 방법 및 시스템 |
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 |