CN110162972B - 一种基于语句联合编码深度神经网络的uaf漏洞检测方法 - Google Patents

一种基于语句联合编码深度神经网络的uaf漏洞检测方法 Download PDF

Info

Publication number
CN110162972B
CN110162972B CN201910370738.XA CN201910370738A CN110162972B CN 110162972 B CN110162972 B CN 110162972B CN 201910370738 A CN201910370738 A CN 201910370738A CN 110162972 B CN110162972 B CN 110162972B
Authority
CN
China
Prior art keywords
matrix
coding
template
neural network
uaf
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.)
Expired - Fee Related
Application number
CN201910370738.XA
Other languages
English (en)
Other versions
CN110162972A (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.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
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 Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN201910370738.XA priority Critical patent/CN110162972B/zh
Publication of CN110162972A publication Critical patent/CN110162972A/zh
Application granted granted Critical
Publication of CN110162972B publication Critical patent/CN110162972B/zh
Expired - Fee Related 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Virology (AREA)
  • Devices For Executing Special Programs (AREA)
  • Machine Translation (AREA)

Abstract

本发明公开了一种基于语句联合编码深度神经网络的UAF漏洞检测方法,首先生成源代码训练样本集;然后对训练样本集进行预处理;构建并训练深度神经网络模型;采用UAF漏洞对应的代码格式将源代码进行格式化;最后使用训练完成的深度神经网络进行对步骤4中格式化后的源代码进行漏洞检测。本发明采用了一种源代码生成器,可以按照UAF模板的设计自动生成出带有标签的训练样本,从而可以从生成训练样本到构造检测模型完成实现自动化。同时,本发明改进了使用的“端到端记忆神经网络结构”,在仅需要原有训练样本数据规模十分之一的条件下,使得UAF漏洞的检测可以达到同样的90%以上准确率。

Description

一种基于语句联合编码深度神经网络的UAF漏洞检测方法
技术领域
本发明属于信息安全技术领域。涉及一种UAF(Use-After-Free)漏洞检测方法,具体涉及一种基于语句联合编码深度神经网络的UAF(Use-After-Free)漏洞检测方法。
背景技术
检测软件源代码中的漏洞是保证软件质量的重要环节之一。如果有一种方法可以在系统运行前就通过检测源代码得知哪些地方可能出现问题,那么将大幅度减少软件调试时间、提高开发的效率,而且还可以减少系统运行中由于漏洞带来的损失。C语言或其他有指针机制的程序设计语言中,一个历史性的难题就是Use-After-Free(下称UAF)问题:即指针指向的对象内存空间已经释放以后仍然通过指针使用该对象。这将导致严重的安全隐患——黑客可以利用这个漏洞窃听到内部的一些信息变动,还可以利用这个漏洞引导程序执行走向错误的位置。因此,对于从源代码中检查出UAF漏洞历来是软件工程业界关注的问题。
目前从源代码中进行漏洞检测的方法大都是基于先验知识设计的一些静态检测技术方案。但是针对UAF漏洞,目前的静态技术方案还没有能够很好地解决这个问题,这个历史性问题的解决进程已经进入了瓶颈期。
而当前人工智能尤其是深度神经网络技术在图像识别、语音识别等领域取得了大量突破性进展,其技术原理是:利用海量标记的样本数据对深度神经网络进行训练,让神经网络自动优化从源数据到目标数据的映射分布,从而当一个新测试数据到来的时候,可以让这个神经网络负责计算从这个数据到目标的映射,从而达到分类或预测的效果。
因此,本发明拟通过深度神经网络等人工智能技术在自动挖掘复杂数据间关联及映射的能力,将它引入到UAF源代码漏洞检测领域,从而突破当前这个领域的一个发展瓶颈。
让深度神经网络用于UAF漏洞检测面临着两个重要的问题:一是如何生成足够的有标记训练样本数据。自然情况下通常很难获得大量的漏洞标记源代码数据,而人工进行数据的标注需要花费大量的时间和人工,存在着很多现实的困难;二是设计合适的深度神经网络结构,使之适用于源代码中用于UAF漏洞检测的特点,例如这种漏洞需要根据上下文和目标内容进行综合的追踪发现——需要有记忆判断上下文的能力,并且接受目标代码等,因此网络结构必须要根据这种漏洞的特点和性质进行设计和调整。
关于这个方面已有的最新国内外研究是利用一种称为“端到端记忆神经网络”进行预测,这种神经网络可以用于预测相对简单的缓冲区溢出(buffer-overflow)问题,它能取得比目前流行的几个开源传统静态检测工具更加准确的预测结果,但是这个网络结构和预处理方法在检测UAF源代码漏洞上仍然存在不足。同时,已有方法由于预处理环节的局限性,不能运用于开源项目的源代码检测。
发明内容
为了解决深度神经网络在检测软件源代码中UAF漏洞时遇到的两大问题——标记样本训练集合的不足以及相应深度神经网络结构的设计问题,本发明提供了一种基于语句联合编码深度神经网络的UAF漏洞检测方法。
本发明所采用的技术方案是:一种基于语句联合编码深度神经网络的UAF漏洞检测方法,其特征在于,包括以下步骤:
步骤1:生成源代码训练样本集;
步骤2:对训练样本集进行预处理;
步骤3:构建并训练深度神经网络模型;
步骤4:采用UAF漏洞对应的代码格式将源代码进行格式化;
步骤5:使用训练完成的深度神经网络进行对步骤4中格式化后的源代码进行漏洞检测。
本发明的优点主要有:
(1)本发明改进了当前研究中使用的用于源代码漏洞检测的深度神经网络结构及其预处理算法,提高了在UAF漏洞检测中的效率和准确率——在相同数据规模的情况下准确率更高;而在达到相同准确率的情况下需要使用的样本数更少,提高了检测效率;
(2)此前的深度神经网络算法在源代码中进行漏洞检测可以应用的问题通常是缓冲溢出漏洞的检测。本发明在改进了网络结构的基础上探索了对于另外一种不同于缓冲溢出漏洞,但具有普适性的UAF漏洞的检测,并且符合(1)中的描述;
(3)此前运用的深度神经网络算法进行的漏洞检测研究中,只能对于构造的一种专门的简单设计语言上下文进行检测,它不能用于真实的开源项目检测。本发明将现实开源项目中的C源代码进行了格式化等有效预处理以后再检测,能够以几乎90%的准确率成功检测出这些真实开源代码中的符合上文提及的定义模板中的漏洞,从而让深度神经网络模型可以运用于更真实的软件源代码中的漏洞发现。
附图说明
图1为本发明实施例的流程图;
图2为本发明实施例中训练源代码生成的流程图;
图3为本发明实施例中数据预处理流程图;
图4为本发明实施例中映射词法字典的样例图(用于实例,还没有对这个字典排序);
图5为本发明实施例中深度神经网络结构图;
图6为本发明实施例中深度神经网络执行流程图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
请见图1,本发明提供的一种基于语句联合编码深度神经网络的UAF漏洞检测方法,包括以下步骤:
步骤1:生成源代码训练样本集;
请见图2,步骤1的具体实现包括以下子步骤:
步骤1.1:确定UAF漏洞类型模板;
UAF漏洞类型模板包括正确模板和错误模板,正确模板满足所有目标地址操作在对应变量free之前,错误模板是对应变量在free之后还有目标地址操作;
设定需要的参数信息,用以描述模板实例化过程的限制,包括常数库、变量库(相当于是函数执行的时候需要用的外部信息)、一个样本中包含的模板实例数量的范围、混淆用的无关源代码的长度范围;常数库,所有可用的用来替代带$符号的实例的常数(最前面为$的符号表示这个符号是需要被替换的,其后面跟随的一个标识符(标识符的定义和C语言中的标识符相近)这个标识符用于指示后来的实例化的过程。带$的符号实际上相当于一个模板标识符或者占位符,等待位置的实例化或者是填充);变量库,所有可用的,用来替代$name类型的变量名的库;
本实施例中,以下的模板中的$name称为:关注变量。
正确的情况的模板举例:
$type$name=malloc($any_expression);
(可以根据需要设计以下两种表达式,本质上只要是含有对$name的*和->访问都可以被放入模板。)
*$name=$any_expression;//这一句没有UAF问题
$name->$any_expression=$any_expression;//这一句没有UAF问题
(追踪传递的过程,任何赋值的操作。)
$other_name=$name;
(最后free的操作,此后不含有对对应指针的操作。)
free($other_name);
(或者是:)
free($name);
错误情况的模板举例:
$type$name=malloc($any_expression);
free($name);
(下面的表达式可以是任意在对$name赋值之前调用$name的目的地址的操作,即:*和->)
*$name=$any_expression;//这一句会产生UAF问题;
步骤1.2:迭代生成预定数量的模板实例,以及预定数量的无关源代码;
每次通过抽取一个非负随机数m,进行模n(表示总的模板数量)运算后,从模板数组中相应抽取一个模板,然后代入从1.1步骤设定的参数进行实例化,实例化的过程是:每次随机抽取一个参数库的内容,代入实例化模板中的$表达式,并且在模板实例每一行执行关注变量的目标地址操作(*或者->)的时候在本行末加上一个以注释形式表示的问题标签,(例如:*a=10;//safe),直到迭代生成预定数量的模板实例,以及预定数量的无关源代码;
模板实例,是根据模板实例数量范围生成的随机数;
步骤1.3:通过随机归并算法进行随机合并,并且输出样本;
每次随机选中一个模板实例,然后将其第一行放入输出队列,并去掉这个抽中的实例的第一行,让下面一行变为第一行,如果已经不存在元素则去掉这个模板实例;
C++源代码大致描述如下:
Figure BDA0002049851420000051
步骤1.4:迭代执行步骤1.2-1.3,直到满足步骤1.1中参数指定的预定样本数量为止,获得源代码训练样本集。
图2为训练源代码生成的流程图,读取UAF漏洞模板信息和其他生成用的常数信息以后共有两个嵌套循环,如果生成了目标数量的模板,那么就采用随即归并的算法形成一个顺序合理的源代码段,最外层循环输出所有的生成的样本形成样本集。
步骤2:对训练样本集进行预处理;
请见图3,步骤2的具体实现包括以下子步骤:
步骤2.1:将所有的样本都遍历,取出所有词构成词典;统计得到样本个数M,每个样本拥有的最大行数L,每行拥有的最大词数N;
步骤2.2:将词的字符串根据其在词典中的序号映射到一个常数;
先对词典中的词进行排序,然后再按顺序分配具体的编号;
步骤2.3:将词根据生成的词典映射到L×(N+1)的矩阵中,其中每行第一个元素设定为当前样本对应的行号,然后依次将词的字符串根据步骤2.1中已经生成的词典映射到一个非负整数;对所有没有被填充的地方填入0;
将得到的矩阵里面带有问题标签的行取出,组成另外一个集合,称为“问题集”;
最终得到M×L×(N+1)的一个三维张量作为“上下文集合”,得到另外一个一维张量的集合作为“问题集”。
图3为数据预处理流程图,说明面对一个样本集合如何进行预处理的一个实施例。所述流程开始于从数据库看是否已经对这个样本集合完成了预处理形成了字典和其他的样本集合统计数据,如果没有完成,要先遍历整个样本集合获得所有的源代码词法分析结果形成字典。同时统计所有的样本的后面需要的统计特征,包括最大行数L,一行最大词数N,词典容量V等。完成这些统计和词典构建操作后就将样本都通过词典映射为一个上下文矩阵C,并且用0填充空余部分。
图4为映射的一个样例图,这个图将一个实例函数里的第一行的“int e1=5;”源代码映射到了另一个向量,其中这个向量的第一个分量一定是行数的标识符,这是为了更加好地标记还原上下文信息,然后将这些词逐个根据字典映射到另一个向量里。需要注意的是,这里使用的例子因为没有别的元素,所以还没有进行排序,实际上使用的时候要分别根据元素类型——数字常量、字符常量等先进行排序然后对整体进行排序(将排序完的数字常量、字符常量作为一个整体)。
步骤3:构建并训练深度神经网络模型;
请见图5,步骤3的具体实现包括以下子步骤:
步骤3.1:构建深度神经网络模型;
每个编码层用于执行以下步骤3.2-3.4的编码工作,每个编码层含有一个作为网络参数的嵌入矩阵;分别对一个上下文矩阵C进行两次编码,分别称为输入编码矩阵和输出编码矩阵,对问题向量Q进行一次编码称为结果编码矩阵,结果编码矩阵和输入编码矩阵点乘和softmax操作以后得到的矩阵和输出编码矩阵再进行点乘以后进过内部的一个正则化层和若干全连接层和结果编码矩阵做一个求和得到新的结果编码矩阵,这个矩阵根据所设定的Hop次数迭代重新参与从和输入张量矩阵编码点乘开始的操作,达到设定的Hop次数以后就输出;输出以分类交叉熵损失函数进行损失衡量,通过Adam优化器进行优化;
步骤3.2:输入上下文矩阵L×(N+1)和问题向量1×(n+1);
步骤3.3:对上下文矩阵进行两次联合编码,产生编码后的输入、输出矩阵;
编码层内部含有的是维度为V×d的可学习嵌入矩阵E(Embedding Matrix),其中V是词袋规模,为步骤2中得到的词典的不同词的个数;
对应需要编码的内容矩阵A(作为编码层的输入的矩阵),进行逐行嵌入,每一层得到的嵌入结果成为嵌入最终结果R的一行;其中A向量矩阵为L×J矩阵,J=N+1;
设ri为R的第i行,则有:
Figure BDA0002049851420000071
其中,·表示两个向量逐个元素相乘;lj是指第j列的位置向量,是一个1×d的向量,其中第k维的分量
Figure BDA0002049851420000072
Aij表示一个整数,用这个整数作为E的下标,记为
Figure BDA0002049851420000073
计算得到R,就完成了编码的操作。
步骤3.4:将一个上下文矩阵C分别用两个嵌入矩阵进行联合编码得到“上下文编码输入张量”和“上下文编码输出向量”,对问题向量Q编码得到“问题编码向量”,并输入深度神经网络模型中进行运算得到输出。
图5为深度神经网络结构图,这个图中使用了一个循环迭代——在张量求和以后,如果Hop的计数没有归0则需要以当前的输出作为编码以后的目标向量的这个输入再次参与运算所有的编码只会经过一次,然后就会进入这个Hop的过程,图中不仅有神经网络的层次结构,为了更清晰数据,引入了数据在图中,“上下文编码输出张量矩阵”和“上下文编码输入张量矩阵”、“一维权重张量”都是数据。
步骤4:采用UAF漏洞对应的代码格式将源代码进行格式化;
步骤5:使用训练完成的深度神经网络进行对步骤4中格式化后的源代码进行漏洞检测;
a)如果需要对新的测试源代码进行检测必须要先经过一步编译展开的操作,将源代码里有的函数在函数调用的位置进行展开,这是因为真实的工业级源代码一般不会同一个函数内发生显而易见的UAF漏洞问题,所以对某一个函数需要进行展开。
b)类型和命名的重新调整。因为检测只能依据已有的词典来进行,它是和词典绑定的(除了数字、字符常量等可以有所不同——因为之前按照这个顺序进行过排序),所以必须要将a)中得到的展开函数进行映射,因为目标是检测Use-After-Free类型漏洞,因此对于代码只需要关注相关的某个数据对象的malloc和后续free以及指针操作等相关源代码。
c)调整完名字以后要删除一些明显的冗余源代码——包括不在相应malloc和free对象及操作对象的数据流源代码,以让最终函数的行数不超过L,从而控制模型复杂性。
d)得到c)步骤中的矩阵以后进行到词典的映射,然后将需要提问源代码行抽取出来,输入到深度神经网络中。
请见图6,步骤5的具体实现包括以下子步骤:
步骤5.1:将源代码里的函数在函数调用的位置执行内联展开;这里设定有展开阈值,如果展开后行数超过阈值则保留函数调用;
步骤5.2:将步骤5.1中得到的展开函数进行映射;
具体规则为:将展开函数进行词法归纳,变量映射到参数步骤2中的变量库,常数按顺序和性质(例如整数、浮点数等)映射到常数库;
步骤5.3:删除冗余源代码,包括不在相应malloc和free对象及操作对象的数据流源代码,以让最终函数的行数不超过L;
步骤5.4:对步骤5.3中获得的代码进行到词典的映射,然后将需要检查是否有问题的行(也即进行一定的目标地址操作的行)抽取出来,输入到深度神经网络中进行漏洞检测。
图6为深度神经网络正向传播的流程图,其中例如在W=softmax(I.*Q)中出现的.*表示的是数学上的点乘。
本发明并且让深度神经网络可以用于UAF源代码漏洞识别领域。本发明采用了一种源代码生成器,可以按照UAF模板的设计自动生成出带有标签的训练样本,从而可以从生成训练样本到构造检测模型完成实现了自动化。同时,本发明改进了使用的“端到端记忆神经网络结构”,在仅需要原有训练样本数据规模十分之一的条件下(大约1万条数据),使得UAF漏洞的检测可以达到同样的90%以上准确率。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

Claims (5)

1.一种基于语句联合编码深度神经网络的UAF漏洞检测方法,其特征在于,包括以下步骤:
步骤1:生成源代码训练样本集;
步骤1的具体实现包括以下子步骤:
步骤1.1:确定UAF漏洞类型模板;
所述UAF漏洞类型模板包括正确模板和错误模板,所述正确模板满足所有目标地址操作在对应变量free之前,错误模板是对应变量在free之后还有目标地址操作;
设定需要的参数信息,用以描述模板实例化过程的限制,包括常数库、变量库、一个样本中包含的模板实例数量的范围、混淆用的无关源代码的长度范围;所述常数库,所有可用的用来替代带$符号的实例常数;最前面为$的符号表示这个符号是需要被替换的,其后面跟随的一个标识符,这个标识符用于指示后来的实例化的过程;
步骤1.2:迭代生成预定数量的模板实例,以及预定数量的无关源代码;
每次通过抽取一个非负随机数m,进行模n运算后,从模板数组中相应抽取一个模板,然后代入从步骤1.1设定的参数进行实例化;其中n表示总的模板数量;
实例化的过程是:每次随机抽取一个参数库的内容,代入实例化模板中的带$符号的实例表达式,并且在模板实例每一行执行关注变量的目标地址操作的时候在本行末加上一个以注释形式表示的问题标签,直到迭代生成预定数量的模板实例,以及预定数量的无关源代码;
所述模板实例,是根据模板实例数量范围生成的随机数;
步骤1.3:通过随机归并算法进行随机合并,并且输出样本;
每次随机选中一个模板实例,然后将其第一行放入输出队列,并去掉这个抽中的实例的第一行,让下面一行变为第一行,如果已经不存在元素则去掉这个模板实例;
步骤1.4:迭代执行步骤1.2-1.3,直到满足步骤1.1中参数指定的预定样本数量为止,获得源代码训练样本集;
步骤2:对训练样本集进行预处理;
步骤3:构建并训练深度神经网络模型;
步骤4:采用UAF漏洞对应的代码格式将源代码进行格式化;
步骤5:使用训练完成的深度神经网络进行对步骤4中格式化后的源代码进行漏洞检测。
2.根据权利要求1所述的基于语句联合编码深度神经网络的UAF漏洞检测方法,其特征在于,步骤2的具体实现包括以下子步骤:
步骤2.1:将所有的样本都遍历,取出所有词构成词典;统计得到样本个数M,每个样本拥有的最大行数L,每行拥有的最大词数N;
步骤2.2:将词的字符串根据其在词典中的序号映射到一个常数;
先对词典中的词进行排序,然后再按顺序分配具体的编号;
步骤2.3:将词根据生成的词典映射到L×(N+1)的矩阵中,其中每行第一个元素设定为当前样本对应的行号,然后依次将词的字符串根据步骤2.1中已经生成的词典映射到一个非负整数;对所有没有被填充的地方填入0;
将得到的矩阵里面带有问题标签的行取出,组成另外一个集合,称为“问题集”;
最终得到M×L×(N+1)的一个三维张量作为“上下文集合”,得到另外一个一维张量的集合作为“问题集”。
3.根据权利要求2所述的基于语句联合编码深度神经网络的UAF漏洞检测方法,其特征在于,步骤3的具体实现包括以下子步骤:
步骤3.1:构建深度神经网络模型;
每个编码层用于执行以下步骤3.2-3.4的编码工作,每个编码层含有一个作为网络参数的嵌入矩阵;分别对一个上下文矩阵C进行两次编码,分别称为输入编码矩阵和输出编码矩阵,对问题向量Q进行一次编码称为结果编码矩阵,结果编码矩阵和输入编码矩阵点乘和softmax操作以后得到的矩阵和输出编码矩阵再进行点乘以后进过内部的一个正则化层和若干全连接层和结果编码矩阵做一个求和得到新的结果编码矩阵,这个矩阵根据所设定的Hop次数迭代重新参与从和输入张量矩阵编码点乘开始的操作,达到设定的Hop次数以后就输出;输出以分类交叉熵损失函数进行损失衡量,通过Adam优化器进行优化;
步骤3.2:输入上下文矩阵L×(N+1)和问题向量1×(n+1);
步骤3.3:对上下文矩阵进行两次联合编码,产生编码后的输入、输出矩阵;
步骤3.4:将一个上下文矩阵C分别用两个嵌入矩阵进行联合编码得到“上下文编码输入张量”和“上下文编码输出向量”,对问题向量Q编码得到“问题编码向量”,并输入深度神经网络模型中进行运算得到输出。
4.根据权利要求3所述的基于语句联合编码深度神经网络的UAF漏洞检测方法,其特征在于,步骤3.3的具体实现过程为:
编码层内部含有的是维度为V×d的可学习嵌入矩阵E,其中V是词袋规模,为步骤2中得到的词典的不同词的个数;
对应需要编码的内容矩阵A,作为编码层的输入的矩阵,进行逐行嵌入,每一层得到的嵌入结果成为嵌入最终结果R的一行;其中A向量矩阵为L×J矩阵,J=N+1;
设ri为R的第i行,则有:
Figure FDA0003856727820000031
其中,·表示两个向量逐个元素相乘;lj是指第j列的位置向量,是一个1×d的向量,其中第k维的分量
Figure FDA0003856727820000032
Aij表示一个整数,用这个整数作为E的下标,记为
Figure FDA0003856727820000033
计算得到M,就完成了编码的操作。
5.根据权利要求1-4任意一项所述的基于语句联合编码深度神经网络的UAF漏洞检测方法,其特征在于,步骤5的具体实现包括以下子步骤:
步骤5.1:将源代码里的函数在函数调用的位置执行内联展开;这里设定有展开阈值,如果展开后行数超过阈值则保留函数调用;
步骤5.2:将步骤5.1中得到的展开函数进行映射;
具体规则为:将展开函数进行词法归纳,变量映射到参数步骤2中的变量库,常数按顺序和性质映射到常数库;
步骤5.3:删除冗余源代码,包括不在相应malloc和free对象及操作对象的数据流源代码,以让最终函数的行数不超过L;
步骤5.4:对步骤5.3中获得的代码进行到词典的映射,然后将需要检查是否有问题的行抽取出来,输入到深度神经网络中进行漏洞检测。
CN201910370738.XA 2019-05-06 2019-05-06 一种基于语句联合编码深度神经网络的uaf漏洞检测方法 Expired - Fee Related CN110162972B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910370738.XA CN110162972B (zh) 2019-05-06 2019-05-06 一种基于语句联合编码深度神经网络的uaf漏洞检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910370738.XA CN110162972B (zh) 2019-05-06 2019-05-06 一种基于语句联合编码深度神经网络的uaf漏洞检测方法

Publications (2)

Publication Number Publication Date
CN110162972A CN110162972A (zh) 2019-08-23
CN110162972B true CN110162972B (zh) 2022-11-18

Family

ID=67633484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910370738.XA Expired - Fee Related CN110162972B (zh) 2019-05-06 2019-05-06 一种基于语句联合编码深度神经网络的uaf漏洞检测方法

Country Status (1)

Country Link
CN (1) CN110162972B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112115476B (zh) * 2020-08-06 2023-10-24 扬州大学 基于lstm的漏洞自动分类方法、系统和计算机设备
CN112560036B (zh) * 2020-12-21 2022-11-29 中国人民解放军陆军炮兵防空兵学院 一种基于神经网络与深度学习的c/c++漏洞静态检测方法
CN117574391B (zh) * 2024-01-15 2024-04-05 中国人民解放军战略支援部队航天工程大学 一种基于三地址码和神经网络的代码漏洞检测方法和系统
CN117786705B (zh) * 2024-02-28 2024-05-14 南京信息工程大学 一种基于异构图变换网络的语句级漏洞检测方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007052625A (ja) * 2005-08-18 2007-03-01 Hitachi Software Eng Co Ltd ソースコード脆弱性検査装置
CN107885999A (zh) * 2017-11-08 2018-04-06 华中科技大学 一种基于深度学习的漏洞检测方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3058010A1 (en) * 2017-04-03 2018-10-11 Royal Bank Of Canada Systems and methods for malicious code detection

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007052625A (ja) * 2005-08-18 2007-03-01 Hitachi Software Eng Co Ltd ソースコード脆弱性検査装置
CN107885999A (zh) * 2017-11-08 2018-04-06 华中科技大学 一种基于深度学习的漏洞检测方法及系统

Also Published As

Publication number Publication date
CN110162972A (zh) 2019-08-23

Similar Documents

Publication Publication Date Title
CN110162972B (zh) 一种基于语句联合编码深度神经网络的uaf漏洞检测方法
CN111783100B (zh) 基于图卷积网络对代码图表示学习的源代码漏洞检测方法
CN111639344B (zh) 一种基于神经网络的漏洞检测方法及装置
CN108647520B (zh) 一种基于脆弱性学习的智能模糊测试方法与系统
CN110232280B (zh) 一种基于树结构卷积神经网络的软件安全漏洞检测方法
CN110673840B (zh) 一种基于标签图嵌入技术的自动代码生成方法及系统
CN106997474A (zh) 一种基于深度学习的图节点多标签分类方法
CN113064586B (zh) 一种基于抽象语法树增广图模型的代码补全方法
CN112364352B (zh) 可解释性的软件漏洞检测与推荐方法及系统
CN112989363B (zh) 漏洞定位方法、装置、电子设备和存储介质
CN113591093A (zh) 基于自注意力机制的工业软件漏洞检测方法
CN111860981A (zh) 一种基于lstm深度学习的企业国民行业类别预测方法及系统
CN114757286A (zh) 一种基于条件对抗生成网络的多类别故障数据生成方法
CN112035345A (zh) 一种基于代码片段分析的混合深度缺陷预测方法
CN116150757A (zh) 一种基于cnn-lstm多分类模型的智能合约未知漏洞检测方法
CN115935372A (zh) 一种基于图嵌入和双向门控图神经网络的漏洞检测方法
CN109147868A (zh) 蛋白质功能预测方法、装置、设备及存储介质
CN115859302A (zh) 源代码漏洞检测方法、装置、设备及存储介质
CN113904844B (zh) 基于跨模态教师-学生网络的智能合约漏洞检测方法
CN112579777B (zh) 一种未标注文本的半监督分类方法
CN116663018A (zh) 一种基于代码可执行路径的漏洞检测方法及装置
CN115017015B (zh) 一种边缘计算环境下程序异常行为检测方法及系统
CN115878498A (zh) 一种基于机器学习预测程序行为的关键字节提取方法
CN116702157A (zh) 一种基于神经网络的智能合约漏洞检测方法
CN116361788A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20221118

CF01 Termination of patent right due to non-payment of annual fee