CN112989363A - 漏洞定位方法、装置、电子设备和存储介质 - Google Patents
漏洞定位方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112989363A CN112989363A CN202110544115.7A CN202110544115A CN112989363A CN 112989363 A CN112989363 A CN 112989363A CN 202110544115 A CN202110544115 A CN 202110544115A CN 112989363 A CN112989363 A CN 112989363A
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- graph
- control flow
- process control
- flow graph
- 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
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
-
- 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
-
- 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
- G06N3/048—Activation functions
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本公开一个或多个实施例提供一种漏洞定位方法、装置、电子设备和存储介质,包括:响应于输入的源代码,根据所述源代码生成抽象语法树;根据所述抽象语法树构建函数调用关系图和过程内控制流图;连接所述函数调用关系图和所述过程内控制流图,生成过程间控制流图;使用混合图嵌入算法分析所述过程间控制流图,得到总特征向量;将所述总特征向量输入到预训练好的漏洞定位模型,得到所述源代码的漏洞位置和漏洞类型;可以精准地发现漏洞所在的具体代码行以及漏洞的具体分类,极大提高了漏洞定位的效率。
Description
技术领域
本说明书一个或多个实施例涉及信息安全技术领域,尤其涉及一种漏洞定位方法、装置、电子设备和存储介质。
背景技术
软件漏洞定位常用方法为代码静态分析,但代码静态分析漏报率和误报率较高,特征提取不充分,粒度粗,效率低下。
发明内容
有鉴于此,本公开一个或多个实施例的目的在于提出一种漏洞定位方法、装置、电子设备和存储介质。
基于上述目的,本公开一个或多个实施例提供了一种漏洞定位方法,包括:
响应于输入的源代码,根据所述源代码生成抽象语法树;
根据所述抽象语法树构建函数调用关系图和过程内控制流图;
连接所述函数调用关系图和所述过程内控制流图,生成过程间控制流图;
使用混合图嵌入算法分析所述过程间控制流图,得到总特征向量;
将所述总特征向量输入预训练好的漏洞定位模型,得到所述源代码的漏洞位置和漏洞类型。
基于同一发明构思,本公开还提供了一种的漏洞定位装置,包括:
语法分析模块,被配置为响应于输入的源代码,根据所述源代码生成抽象语法树;
图构建模块,被配置为根据所述抽象语法树构建函数调用关系图和过程内控制流图;
图生成模块,被配置为连接所述函数调用图和所述过程内控制流图,生成过程间控制流图;
特征提取模块,被配置为使用混合图嵌入算法分析所述过程间控制流图,得到总特征向量;
漏洞定位模块,被配置为将所述总特征向量输入到预训练好的漏洞定位模型,得到所述源代码的漏洞位置和漏洞类型。
基于同一发明构思,本公开还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现本公开任意一项所述的方法。
基于同一发明构思,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令在被计算机执行时,使所述计算机实现本公开任意一项所述的方法。
从上面所述可以看出,本公开一个或多个实施例提供的漏洞定位方法、装置、电子设备和存储介质,基于过程间控制流图最大化保留了源代码的结构化语义信息,全局控制流图准确地获取了全局的图特征,通过混合图嵌入技术充分提取特征向量的同时保证了细粒度,通过基于人工智能的漏洞定位模型对输入的特征向量进行预测分析,可以精准地发现漏洞所在的具体代码行以及漏洞的具体分类,极大提高了漏洞定位的效率。
附图说明
为了更清楚地说明本公开一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开一个或多个实施例的漏洞定位方法的流程图;
图2为本公开一个或多个实施例的漏洞定位方法的技术细节示意图;
图3为本公开一个或多个实施例的源代码示意图;
图4为本公开一个或多个实施例的函数调用关系图;
图5为本公开一个或多个实施例的过程内控制流图;
图6为本公开一个或多个实施例的过程间控制流图;
图7为本公开一个或多个实施例的添加完缺陷标签的过程间控制流图;
图8为本公开一个或多个实施例的电子设备示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开中的一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
目前针对源代码进行精准漏洞定位的方法和工具较少且多只停留在初级阶段。静态检测技术是目前常用的源代码缺陷检测技术,涉及的主要技术包括静态分析和程序验证。其检测方法为:对被测软件的源程序或二进制代码进行扫描,从语法、语义上理解程序的行为,分析程序的特征,找出可能导致程序异常的漏洞。常用的静态检测技术包括:词法分析、模式匹配、符号执行、模型检测等。随着人工智能技术的发展,近几十年来,软件的漏洞与缺陷分析办法从之前的代码静态分析,到现在可以用机器学习的方式进行预测和判断,但如何设计一种合适的方法用于精准定位漏洞发生的位置依然是一个挑战。
现有的漏洞定位方法主要有以下几种:通过代码表征和代码段级别抽象地描述代码段,然后利用比较方法说明如何依据两个代码段表征判断它们的相似性;基于符号执行的漏洞检测方法使用中间语言,结合符号执行和约束求解来检测漏洞。通过使用符号执行技术,将程序中变量的值表示为符号值和常量组成的计算表达式,而一些程序漏洞可以表现为某些相关变量的取值不满足相应的约束。通过判断表示变量取值的表达式是否满足相应的约束,来检测程序是否存在相应的漏洞;基于规则的漏洞检测方法由专家针对各类漏洞人工分析生成漏洞规则,在词法语法解析基础上,对源代码建模,进行数据流分析、污点分析等;基于深度学习的方法不需要专家手工定义特征,可以自动生成漏洞模式用于漏洞定位。
如背景技术部分所述,现有方法的漏报率和误报率较高,对于基于规则的漏洞定位技术,由于需要人工分析漏洞模式制定规则,只能对一小部分漏洞有效检测,对于真实环境下的复杂应用,由于漏洞产生的逻辑过于复杂,依据传统静态分析和专家经验的方法往往有很高的漏报率和误报率,导致定位到的漏洞还需要安全专家二次确认,增加了漏洞定位的成本;特征包含的信息不充分,或易受干扰,代码浅层特征提取只涉及到文件大小,行数,哈希值等有限的信息,对代码内容和逻辑的特征提取十分有限,序列描述法可以获取代码或行为的先后顺序,但容易受到无关代码行的影响,其他一些方法存在代码上下文信息获取不足等问题;粒度较粗,许多方法选择的特征基于文件或函数级别,采用这样的特征应用于源代码缺陷检测,得到的也将为文件或函数级别的结果;在实际使用时,文件或函数级别这样的粗粒度结果不便于开发人员理解和修复代码缺陷,实用性较低;不易在真实场景中使用,例如现有的部分方法需要人工选取特征,或分析建模,前者主观性较高,不一定能反应代码的实质,后者需要投入的精力较多,计算成本也较大,在实际使用中,方法的设计需要平衡人力、计算量、速度、效果等多方面因素。
申请人在实现本公开的过程中发现,基于过程间控制流图可最大化保留源代码的结构化语义信息,全局控制流图能够准确地获取全局的图特征,通过混合图嵌入技术充分提取特征向量的同时保证了细粒度,通过基于人工智能的漏洞定位模型对输入的特征向量进行预测分析,可以精准地发现漏洞所在的具体代码行以及漏洞的具体分类,极大提高了漏洞定位的效率。
有鉴于此,本发明提出了一种基于过程间控制流图和混合图嵌入技术的源代码漏洞定位方法、装置、电子设备和存储介质,可以尽量保留源代码中有价值的信息,利用图嵌入技术进行漏洞精准定位,发现漏洞所在的具体代码行以及漏洞的具体分类,极大提高了漏洞定位的效率。
以下,结合图1为本公开一个或多个实施例的漏洞定位方法的流程图、图2为本公开一个或多个实施例的漏洞定位方法的技术细节示意图、图3为本公开一个或多个实施例的源代码示意图、图4为本公开一个或多个实施例的函数调用关系图、图5为本公开一个或多个实施例的过程内控制流图、图6为本公开一个或多个实施例的过程间控制流图、图7为本公开一个或多个实施例的添加完缺陷标签的过程间控制流图和图8为本公开一个或多个实施例的电子设备示意图,通过具体的实施例进一步详细说明本公开的技术方案。
本公开提供了一种漏洞定位方法、装置、电子设备和存储介质,能够对实际软件工程中的源代码进行缺陷分析和漏洞定位,基于软件源代码进行静态分析,提取特征信息,并进行漏洞精准定位和分类,主要技术模块包括控制流图和函数调用关系图提取、混合图嵌入和漏洞预测定位三个部分,可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。
如图1为本公开一个或多个实施例的漏洞定位方法的流程图和图2为本公开一个或多个实施例的漏洞定位方法的技术细节示意图,本公开提供了一种漏洞定位方法,包括:
S1:响应于输入的源代码,根据所述源代码生成抽象语法树;
在一些实施方式中,所述根据所述源代码生成抽象语法树,包括:
将所述源代码输入语法分析器;
通过所述语法分析器对所述源代码进行词法分析和语法分析,生成抽象语法树。
具体的,如图3为本公开一个或多个实施例的源代码示意图所示,图中为一段有漏洞的源代码,在第5行和第10行有漏洞,漏洞原因是指针p没有被初始化但是直接被解引用。
通过antlr对图3中的源代码进行词法分析和语法分析,分别生成抽象语法树,其中,“ast1,ast2,…, astn”为“抽象语法树1,抽象语法树
2,…,抽象语法树n”。抽象语法树是源代码语法结构的一种抽象表示,它以树状的形式表现
编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。对于输入的源代码,本
公开将其输入到语法分析器中,语法分析器会对源代码进行语法分析和词法分析,生成这
段源代码的抽象语法树。
S2:根据所述抽象语法树构建函数调用关系图和过程内控制流图;
在一些实施方式中,所述根据所述抽象语法树构建函数调用关系图和过程内控制流图,包括:
遍历所述抽象语法树,识别函数调用关系和函数作用域;
根据所述函数调用关系构建函数调用关系图,根据所述函数作用域构建过程内控制流图。
具体的,遍历抽象语法树,识别函数调用关系,根据函数调用关系构建函数调用关
系图,其中,“cg1,cg2,…,cgn”为“函数调用关系图1、函数调用关
系图2,…,函数调用关系图n”;识别函数作用域,根据函数内语句执行分支,如if条件判断
分支,构建过程内控制流图。进一步的,通过doxygen 和graphviz 识别图3中源代码生成的
抽象语法树中的函数调用关系和函数作用域,根据函数调用关系生成图4为本公开一个或
多个实施例的函数调用关系图,这里solve函数分别调用了uninit_pointer_001和uninit_
pointer_002函数,本公开用黑色箭头表示函数调用关系,只有解析出完整的函数调用才能
表示源代码的完整逻辑链;由抽象语法树可以生成三地址码,分为四元式、三元式、间接三
元式等;基于三地址码构造和划分基本块,从而构建出控制流图,根据函数作用域构建图5
为本公开一个或多个实施例的过程内控制流图,控制流图表征代码的执行逻辑顺序,这里
圆圈内的数字表示代码行,比如在13行存在一个条件分支if,源代码会根据条件是否为真
即op是否为1,执行不同的代码块,如果op为1则执行第14行,否则执行第16行。
S3:连接所述函数调用关系图和所述过程内控制流图,生成过程间控制流图;
在一些实施方式中,所述过程间控制流图由节点和边组成,所述节点表示代码语句,所述边表示代码的执行顺序。
具体的,得到过程内控制流图和函数调用关系图后,根据函数调用图,连接过程内
控制流图,生成过程间控制流图
,其中,“cfg1,cfg2,…,cfgn”为“过程内控制流图1,过程内控制流图2,…,过程内控制流图
n”;“icfg1,icfg2,…,icfgn’”为“过程间控制流图1,过程间控制流图2,…,过程间控制流图
n”;其中任一控制流图由点和边组成,即,点即代码语句,边表示代码的执行
顺序,如图6为本公开一个或多个实施例的过程间控制流图所示,圆内的行表示代码行,粗
箭头表示函数调用,细箭头表示函数内的执行顺序也即过程内控制流。
S4:使用混合图嵌入算法分析所述过程间控制流图,得到总特征向量;
在一些实施方式中,所述混合图嵌入算法包括:局部线性嵌入算法、拉普拉斯特征映射算法和图因式分解算法;
所述使用混合图嵌入算法分析所述过程间控制流图,得到总特征向量,包括:
使用所述局部线性嵌入算法分析所述过程间控制流图,得到第一特征向量;
使用所述拉普拉斯特征映射算法分析所述过程间控制流图,得到第二特征向量;
使用所述图因式分解算法分析所述过程间控制流图,得到第三特征向量;
通过特征融合技术将所述第一特征向量、所述第二特征向量和所述第三特征向量进行融合,得到所述总特征向量。
具体的,图嵌入技术的目的是根据控制流图的结构化信息(节点间
的连接关系E)和节点本身的初始化特征,生成包含图结构的各节点的特
征向量,该特征向量既包含了每一行代码的文本信息,比如图3中第2行的
“a=5”;也包含了节点的连接关系,比如图3中第1行和第2行是邻居节点。图嵌入算法作为降
维技术的一部分,首先根据实际问题构造一个D维空间中的图,然后将图的节点嵌入到d(d<
<D)维向量空间中,嵌入的思想是在向量空间中保持连接的节点彼此靠近。不同的图嵌入采
用了不同的算法,能在不同的维度上表示节点特征,获得的节点特征可以相互补充,所以本
公开用混合图嵌入技术综合各种图嵌入技术的特征。经过混合图嵌入得到各个节点的特征
向量:这里用,……分别表示节点1,节点2……的特征向量。
拉普拉斯特征映射算法即LE图嵌入,目的是在权重较高时,保持两个节点嵌入后离得很近,也就是说被分割太远的两个相似节点会得到更多的反馈;拉普拉斯特征映射(LE)通过自定义线性组合权重W,使得相近的节点权重更高,远的节点权重更低,他所定义的损失函数如下:
图因式分解算法即GF图嵌入是一种获得O(|E|)时间复杂度的图嵌入方法,GF对图的邻接矩阵进行因式分解,以最小化损失函数;GF图嵌入技术对图的邻接矩阵进行因式分解,以最小化以下损失函数:
本公开将各图嵌入节点特征向量的维度设定为64,经过混合图嵌入,特征向量维度为64*3=192,每个节点都是一个1*192的特征向量,比如v5=[0.0942,0.4554,…,-0.3456]。通过混合图嵌入技术,可以综合各类图嵌入技术的优势,从而取得精确的图特征向量表示。
S5:将所述总特征向量输入预训练好的漏洞定位模型,得到所述源代码的漏洞位置和漏洞类型。
在一些实施方式中,所述漏洞定位模型由第一全连接层、第二全连接层和输出层组成;
所述第一全连接层包含512个神经元,激活函数为sigmoid;
所述第二全连接层包含256个神经元,激活函数为sigmoid;
所述输出层的激活函数为softmax。
在一些实施方式中,所述漏洞定位模型的损失函数为:
其中,v为节点,y为标签,p为对样本真实预测值的分布函数,P为条件概率的具体数值,Y为标签集合。
具体的,本公开所用的漏洞定位模型在训练时,其训练样本数据集为缺陷标记样本集,测试样本数据集为未标记样本集,实际应用时的数据集为待分析的源代码。缺陷样本数据集一般来自开源的漏洞代码、缺陷数据集,如SARD数据集,OWASP数据集等,用于分析源代码中常见缺陷的类型和产生原因。待分析的源代码即指需要进行特征提取分析的软件源代码文件的集合,支持的编程语言有JAVA、C和C++。
模型训练前,首先对由训练样本数据集生成的过程间控制流图进行漏洞标记,如
图7为本公开一个或多个实施例的添加完缺陷标签的过程间控制流图,对该图添加缺陷标
签,即第5行和第10行,这里用有深色背景的圆形表示;训练部分的输入为一组带标记的源
代码,每个源代码又由若干代码行组成,即,这
里表示该源代码的代码行数量,这里每一行都被标记了漏洞类型,该标记为漏
洞信息发布平台收集到的标记信息以及标记人员手动标记的漏洞相关行。这里以一个二分
类为例,即,0表示没有漏洞,1表示有漏洞,对于图3所示源代码,第5行和第10行
有漏洞,漏洞原因是指针p没有被初始化但是直接被解引用。
通过混合图嵌入技术,可以得到每个节点即每一行的特征表示,给每个节点标记
上漏洞类型,得到了各节点的总特征向量,使
用各节点的总特征向量训练漏洞定位模型,其中为该模型的可训练参数,该模型
可以预测v的概率分布,即该节点属于各漏洞类型的概率:
具体的,漏洞定位模型由第一全连接层、第二全连接层和输出层组成;第一全连接层包含512个神经元,激活函数为sigmoid;所述第二全连接层包含256个神经元,激活函数为sigmoid;所述输出层的激活函数为softmax,训练时Dropout rate设置为0.5,学习率设置为0.01,batch大小设为128,epoch设为64,优化器设为adamax,采用十折交叉验证训练漏洞定位模型。
本公开使用采用cross-entropy损失函数训练该模型,对于节点v,其损失函数为:
最小化该损失函数,从而使得预测值和真实值是一致的,即预测的漏洞和真实的漏洞是一致的,通过反向传播算法更新检测模型的参数θ,从而训练好漏洞定位模型,训练完成后将漏洞定位模型保存在本地。
对于待检测的源代码,同漏洞定位模型的训练过程一样,首
先,对源代码分析得到抽象语法树,遍历抽象语法树得到过程内控制流图和函数调用关系
图进而得到过程间控制流图;接下来,通过混合图嵌入得到包含了
图结构的特征向量;最后,本公开将该源代码的总特征向量输入漏洞定位
模型,即可判定源代码包含哪些漏洞,漏洞的具体位置和漏洞的类型:
基于同一发明构思,本公开还提供了一种的漏洞定位装置,包括:
语法分析模块,被配置为响应于输入的源代码,根据所述源代码生成抽象语法树;
图构建模块,被配置为根据所述抽象语法树构建函数调用关系图和过程内控制流图;
图生成模块,被配置为连接所述函数调用图和所述过程内控制流图,生成过程间控制流图;
特征提取模块,被配置为使用混合图嵌入算法分析所述过程间控制流图,得到总特征向量;
漏洞定位模块,被配置为将所述总特征向量输入到预训练好的漏洞定位模型,得到所述源代码的漏洞位置和漏洞类型。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
如图8为本公开一个或多个实施例的电子设备示意图所示,基于同一发明构思,本公开还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可由所述处理器执行的计算机程序, 所述处理器执行所述计算机程序时实现上述实施例任意一项所述的方法。
图8示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图, 该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线 1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本公开实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本公开实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令在被计算机执行时,使所述计算机实现上述实施例任意一项所述的方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
需要说明的是,本公开一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,每一个步骤可以以任意顺序实现,并存在如上所述的本公开一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种漏洞定位方法,包括:
响应于输入的源代码,根据所述源代码生成抽象语法树;
根据所述抽象语法树构建函数调用关系图和过程内控制流图;
连接所述函数调用关系图和所述过程内控制流图,生成过程间控制流图;
使用混合图嵌入算法分析所述过程间控制流图,得到总特征向量;
将所述总特征向量输入预训练好的漏洞定位模型,得到所述源代码的漏洞位置和漏洞类型。
2.根据权利要求1所述的漏洞定位方法,其中,所述根据所述源代码生成抽象语法树,包括:
将所述源代码输入语法分析器;
通过所述语法分析器对所述源代码进行词法分析和语法分析,生成抽象语法树。
3.根据权利要求1所述的漏洞定位方法,其中,所述根据所述抽象语法树构建函数调用关系图和过程内控制流图,包括:
遍历所述抽象语法树,识别函数调用关系和函数作用域;
根据所述函数调用关系构建函数调用关系图,根据所述函数作用域构建过程内控制流图。
4.根据权利要求1所述的漏洞定位方法,其中,所述过程间控制流图由节点和边组成,所述节点表示代码语句,所述边表示代码的执行顺序。
5.根据权利要求1所述的漏洞定位方法,其中,所述混合图嵌入算法包括:局部线性嵌入算法、拉普拉斯特征映射算法和图因式分解算法;
所述使用混合图嵌入算法分析所述过程间控制流图,得到总特征向量,包括:
使用所述局部线性嵌入算法分析所述过程间控制流图,得到第一特征向量;
使用所述拉普拉斯特征映射算法分析所述过程间控制流图,得到第二特征向量;
使用所述图因式分解算法分析所述过程间控制流图,得到第三特征向量;
通过特征融合技术融合所述第一特征向量,所述第二特征向量和所述第三特征向量,得到所述总特征向量。
6.根据权利要求1所述的漏洞定位方法,其中,所述漏洞定位模型由第一全连接层、第二全连接层和输出层组成;
所述第一全连接层包含512个神经元,激活函数为sigmoid;
所述第二全连接层包含256个神经元,激活函数为sigmoid;
所述输出层的激活函数为softmax。
8.一种的漏洞定位装置,包括:
语法分析模块,被配置为响应于输入的源代码,根据所述源代码生成抽象语法树;
图构建模块,被配置为根据所述抽象语法树构建函数调用关系图和过程内控制流图;
图生成模块,被配置为连接所述函数调用关系图和所述过程内控制流图,生成过程间控制流图;
特征提取模块,被配置为使用混合图嵌入算法分析所述过程间控制流图,得到总特征向量;
漏洞定位模块,被配置为将所述总特征向量输入到预训练好的漏洞定位模型,得到所述源代码的漏洞位置和漏洞类型。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可由所述处理器执行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现根据权利要求1至7中任意一项所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令在被计算机执行时,使所述计算机实现根据权利要求1至7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110544115.7A CN112989363B (zh) | 2021-05-19 | 2021-05-19 | 漏洞定位方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110544115.7A CN112989363B (zh) | 2021-05-19 | 2021-05-19 | 漏洞定位方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112989363A true CN112989363A (zh) | 2021-06-18 |
CN112989363B CN112989363B (zh) | 2021-09-28 |
Family
ID=76336823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110544115.7A Active CN112989363B (zh) | 2021-05-19 | 2021-05-19 | 漏洞定位方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112989363B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115600216A (zh) * | 2022-11-04 | 2023-01-13 | 中国电信股份有限公司(Cn) | 检测方法、装置、设备及存储介质 |
CN116028941A (zh) * | 2023-03-27 | 2023-04-28 | 天聚地合(苏州)科技股份有限公司 | 接口的漏洞检测方法、装置、存储介质及设备 |
CN117033164A (zh) * | 2023-05-17 | 2023-11-10 | 烟台大学 | 一种智能合约安全漏洞检测方法和系统 |
US11940900B1 (en) | 2022-09-28 | 2024-03-26 | International Business Machines Corporation | Determining and providing representations of program flow control |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482847A (zh) * | 2009-01-19 | 2009-07-15 | 北京邮电大学 | 一种基于安全漏洞缺陷模式的检测方法 |
US20140157420A1 (en) * | 2012-12-05 | 2014-06-05 | International Business Machines Corporation | Discovery of application vulnerabilities involving multiple execution flows |
CN111274134A (zh) * | 2020-01-17 | 2020-06-12 | 扬州大学 | 基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质 |
CN111611586A (zh) * | 2019-02-25 | 2020-09-01 | 上海信息安全工程技术研究中心 | 基于图卷积网络的软件漏洞检测方法及装置 |
CN111783100A (zh) * | 2020-06-22 | 2020-10-16 | 哈尔滨工业大学 | 基于图卷积网络对代码图表示学习的源代码漏洞检测方法 |
-
2021
- 2021-05-19 CN CN202110544115.7A patent/CN112989363B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482847A (zh) * | 2009-01-19 | 2009-07-15 | 北京邮电大学 | 一种基于安全漏洞缺陷模式的检测方法 |
US20140157420A1 (en) * | 2012-12-05 | 2014-06-05 | International Business Machines Corporation | Discovery of application vulnerabilities involving multiple execution flows |
CN111611586A (zh) * | 2019-02-25 | 2020-09-01 | 上海信息安全工程技术研究中心 | 基于图卷积网络的软件漏洞检测方法及装置 |
CN111274134A (zh) * | 2020-01-17 | 2020-06-12 | 扬州大学 | 基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质 |
CN111783100A (zh) * | 2020-06-22 | 2020-10-16 | 哈尔滨工业大学 | 基于图卷积网络对代码图表示学习的源代码漏洞检测方法 |
Non-Patent Citations (1)
Title |
---|
XIAO CHENG等: "DeepWukong: Statically Detecting Software Vulnerabilities Using Deep Graph Neural Network", 《ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11940900B1 (en) | 2022-09-28 | 2024-03-26 | International Business Machines Corporation | Determining and providing representations of program flow control |
CN115600216A (zh) * | 2022-11-04 | 2023-01-13 | 中国电信股份有限公司(Cn) | 检测方法、装置、设备及存储介质 |
CN115600216B (zh) * | 2022-11-04 | 2024-03-22 | 中国电信股份有限公司 | 检测方法、装置、设备及存储介质 |
CN116028941A (zh) * | 2023-03-27 | 2023-04-28 | 天聚地合(苏州)科技股份有限公司 | 接口的漏洞检测方法、装置、存储介质及设备 |
CN116028941B (zh) * | 2023-03-27 | 2023-08-04 | 天聚地合(苏州)科技股份有限公司 | 接口的漏洞检测方法、装置、存储介质及设备 |
CN117033164A (zh) * | 2023-05-17 | 2023-11-10 | 烟台大学 | 一种智能合约安全漏洞检测方法和系统 |
CN117033164B (zh) * | 2023-05-17 | 2024-03-29 | 烟台大学 | 一种智能合约安全漏洞检测方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112989363B (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112989363B (zh) | 漏洞定位方法、装置、电子设备和存储介质 | |
CN111639344B (zh) | 一种基于神经网络的漏洞检测方法及装置 | |
CN111259394B (zh) | 一种基于图神经网络的细粒度源代码漏洞检测方法 | |
US11113585B1 (en) | Artificially intelligent systems, devices, and methods for learning and/or using visual surrounding for autonomous object operation | |
US20190370647A1 (en) | Artificial intelligence analysis and explanation utilizing hardware measures of attention | |
US20210174214A1 (en) | Systems and methods for quantizing a neural network | |
US11238344B1 (en) | Artificially intelligent systems, devices, and methods for learning and/or using a device's circumstances for autonomous device operation | |
US20210081841A1 (en) | Visually creating and monitoring machine learning models | |
CN109376535A (zh) | 一种基于智能化符号执行的漏洞分析方法及系统 | |
CN114580263A (zh) | 基于知识图谱的信息系统故障预测方法及相关设备 | |
CN110162972B (zh) | 一种基于语句联合编码深度神经网络的uaf漏洞检测方法 | |
CN115147353B (zh) | 缺陷检测模型的训练方法、装置、设备、介质及程序产品 | |
CN117420985B (zh) | 一种使用JavaScript封装安卓服务功能的方法 | |
CN117725592A (zh) | 一种基于有向图注意力网络的智能合约漏洞检测方法 | |
Zhou et al. | Deeptle: Learning code-level features to predict code performance before it runs | |
CN110889316B (zh) | 一种目标对象识别方法、装置及存储介质 | |
CN116595537A (zh) | 一种基于多模态特征的生成式智能合约的漏洞检测方法 | |
CN115168575B (zh) | 应用于审计领域的主语补全方法及相关设备 | |
CN116663008A (zh) | 漏洞检测方法、装置、电子设备、存储介质及程序产品 | |
Prashanthi et al. | Software Defect Prediction Survey Introducing Innovations with Multiple Techniques | |
Abdu et al. | Graph-Based Feature Learning for Cross-Project Software Defect Prediction | |
Saravanan | Automated web design and code generation using deep learning | |
Santos et al. | Image Classification Understanding with Model Inspector Tool | |
Dwivedi et al. | Applying reverse engineering techniques to analyze design patterns in source code | |
Lowe et al. | D3. 2 Interim report of DL components and library |
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 |