CN112182585A - 源代码漏洞检测方法、***及存储介质 - Google Patents

源代码漏洞检测方法、***及存储介质 Download PDF

Info

Publication number
CN112182585A
CN112182585A CN202011046243.0A CN202011046243A CN112182585A CN 112182585 A CN112182585 A CN 112182585A CN 202011046243 A CN202011046243 A CN 202011046243A CN 112182585 A CN112182585 A CN 112182585A
Authority
CN
China
Prior art keywords
attention
source code
vulnerability
spatial
spatial information
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
Application number
CN202011046243.0A
Other languages
English (en)
Other versions
CN112182585B (zh
Inventor
胡玉鹏
唐志泉
李丹
唐斌
关翔予
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan University
Original Assignee
Hunan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hunan University filed Critical Hunan University
Priority to CN202011046243.0A priority Critical patent/CN112182585B/zh
Publication of CN112182585A publication Critical patent/CN112182585A/zh
Application granted granted Critical
Publication of CN112182585B publication Critical patent/CN112182585B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Probability & Statistics with Applications (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了一种源代码漏洞检测方法、***及存储介质,针对目前已经存在的漏洞检测方法在潜在挖掘能力方面的不足,提出了一种基于注意力机制的代码漏洞检测方法。主要采用注意力中权重分配的原理,将注意力机制引入代码漏洞检测的深度学***台的漏洞检测模型。

Description

源代码漏洞检测方法、***及存储介质
技术领域
本发明涉及漏洞检测技术,特别是一种源代码漏洞检测方法、***及存储介质。
背景技术
漏洞信息的不对称已经成为导致网络攻击实力悬殊的关键因素,高级网络攻击(如APT攻击)甚至可以交叉和组合多个漏洞,从而造成网络空间的灾难。然而,由于编程者的能力、经验和当前安全技术的限制,代码中难免会有不足之处,其后果从降低程序效率到提升权限不等。并且代码的开源使得这些漏洞得到更加广泛的传播。
代码的缺陷很难在开发过程中完全避免,但是它们一旦被发现并被利用,将会造成十分严重的后果。例如:2017年5月爆发的WannaCry勒索病毒席卷了全球150多个国家的至少30万名用户,造成80多亿美元的经济损失。因此,对软件提供商而言,在缺陷被发现之前,对其进行代码漏洞分析,是一项非常有必要且意义深远的工作。
源代码的静态分析是指在不运行目标代码的情况下对目标代码的词法,语法和语义进行分析,并结合程序的数据流和控制流信息,通过类型派生、安全性规则检查、模型检测等技术来挖掘漏洞。该方法总的来说分为三类:基于代码相似性的方法,基于规则的方法和基于机器学习的漏洞检测。基于代码相似性的方法假定相似代码可能包含相同的漏洞。基于规则的方法是专家基于对各种漏洞的人工分析来生成漏洞规则。在词法分析和语法分析的基础上,对源代码进行数据流分析和污点分析。机器学习方法可以分为传统机器学习方法和深度学习方法。传统的机器学习方法是手动定义特征属性,然后采用机器学习方法。实验证明,依赖人工构造的脆弱性模式(或规则)对先验知识的依赖性更大,从而导致较高的假阴性率。因此,专家无需进行大量的手工工作来定义特征,而能够自动生成漏洞模式的深度学习方法已成为研究的方向。
注意力机制最初用于机器翻译,由于其良好的直观性,通用性和可解释性,已广泛用于自然语言处理,图像识别和其他领域。由于我们的视觉***感知通常不是从一端到另一端进行机械地观察,因此可以更加关注本地信息的关注,因此深度学习中的关注机制可以使神经网络更加关注其输入子集(或特征),并且减少对外部信息的依赖从而更好地捕获数据或内部相关特性的注意力机制。
发明内容
本发明所要解决的技术问题是,针对现有技术不足,提供一种源代码漏洞检测方法、***及存储介质,提高漏洞检测的准确率。
为解决上述技术问题,本发明所采用的技术方案是:一种源代码漏洞检测方法,包括以下步骤:
S1、将包含漏洞的源代码文件转化为表示向量;
S2、针对所述表示向量生成词级别的注意力权重,并加权到所述表示向量上;
S3、将加权后的表示向量作为卷积神经网络的输入,得到特征图;
S4、生成通道注意力权重和空间注意力权重,并分别加权到特征图的通道和空间上,得到基于注意力的检测模型;
S5、将S2所述表示向量作为基于注意力的检测模型的输入,训练所述基于注意力的检测模型,得到训练好的基于注意力的检测模型,利用训练好的基于注意力的检测模型对源代码进行检测。
本发明采用注意力中权重分配的原理,将注意力机制引入代码漏洞检测的深度学习网络(卷积神经网络)中,并对其进行迭代训练,提高了网络检测的能力和可解释性,提高了漏洞检测准确率。
具体地,上述步骤S1的实现过程包括:
1)按词读取包含漏洞的源代码文件,构造词典并统计各词出现的概率;
2)照各词出现概率构造Huffman树,并生成树节点所在的二进制码;
3)依赖连续词袋建立神经词嵌入网络,将字典放入神经词嵌入网络中进行训练,得到训练好的网络M;
4)将源文件的词送入所述网络M中,得到表示向量xi
与其他的嵌入方法相比,S1的word2vec方法考虑能到上下文语境生成向量,效果更好,并且Huffman树使得比之前的嵌入方法维度更少,所以速度更快,通用性更好。
步骤S2的具体实现过程包括:先通过word2vec生成表示向量,再根据表示向量和上下文向量生成注意力权重,将所述注意力权重加权到表示向量上,得到加权后的表示向量。
步骤S2的具体实现过程包括:
A)将表示向量xi送入单层感知机,得到ui作为xi的隐层表示;
B)对每一个隐层表示ui,计算ui与uw的相似度衡量xi的重要性程度
Figure BDA0002708076890000031
其中,uw为定义的语境向量;
C)将注意力权重加权到xi以生成
Figure BDA0002708076890000032
公式表示为:
Figure BDA0002708076890000033
其中,
Figure BDA0002708076890000034
在一段带有漏洞的代码中,并不是每一个token都携带有漏洞的特征。换而言之,并不是每一个token对于漏洞检测的判断都有同样的贡献。在步骤S2中,生成词级别的注意力可以自动化的对每个token进行权重分配,使得携带有漏洞特征的代码对漏洞判断的贡献变大,从而更能发现潜藏漏洞。
步骤S3中,所述卷积神经网络每一次的输出计算公式如下:
Figure BDA0002708076890000035
其中,win为卷积神经网络某层的输入图像,wout为该层的输出图像,f表示对该层进行卷积操作将会用到的过滤器宽高,stride表示步长,padding表示填充边界的宽度。
卷积神经网络仿造生物的视知觉机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化特征。构建卷积神经网络来识别源代码的漏洞,能摆脱人工定义漏洞特征的复杂性,并且提高检测的准确性。
步骤S4中,生成通道注意力权重,并加权到特征图的通道上的实现过程包括:
I)使用平均池化聚合特征图的空间信息,得到空间信息A;通过最大池化操作聚合特征图的空间信息,得到空间信息B;
II)将所述空间信息A和空间信息B分别作为共享多层感知机的输入,得到两个频道关注图;
III)叠加两个所述频道关注图,生成通道注意力权重;
IV)将所述注意力权重加权到特征图上,输出通道注意力后的特征图F′。
通道注意力的本质是放缩过程,不同通道的值乘上不同的权重,从而可以增强对关键通道域的漏洞特征的注意力,提升了检测能力。
步骤S4中,生成空间注意力权重,并加权到特征图的空间上的实现过程包括:
i)使用平均池化聚合特征图的空间信息,得到第一空间信息;通过最大池化操作聚合特征图的空间信息,得到第二空间信息;
ii)对所述第一空间信息和第二空间信息分别进行卷积操作,生成两个二维空间注意力图;
iii)叠加两个空间注意力图,生成空间注意力权重;
iv)将空间注意力权重叠加到特征图上,得到空间注意力后的特征图F*
空间注意力将原始特征中的空间信息变换到另一个空间中并保留了关键信息。训练出的网络能够找出特征信息中需要被关注的区域,同时这个网络又能够具有旋转、缩放变换的功能,这样特征局部的重要漏洞特征信息能够通过变换而被提取出来。
利用训练好的基于注意力的检测模型对源代码进行检测的具体实现过程包括:将源代码输入所述训练好的基于注意力的检测模型,若输出大于0.8,则认为存在漏洞。
在卷积神经网络进行漏洞检测的基础上,我们在网络的两个过程中加入注意机制来完善特征图,从而提高CNNs对漏洞检测的感受野和对代码漏洞的特征聚焦能力。最终形成的基于注意力的源代码漏洞检测模型在实验效果上表现更好。相应地,本发明还提供了一种源代码漏洞检测***,其包括计算机设备;所述计算机设备被配置或编程为用于执行本发明上述方法的步骤。
作为一个发明构思,本发明还提供了一种计算机可读存储介质,其存储有程序;所述程序被配置为用于执行本发明所述方法的步骤。
与现有技术相比,本发明所具有的有益效果为:
1、本发明采用注意力中权重分配的原理,将注意力机制引入代码漏洞检测的深度学***台的漏洞检测模型,提高了漏洞检测准确率;
2、本发明能够克服传统基于专家规则的漏洞检测方法不能检测潜在漏洞的不足;
3、利用注意力机制能更加高效的自动化提取漏洞特征。
附图说明
图1显示了词嵌入时的注意力机制内在结构;
图2显示了一个简单的神经元的结构;
图3显示了本发明设计的检测方法的网络结构。
具体实施方式
本发明主要方案概括如下:首先,利用源代码生成表示向量,在此阶段生成词级的注意力。然后使用卷积神经网络对表示向量进行漏洞特征提取,在此阶段依次生成通道注意力和空间注意力。最后用池化层和全连接层。将整个网络进行迭代学***台的通用漏洞挖掘模型。
本发明设计的基于注意力机制的源代码漏洞检测方法主要分为以下五个步骤:
第一步:利用word2vec算法,将包含漏洞的源代码文件转化为表示向量;
第二步:针对表示向量生成词级别的注意力权重,并加权到表示向量上;
第三步:构建卷积神经网络模型。将加权后表示向量作为卷积神经网络的输入,得到卷积后的特征图;
第四步:对卷积神经网络模型添加通道注意力和空间注意力机制。针对卷积过程中的特征图,生成通道注意力和空间注意力权重,并依次加权到特征图的通道和空间上。
第五步:将第二步生成的向量送入卷积神经网络,多次训练基于注意力的检测模型,调节参数,使训练达到最佳效果,并且符合实际需要。训练完成后,将待检测源代码文件转化为表示向量,使用训练好的模型对其进行漏洞检测。
首先,使用word2vec算法,将包含漏洞的源代码文件转化为表示向量,其主要实施过程如下:
(1)按词(token)读取一个包含漏洞的源代码文件;
(2)构造词典,统计词频。
(3)依照各词出现概率构造Huffman树,并生成树节点所在的二进制码;
(4)依赖连续词袋(CBOW)来建立神经词嵌入网络,二进制码作为训练数据训练网络。实现从源代码文件映射到表示向量的操作。
word2vec算法的表示如下:
输入:包含漏洞的源代码文件
输出:表示向量(维度相同)
function word2vec(包含漏洞的源代码文件,表示向量的维度)
1:将一个包含漏洞的源代码文件按词(token)读取,记为集合{t1,…,tq};
2:遍历一遍文本,统计各词的出现频率,记为字典{t1:n1,…,tm:nm};
3:依照各词出现概率构造Huffman树,记为H({t1:n1,…,tm:nm}),并生成节点所在的二进制码,记为字典{t1:c1,…,tm:cm};
4:依赖连续词袋(CBOW)来建立神经词嵌入网络,将字典放入网络中进行训练,得到训练好的网络M;
5:将源文件的token送入网络中,得到表示向量,记作:xi=M(ti);
其次,如图一所示,针对表示向量生成词级别的注意力权重,并加权到表示向量上,其具体步骤如下:
(1)我们首先将加权后token向量xi送入到一个单层感知机,得到ui作为xi的隐层表示,其公式为:ui=tanh(Wtxi+bt)。其中,xi为由word2vec对ti生成的表示向量,Wt表示在感知机中的权重,bt表示感知机中的偏置,tanh是一种激活函数,将感知机输出的结果进行选择性激活。
单层感知机属于单层前向网络,即除输入层和输出层之外,只拥有一层神经元节点。输入数据从输入层经过隐藏层向输出层逐层传播,相邻两层的神经元之间相互连接,同一层的神经元之间没有连接。
(2)定义一个全局的token级的语境向量uw,它可以视作对上下文信息的固定查询。
(3)然后,针对每一个隐层表示ui,我们计算ui与uw的相似度来衡量xi的重要性程度,公式表示为:
Figure BDA0002708076890000061
(4)通过softmax函数得到一个归一化的重要性权重αi,公式为:
Figure BDA0002708076890000062
softmax函数,又称归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。概率有两个性质:1)预测的概率为非负数;2)各种预测结果概率之和等于1。softmax就是将在负无穷到正无穷上的预测结果按照这两步转换为概率的。
(5)将注意力权重加权到xi以生成
Figure BDA0002708076890000071
公式表示为:
Figure BDA0002708076890000072
word2vec算法的表示如下:
输入:表示向量(维度相同)
输出:被注意力后的表示向量(维度相同)
function token_attention(表示向量)
1:将感知机的权重Wt和偏置bt、token级语境向量uw随机初始化;2:开始训练注意力;
3:计算隐层表示,ui=tanh(Wtxi+bt);
4:计算表示向量的权重,
Figure BDA0002708076890000073
5:加权操作,
Figure BDA0002708076890000074
6:返回被注意力后的表示向量
Figure BDA0002708076890000075
并不是每一个token对于我们的漏洞检测都同等重要,因此我们设计词级的注意力机制的目的是要把对漏洞检测的含义最重要、贡献最大的token找出来。注意力机制在人类感知中扮演重要的角色。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,而后对这一区域投入更多注意力资源。这是人类利用有限的注意力资源从大量信息中快速筛选出高价值信息的手段。深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标也是从众多信息中选择出对当前任务目标更关键的信息。有研究者针对文本分类任务提出了一个层次化注意力机制模型(HAN),并且在词层次和句子层次分别引入注意力操作。在这个过程中加入注意力机制是为了在词嵌入的时候能依据局部信息,同时还能捕获全局信息进行权重分配。
然后,构建卷积神经网络模型。具体内容如下:
网络模型共有5层,前2层为卷积层,在每个卷积层中,分别使用了RELU激活函数进行非线性处理和BN进行正则化处理。第3层为池化层,对整体进行空间池化。后2层为全连接层,负责对提取的特征进行降维并归一化处理,并在最后一个全连接层使用Softmax函数进行分类输出,具体组成如图3所示。
网络模型的输入为batch_size*token_length*30的表示向量,该表示向量经过token注意力机制后,由于新增一层注意力层,向量的大小转变成batch_size*token_length*2*30的向量,作为第一个卷积层的输入。在第一个卷积层中,使用128个大小为9*9的过滤器对输入进行特征提取,设置步长为1、填充边界为4,即在输入边界填充4个像素,每次卷积操作后会将过滤器向右移动1个像素进行下一次卷积计算。特征提取完成后,输出数据的维度为token_length*30*128,然后使用RELU激活函数对其进行非线性化处理。然后对其进行归一化处理,将输出数据作为下一神经网络层的输入。
设win为某神经网络某层的输入图像,wout为该层的输出图像,f表示对该层进行卷积操作将会用到的过滤器宽高,stride表示步长,padding表示填充边界的宽度,卷积神经网络每层的输出数据计算公式如下所示:
Figure BDA0002708076890000081
第二个卷积层的输入的时第一层卷积层的输出。使用256个大小为13*30的过滤器进行特征提取,设置步长为1、填充边界为0,输出数据的维度为(token_length-12)*1*256。然后同样使用RELU激活函数和BN函数对其进行非线性化和正则化处理,再使用dropout函数对其处理,目的是避免网络模型过度拟合。将输出数据作为池化层的输入。
在卷积神经网络中,如果需要训练的参数过多而样本数据太少,可能会存在过度拟合的情况,具体表现为,在训练过程中准确率很高,损失很低,但是在检测过程中却准确率很低,损失很高。为了解决这个问题,2012年,Hinton在其论文中提出了dropout的概念,即在每个训练批次中随机忽略一半特征检测器,降低不同特征检测器之间的相互关联,从而避免过度拟合情况发生。
第3层是全局最大池化,即在第一个维度选出最大的数。则通过第3层时,将(token_length-12)*1*256的转变成1*1*256,最后第4和第5层全连接层得到最后的输出。全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来。全连接层也在整个卷积神经网络中起到“分类器”的作用。
本发明中使用的卷积神经网络算法的表示如下:
输入:被注意力后的表示向量
Figure BDA0002708076890000091
输出:卷积神经网络
function CNN():
1:读取注意力加权后的表示向量
Figure BDA0002708076890000092
其中词嵌入维度为固定值30;
2:建立卷积层1:使用128个9*9的卷积核步长为1、填充边界为4地进行卷积操作;
3:使用Relu激活函数对输出进行激活处理;
4:使用BN正则化函数对输出结果进行正则化处理;
5:建立卷积层2:使用256个13*30的卷积核步长为1、填充边界为0地进行卷积操作;
6:使用Relu激活函数对输出进行激活处理;
7:使用BN正则化函数对输出结果进行正则化处理;
8:建立全局最大池化层:在第一个维度选出最大的数;
9:进行Dropout操作,通过随机断开某些神经元或不激活某些神经元的方法抑制过度拟合,设置概率为0.2;
10:全连接层1:将256个输入全连接到64个输出上,完成后,使用tanh激活函数对结果进行处理;
11:进行Dropout操作,通过随机断开某些神经元或不激活某些神经元的方法抑制过度拟合,设置概率为0.2;
12:全连接层2:将64个输入全连接到1个输出上。当float型的输出大于阈值0.8时,我们将其认为时有漏洞的,反之则认为没有漏洞。
卷积神经网络的训练过程如下:
(1)将数据加载进CNN模型,设置训练数据集的迭代次数、每次训练的数据条数以及在训练过程中使用到的训练数据和验证数据所占比例。
(2)对数据集进行卷积操作,每次卷积完成后,使用relu激活函数进行非线性操作,该操作的目的是为了促进网络收敛,同时随着网络的深度增加,每层特征值分布会逐渐的向激活函数的输出区间的上下两端(激活函数饱和区间)靠近,这样继续下去就会导致梯度消失。BN就是通过方法将该层特征值分布重新拉回标准正态分布,特征值将落在激活函数对于输入较为敏感的区间,输入的小变化可导致损失函数较大的变化,使得梯度变大,避免梯度消失,同时也可加快收敛。大致上通过计算均值和方差后,mini-batch的数据进行标准化,再使数据进行移动和缩放到类似于原始分布,从而加快网络收敛。
第四,对模型添加通道注意力和空间注意力机制。具体过程如下:
受注意力机制在计算机视觉和其他模式识别方面的启发,我们提出了一种基于CNN和注意力机制的新的网络结构。大体而言,我们在上述介绍的卷积神经网络中***了注意力机制。首先我们将受注意力影响的嵌入token进行第一个卷积操作,以提取初级的特征图F。随后我们依次计算通道注意力和空间注意力,得到两个注意力叠加后的注意力图F”,将注意力加权到特征图F上。我们再依次进行第二次卷积、最大池化、两次全连接得到最后的输出。
通道注意力算法的表示如下:
输入:第一层卷积层输出的特征图F
输出:被通道注意力后的特征图F′(维度相同)
function channel_attention(特征图F)
1:首先通过使用平均池化来聚合特征图的空间信息,表示为:
Figure BDA0002708076890000101
2:通过最大池化操作再次聚合特征图的空间信息,表示为:
Figure BDA0002708076890000102
3:然后将这两个放到空间信息依次共享多层感知机中以生成频道关注图,表示为:
Figure BDA0002708076890000103
Figure BDA0002708076890000104
4:将两个频道图叠加,通过tanh激活函数生成通道注意力,表示为:
Figure BDA0002708076890000105
5:将注意力加权,产生通道注意力后的特征图,表示为:
Figure BDA0002708076890000106
6:返回通道注意力后的特征图F′
空间注意力算法的表示如下:
输入:第一层卷积层输出的特征图F
输出:被空间注意力后的特征图F′(维度相同)
function spatial_attention(特征图F)
1:首先通过使用平均池化来聚合特征图的空间信息,表示为:
Figure BDA0002708076890000107
2:通过最大池化操作再次聚合特征图的空间信息,表示为:
Figure BDA0002708076890000108
3:将这两个特征图连接并用7*7的卷积核进行标准卷积,生成二维空间注意力图,表示为:
Figure BDA0002708076890000111
4:将两个频道图叠加,通过tanh激活函数生成空间注意力,表示为:
Figure BDA0002708076890000112
5:将注意力加权,产生空间注意力后的特征图,表示为:
Figure BDA0002708076890000113
6:返回空间注意力后的特征图F′
最后,使用训练好的带有空间注意力和通道注意力的模型对源代码文件进行漏洞分析,具体过程如下:
(1)使用word2vec算法将源代码文件转化为表示向量;
(2)使用token注意力对表示向量进行注意力加权;
(3)使用卷积神经网络进行卷积,并在第一层和第二层卷积层之间依次加入通道注意力和空间注意力
(4)根据输出结果做出预测,输出大于0.8表示存在漏洞。
通过本发明的方法,在含有Intel core i5-9600处理器、16G内存、NVIDA 2070S显卡的台式电脑进行实验。实验收集到的训练样本中包含4个不同的漏洞大类,共227956条数据,在训练的过程中,使用总数据中的20%作为验证数据集,剩余80%作为训练数据集,并对训练数据进行20次迭代训练。实验耗时约27h,最终验证准确率收敛到95%左右,精确度90%左右,F1为90%左右。
训练完成后,学习到的参数被保存为模型文件,并在漏洞检测的时候重新加载进卷积神经网络。以指针使用不当这一漏洞为例,实验结果如表所示:
准确度 精确度 F1得分
98.0% 93.3% 89.6%
通过对结果的分析,可以看出,将源代码文件转化为表示向量,并利用卷积神经网络和注意力机制进行漏洞特征提取、参数学习,最终实现对源代码文件进行漏洞检测是高准确率的。

Claims (10)

1.一种源代码漏洞检测方法,其特征在于,包括以下步骤:
S1、将包含漏洞的源代码文件转化为表示向量;
S2、针对所述表示向量生成词级别的注意力权重,并加权到所述表示向量上;
S3、将加权后的表示向量作为卷积神经网络的输入,得到特征图;
S4、生成通道注意力权重和空间注意力权重,并分别加权到特征图的通道和空间上,得到基于注意力的检测模型;
S5、将S2所述表示向量作为基于注意力的检测模型的输入,训练所述基于注意力的检测模型,得到训练好的基于注意力的检测模型,利用训练好的基于注意力的检测模型对源代码进行检测。
2.根据权利要求1所述的源代码漏洞检测方法,其特征在于,步骤S1的实现过程包括:
1)按词读取包含漏洞的源代码文件,构造词典并统计各词出现的概率;
2)照各词出现概率构造Huffman树,并生成树节点所在的二进制码;
3)依赖连续词袋建立神经词嵌入网络,将字典放入神经词嵌入网络中进行训练,得到训练好的网络M;
4)将源文件的词送入所述网络M中,得到表示向量xi
3.根据权利要求1所述的源代码漏洞检测方法,其特征在于,步骤S2的具体实现过程包括:
A)将表示向量xi送入单层感知机,得到ui作为xi的隐层表示;
B)对每一个隐层表示ui,计算ui与uw的相似度衡量xi的重要性程度
Figure FDA0002708076880000011
其中,uw为定义的语境向量;
C)将注意力权重加权到xi以生成
Figure FDA0002708076880000012
公式表示为:
Figure FDA0002708076880000013
其中,
Figure FDA0002708076880000014
4.根据权利要求1所述的源代码漏洞检测方法,其特征在于,步骤S3中,
所述卷积神经网络每一次的输出计算公式如下:
Figure FDA0002708076880000021
其中,win为卷积神经网络某层的输入图像,wout为该层的输出图像,f表示对该层进行卷积操作将会用到的过滤器宽高,stride表示步长,padding表示填充边界的宽度。
5.根据权利要求1~6之一所述的源代码漏洞检测方法,其特征在于,步骤S2的具体实现过程包括:先通过word2vec生成表示向量,再根据表示向量和上下文向量生成注意力权重,将所述注意力权重加权到表示向量上,得到加权后的表示向量。
6.根据权利要求1所述的源代码漏洞检测方法,其特征在于,步骤S4中,生成通道注意力权重,并加权到特征图的通道上的实现过程包括:
I)使用平均池化聚合特征图的空间信息,得到空间信息A;通过最大池化操作聚合特征图的空间信息,得到空间信息B;
II)将所述空间信息A和空间信息B分别作为共享多层感知机的输入,得到两个频道关注图;
III)叠加两个所述频道关注图,生成通道注意力权重;
IV)将所述注意力权重加权到特征图上,输出通道注意力后的特征图F′。
7.根据权利要求1所述的源代码漏洞检测方法,其特征在于,步骤S4中,生成空间注意力权重,并加权到特征图的空间上的实现过程包括:
i)使用平均池化聚合特征图的空间信息,得到第一空间信息;通过最大池化操作聚合特征图的空间信息,得到第二空间信息;
ii)对所述第一空间信息和第二空间信息分别进行卷积操作,生成两个二维空间注意力图;
iii)叠加两个空间注意力图,生成空间注意力权重;
iv)将空间注意力权重叠加到特征图上,得到空间注意力后的特征图F*
8.根据权利要求1~6之一所述的源代码漏洞检测方法,其特征在于,利用训练好的基于注意力的检测模型对源代码进行检测的具体实现过程包括:将源代码输入所述训练好的基于注意力的检测模型,若输出大于0.8,则认为存在漏洞。
9.一种源代码漏洞检测***,其特征在于,包括计算机设备;所述计算机设备被配置或编程为用于执行权利要求1~8之一所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,其存储有程序;所述程序被配置为用于执行权利要求1~8之一所述方法的步骤。
CN202011046243.0A 2020-09-29 2020-09-29 源代码漏洞检测方法、***及存储介质 Active CN112182585B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011046243.0A CN112182585B (zh) 2020-09-29 2020-09-29 源代码漏洞检测方法、***及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011046243.0A CN112182585B (zh) 2020-09-29 2020-09-29 源代码漏洞检测方法、***及存储介质

Publications (2)

Publication Number Publication Date
CN112182585A true CN112182585A (zh) 2021-01-05
CN112182585B CN112182585B (zh) 2024-04-26

Family

ID=73945629

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011046243.0A Active CN112182585B (zh) 2020-09-29 2020-09-29 源代码漏洞检测方法、***及存储介质

Country Status (1)

Country Link
CN (1) CN112182585B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254939A (zh) * 2021-05-20 2021-08-13 江苏大学 基于多注意力机制和自适应学习的智能合约漏洞检测方法
CN113591093A (zh) * 2021-07-22 2021-11-02 燕山大学 基于自注意力机制的工业软件漏洞检测方法
CN113806750A (zh) * 2021-09-24 2021-12-17 深信服科技股份有限公司 文件安全风险检测方法、模型的训练方法、装置和设备
CN113992362A (zh) * 2021-10-09 2022-01-28 南京理工大学 一种业务数据保护方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108667816A (zh) * 2018-04-19 2018-10-16 重庆邮电大学 一种网络异常的检测定位方法及***
CN110222513A (zh) * 2019-05-21 2019-09-10 平安科技(深圳)有限公司 一种线上活动的异常监测方法、装置及存储介质
US20190354689A1 (en) * 2018-05-18 2019-11-21 Deepmind Technologies Limited Deep neural network system for similarity-based graph representations
CN111259394A (zh) * 2020-01-15 2020-06-09 中山大学 一种基于图神经网络的细粒度源代码漏洞检测方法
CN111274134A (zh) * 2020-01-17 2020-06-12 扬州大学 基于图神经网络的漏洞识别与预测方法、***、计算机设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108667816A (zh) * 2018-04-19 2018-10-16 重庆邮电大学 一种网络异常的检测定位方法及***
US20190354689A1 (en) * 2018-05-18 2019-11-21 Deepmind Technologies Limited Deep neural network system for similarity-based graph representations
CN110222513A (zh) * 2019-05-21 2019-09-10 平安科技(深圳)有限公司 一种线上活动的异常监测方法、装置及存储介质
CN111259394A (zh) * 2020-01-15 2020-06-09 中山大学 一种基于图神经网络的细粒度源代码漏洞检测方法
CN111274134A (zh) * 2020-01-17 2020-06-12 扬州大学 基于图神经网络的漏洞识别与预测方法、***、计算机设备和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李元诚;崔亚奇;吕俊峰;来风刚;张攀;: "开源软件漏洞检测的混合深度学习方法", 计算机工程与应用, no. 11 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254939A (zh) * 2021-05-20 2021-08-13 江苏大学 基于多注意力机制和自适应学习的智能合约漏洞检测方法
CN113254939B (zh) * 2021-05-20 2024-04-19 江苏大学 基于多注意力机制和自适应学习的智能合约漏洞检测方法
CN113591093A (zh) * 2021-07-22 2021-11-02 燕山大学 基于自注意力机制的工业软件漏洞检测方法
CN113591093B (zh) * 2021-07-22 2023-05-16 燕山大学 基于自注意力机制的工业软件漏洞检测方法
CN113806750A (zh) * 2021-09-24 2021-12-17 深信服科技股份有限公司 文件安全风险检测方法、模型的训练方法、装置和设备
CN113806750B (zh) * 2021-09-24 2024-02-23 深信服科技股份有限公司 文件安全风险检测方法、模型的训练方法、装置和设备
CN113992362A (zh) * 2021-10-09 2022-01-28 南京理工大学 一种业务数据保护方法

Also Published As

Publication number Publication date
CN112182585B (zh) 2024-04-26

Similar Documents

Publication Publication Date Title
CN110717431B (zh) 一种结合多视角注意力机制的细粒度视觉问答方法
Cui et al. Identifying materials of photographic images and photorealistic computer generated graphics based on deep CNNs.
CN112182585B (zh) 源代码漏洞检测方法、***及存储介质
Guo et al. Locally supervised deep hybrid model for scene recognition
Lopez-Paz et al. Discovering causal signals in images
CN109302410B (zh) 一种内部用户异常行为检测方法、***及计算机存储介质
CN111753881B (zh) 一种基于概念敏感性量化识别对抗攻击的防御方法
CN109063719B (zh) 一种联合结构相似性和类信息的图像分类方法
CN111723368A (zh) 基于Bi-LSTM和自注意力的恶意代码检测方法及***
CN113094596A (zh) 一种基于双向传播图的多任务谣言检测方法
CN111062036A (zh) 恶意软件识别模型构建、识别方法及介质和设备
CN112364974B (zh) 一种基于激活函数改进的YOLOv3算法
CN114882278A (zh) 一种基于注意力机制和迁移学习的轮胎花纹分类方法和装置
CN112818774A (zh) 一种活体检测方法及装置
CN114844682B (zh) 一种dga域名检测方法及***
Diqi et al. Implementation of CNN for plant leaf classification
CN115757112A (zh) 基于变异分析的测试子集构建方法及相关设备
CN113779244B (zh) 文档情感分类方法、装置、存储介质以及电子设备
Vepuri Improving facial emotion recognition with image processing and deep learning
CN113111267A (zh) 一种基于双向传播图的多任务谣言检测方法
Ali et al. Character Recogntion System: Performance Comparison of Neural Networks and Genetic Algorithm
Sobczak et al. Hybrid Restricted Boltzmann Machine–Convolutional Neural Network Model for Image Recognition
CN113505783B (zh) 基于少次学习的甲骨文单字识别方法和装置
Indian et al. Off-line Handwritten Hindi Consonants Recognition System using Zemike Moments and Genetic Algorithm
CN113283520B (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