CN109902024A - 一种程序路径敏感的灰盒测试方法及装置 - Google Patents

一种程序路径敏感的灰盒测试方法及装置 Download PDF

Info

Publication number
CN109902024A
CN109902024A CN201910204436.5A CN201910204436A CN109902024A CN 109902024 A CN109902024 A CN 109902024A CN 201910204436 A CN201910204436 A CN 201910204436A CN 109902024 A CN109902024 A CN 109902024A
Authority
CN
China
Prior art keywords
program
path
loophole
sample data
execution
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
CN201910204436.5A
Other languages
English (en)
Other versions
CN109902024B (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.)
Information Engineering University of PLA Strategic Support Force
Original Assignee
Information Engineering University of PLA Strategic Support Force
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 Information Engineering University of PLA Strategic Support Force filed Critical Information Engineering University of PLA Strategic Support Force
Priority to CN201910204436.5A priority Critical patent/CN109902024B/zh
Publication of CN109902024A publication Critical patent/CN109902024A/zh
Application granted granted Critical
Publication of CN109902024B publication Critical patent/CN109902024B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明属于软件测试技术领域,特别涉及一种程序路径敏感的灰盒测试方法及装置,该方法包含:离线训练阶段,利用深度神经网络对样本数据集进行漏洞模式学习,获得程序执行路径的分类器,其中,样本数据集包中包含漏洞程序路径样本数据和无漏洞程序路径样本数据;在线测试阶段,将分类器集成到模糊测试工具中指导种子文件进行选择测试,优先选择触发漏洞路径的种子输入进行测试并赋予若干变异能量以执行相应变异次数,循环执行,直至中断。本发明填补漏洞路径样本影响分析方面空白,不依靠复杂的动态分析技术且不带来较大开销问题,可与其它灰盒测试技术有效结合,提升漏洞发现效率,可直接适用于二进制程序,无需依赖源代码,适用性强。

Description

一种程序路径敏感的灰盒测试方法及装置
技术领域
本发明属于软件测试技术领域,特别涉及一种程序路径敏感的灰盒测试方法及装置。
背景技术
模糊测试(Fuzzing)是一种自动化软件测试技术,通过将恶意构造的数据作为输入提供给测试程序并监测程序是否出现异常的一种测试方法。由于其简单、高效的特点,已经被各大软件厂商应用到软件开发测试中来保证他们的关键产品的质量并且发现了大量的安全漏洞。基于覆盖率的灰盒测试由于其快速而且扩展性强的优势成为一种最流行且有效的模糊测试技术,它采用遗传算法的思想,测试过程中跟踪程序的路径覆盖信息,如果发现变异后的种子输入触发了新的路径分支就会被加入到种子队列中参与下一轮的测试,否则会被丢弃掉。为了进一步提高灰盒测试的效率,研究人员尝试将污点分析、符号执行和机器学习等技术与灰盒测试相结合,突破程序中存在的复杂的条件检查,提高代码的覆盖率。利用污点分析定位分支比较指令,利用符号执行求解可以通过比较分支的输入,利用机器学习生成覆盖率高的样本输入等等。然而,这些方法普遍关注程序的覆盖率,没有关注bug代码的分布,即它们关心的是尽可能覆盖更多的路径,而非哪些路径更可能存在漏洞。事实上已有研究表明程序中80%的bug位于20%的代码中,这种将所有的输入同等看待,顺序的从种子队列中选择输入进行变异的方法,没有考虑到不同的种子输入触发的路径存在漏洞的概率是不同的,导致浪费大量的资源测试一些无意义的路径同时对有漏洞的路径或者代码测试不足,从而降低了漏洞发现的效率。
发明内容
为此,本发明提供一种程序路径敏感的灰盒测试方法及装置,实现针对性漏洞代码测试,有利于更快、更多的发现软件中隐藏的漏洞,检测效率高。
按照本发明所提供的设计方案,一种程序路径敏感的灰盒测试方法,包含如下内容:
离线训练阶段,利用深度神经网络对样本数据集进行漏洞模式学习,获得程序执行路径的分类器,其中,样本数据集包中包含漏洞程序路径样本数据和无漏洞程序路径样本数据;
在线测试阶段,将分类器集成到模糊测试工具中指导种子文件进行选择测试,优先选择触发漏洞路径的种子输入进行测试并赋予更多变异能量以执行相应变异次数,循环执行,直至中断。
上述的,深度神经网络选择基于长短期记忆网络LSTM的神经网络,该神经网络包含4层,第一层是embeding嵌入层,将序列中的所有元素映射到固定维度向量中;第二层和第三层是栈式LSTM层,每一层包含64个神经元;最后一层是全连接层,使用sigmoid激活函数,进行二分类;样本数据集中每个样本数据包含用于执行的二进制程序及对应触发漏洞路径的测试用例。
上述的,利用深度神经网络对样本数据集进行漏洞模式学习,包含如下内容:
A1)对样本数据集中程序进行动态执行,记录执行路径并根据是否存在漏洞做标签记录;
A2)将提取到的执行路径转成用于深度神经网络处理的向量表示;
A3)将向量表示作为深度神经网络模型输入,训练得到用于判定路径是否存在漏洞的程序执行路径的分类器。
优选的,A1)程序动态执行中,将程序执行路径的每条指令用对应字节码表示,在记录路径过程中不跟入系统自带库函数,并且保留与漏洞特征相关的库函数名。
优选的,A2)转成向量表示中,程序执行路径中每条指令的字节码作为一个token,将字节码序列利用word2vec训练,输出每条指令的256维向量表示,完成将程序执行路径映射到向量空间。
优选的,A3)将向量表示作为模型输入中,通过定义程序执行路径最大长度,通过补0或截断操作,获取固定长度的模型输入序列。
上述的,在线测试阶段中,首先,重构程序执行路径,并将重构后的程序执行路径进行向量表示;然后,利用训练生成的分类器对路径进行漏洞预测,依据预测结果,将预测有漏洞路径和种子输入进行标签和漏洞属性记录,循环执行,优先选择做标签记录的种子输入进行测试,并赋予更多变异能量以执行更多变异次数,直至被用户中断。
优选的,为赋予种子输入更多变异能量以执行多变异次数,将标记有漏洞种子输入的能量值设定最大值,将标记为无漏洞种子输入的能量值设定为原始值减半。
一种程序路径敏感的灰盒测试装置,包含:离线训练模块和在线测试模块,其中,
离线训练模块,用于利用深度神经网络对样本数据集进行漏洞模式学习,获得程序执行路径的分类器,其中,样本数据集包中包含漏洞程序路径样本数据和无漏洞程序路径样本数据;
在线测试模块,用于将分类器集成到模糊测试工具中指导种子文件进行选择测试,优先选择触发漏洞路径的种子输入进行测试并赋予更多变异能量以执行相应变异次数,循环执行,直至中断。
上述的装置中,所述离线训练模块包含:动态执行单元、向量表示单元和训练学习单元,其中,
动态执行单元,用于对样本数据集中程序进行动态执行,记录执行路径并根据是否存在漏洞做标签记录;
向量表示单元,用于将提取到的执行路径转成用于深度神经网络处理的向量表示;
训练学习单元,用于将向量表示作为深度神经网络模型输入,训练得到用于判定路径是否存在漏洞的程序执行路径的分类器。
本发明的有益效果:
1.本发明针对当前模糊测试过程中未能对种子文件进行有效区分,导致浪费大量资源测试一些无意义的程序路径或者代码,降低模糊测试效率的问题;利用深度神经网络从大量漏洞数据中学习潜在的漏洞模式,然后对模糊测试过程中新的路径进行预测,从而指导模糊测试优先选择触发漏洞路径的种子进行测试并分配更高的变异能量,以此增加漏洞触发的概率,并且实现用更短的时间发现更多的代码漏洞。
2.本发明填补了漏洞路径样本影响分析方面的空白,不依靠复杂的动态分析技术且不带来较大的开销问题,可以与其它灰盒测试技术进行有效结合,在原有测试工具的基础上进一步提升漏洞发现效率,可直接适用于二进制程序,无需依赖源代码,适用性强,具有较好的应用前景。
附图说明:
图1为实施例中测试方法流程示意图;
图2为实施例中漏洞模式学习示意图;
图3为实施例中在线指导模糊测试原理图;
图4为实施例中基于LSTM神经网络示意图;
图5为实施例中测试装置示意图;
图6为实施例中离线训练模块示意图。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
针对当前模糊测试过程中未能对种子文件进行有效区分,导致浪费大量资源测试一些无意义的程序路径或者代码,降低模糊测试效率等的问题,本发明实施例中,参见图1所示,提供一种程序路径敏感的灰盒测试方法,包含如下内容:
S101、离线训练阶段,利用深度神经网络对样本数据集进行漏洞模式学习,获得程序执行路径的分类器,其中,样本数据集包中包含漏洞程序路径样本数据和无漏洞程序路径样本数据;
S102、在线测试阶段,将分类器集成到模糊测试工具中指导种子文件进行选择测试,优先选择触发漏洞路径的种子输入进行测试并赋予更多变异能量以执行相应变异次数,循环执行,直至中断。
考虑到程序的复杂性及多样性,为了能够从这些代码中学到隐藏的漏洞模式,需要大量的训练样本训练机器学习模型。为此,可从NIST SARD项目以及Github中获取程序。一部分来源于NIST SARD项目的公开的标准测试集,包括很多人工构造的漏洞程序,其中的每个程序包含good(patch后)和bad(patch前)的程序代码,并且涵盖各种CWE(CommonWeakness Enumeration)类型,选择内存破坏相关的CWE作为研究对象,例如CWE121栈溢出,CWE122堆溢出,CWE190整数溢出,CWE416UAF等等。由于SARD的程序是人工构造的,程序漏洞可能跟真实世界应用中出现的漏洞存在差异,可能导致学到的模型扩展性较差。为此,利用GitHub收集真实世界的应用程序,借助git工具可以跟踪文件修改日志,获得patch前和patch后的版本,然后编译源码得到对应的二进制程序。另外除了二进制程序,还需要收集能够触发漏洞路径的测试用例,可从bugtracker,GitHub issue爬取POC,然后进行验证保留可以触发漏洞的测试用例。
本发明另一个实施例中,利用深度神经网络对样本数据集进行漏洞模式学习,参见图2所示,包含如下内容:
a101)对样本数据集中程序进行动态执行,记录执行路径并根据是否存在漏洞做标签记录;
a102)将提取到的执行路径转成用于深度神经网络处理的向量表示;
a103)将向量表示作为深度神经网络模型输入,训练得到用于判定路径是否存在漏洞的程序执行路径的分类器。
参见图3所示,构建的数据集包括从NIST SARD,Github上收集的28475个漏洞程序以及27436个无漏洞程序,利用爬虫从bugtracker以及Github issue中爬取POC(proof ofconcept)。在构建的数据集基础上,可以提取程序执行路径信息,最常用的方法是基于Pin动态插装实现路径跟踪记录,然而Pin需要对每条指令进行插装存在性能开销大的问题,会严重降低模糊测试工具的执行速度,为此,本发明另一个实施例中,利用Intel CPU的新硬件特性PT技术实现路径记录,将程序执行路径的每条指令用对应的字节码表示,在记录路径的过程中不跟入系统自带的库函数,可以有效减少记录的指令数,并且保留与漏洞特征相关的库函数名,例如strcpy,memcpy等。在将由指令字节码构成的程序路径输入给深度神经网络之前,需要将路径信息转化成向量表示形式,同时要尽可能保留执行路径的原始语义信息。借鉴文本处理的方法,一条程序路径可以看成一句话,而每条指令可以看作句子中的一个词;采用word2vec的方法实现词向量映射,将每条指令的字节码看成一个token,例如0x55代表push ebp,将字节码序列用word2vec训练,输出每条指令的256维的向量表示,得到了每个token的向量表示那么也就得到了整个指令序列的向量表示,实现将程序执行路径映射到向量空间。另外,由于不同的路径长度是不同的,而神经网络要求输入向量必须是相同大小的,为此,定义路径的最大长度n,如果不足的话补0,如果超过这个长度会被截断。当填充到长度为n个元素x1,x2,...,xn(xi是每条指令的向量表示)的固定长度后,一条路径的输入序列可以表示为x1:n=x1⊕x2⊕...⊕xn,其中⊕是连接符。通过训练包含大量buggy和clean路径的数据集,从中学习隐藏的漏洞模式,得到一个神经网络模型可以用来区分两类不同的样本。选择合适的神经网络模型对于训练的效果有很重要的影响,因为某行代码是否存在漏洞依赖于上下文,这个原则表明用于自然语言处理的神经网络非常适合漏洞检测,参见图4所示,选择基于LSTM的神经网络,总共包含4层。第一层是embeding层,将序列中的所有元素映射到一个固定维度的向量中,第二层和第三层是栈式LSTM层,每一层包含64个神经元,栈式LSTM模型能够学习更高层次的时域特征表示,最后一层是全连接层,使用sigmoid激活函数,进行二分类。
当训练得到预测模型后,需要将该模型集成到模糊测试工具中用于指导种子选择,具体的当变异后的种子输入发现了新的分支覆盖,需要用分类器预测该种子触发的路径是否存在漏洞,然后根据预测结果判定在接下来的测试过程中,确定当前的种子输入是否应该被优先测试并且获得更多的变异能量。因此在使用预测模型之前首先需要重构程序的执行路径,实际上,基于PT记录的控制流包以及二进制文件有能力重构出程序的执行流,只需要解析存储在内存中的trace即可。重构得到程序执行路径之后,采用同样的向量化方法将程序执行路径转成向量表示形式,然后用之前训练生成的模型对该路径进行预测,预测为有漏洞,即标签为1的路径,则标记种子的bug属性为1,为了能够在接下的种子选择中优先测试触发漏洞路径的种子,在种子选择之前会检查该bug属性,如果是bug为1的会被优先测试。本发明实施例中模糊测试算法可设计为如下的改进后的模糊算法内容,同时针对一个种子输入,会先确定测试产生的输入数量(即能量),之前的策略是通过使用执行时间,块覆盖,种子的创建时间以及输入深度来确定。为了实现对于触发漏洞路径的种子执行更多的变异,在分配种子能量的时候,将标记为有漏洞的种子的能量值设置为最大值,算法中的默认最大值为1600,将标记为无漏洞的种子能量值设置为原始值的1/2。
基于上述的测试方法,本发明实施例还提供一种程序路径敏感的灰盒测试装置,参见图5所示,包含:离线训练模块101和在线测试模块102,其中,
离线训练模块101,用于利用深度神经网络对样本数据集进行漏洞模式学习,获得程序执行路径的分类器,其中,样本数据集包中包含漏洞程序路径样本数据和无漏洞程序路径样本数据;
在线测试模块102,用于将分类器集成到模糊测试工具中指导种子文件进行选择测试,优先选择触发漏洞路径的种子输入进行测试并赋予更多变异能量以执行相应变异次数,循环执行,直至中断。
上述的装置中,离线训练模块101包含:动态执行单元1001、向量表示单元1002和训练学习单元1003,其中,
动态执行单元1001,用于对样本数据集中程序进行动态执行,记录执行路径并根据是否存在漏洞做标签记录;
向量表示单元1002,用于将提取到的执行路径转成用于深度神经网络处理的向量表示;
训练学习单元1003,用于将向量表示作为深度神经网络模型输入,训练得到用于判定路径是否存在漏洞的程序执行路径的分类器。
本发明实施例中,通过构建训练深度神经网络模型所用的数据集,然后通过动态执行二进制程序记录程序执行路径并打标签,通过词向量映射转换成向量,输入给神经网络模型进行训练得到分类器;将训练得到的分类器集成到模糊测试工具中,辅助优先测试那些触发漏洞概率较高的种子文件。利用深度神经网络从大量的漏洞程序路径和无漏洞程序路径中学习潜在的漏洞模式得到分类器,预测灰盒测试过程中生成的种子输入所触发的路径是否存在漏洞,优先选择能够触发漏洞路径的种子输入进行测试并赋予更多的变异能量(执行更多的变异次数)。针对性的测试一些很可能存在漏洞的代码,有利于更快更多的发现软件中隐藏的漏洞;填补漏洞路径样本影响分析方面的空白,不依靠复杂的动态分析技术且不带来较大的开销问题,可以与其它灰盒测试技术进行有效结合,在原有测试工具的基础上进一步提升漏洞发现效率,并且直接适用于二进制程序,无需依赖源代码,具有较好的应用前景。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
基于上述的方法,本发明实施例还提供一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的方法。
基于上述的方法,本发明实施例还提供一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现上述的方法。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种程序路径敏感的灰盒测试方法,其特征在于,包含如下内容:
离线训练阶段,利用深度神经网络对样本数据集进行漏洞模式学习,获得程序执行路径的分类器,其中,样本数据集包中包含漏洞程序路径样本数据和无漏洞程序路径样本数据;
在线测试阶段,将分类器集成到模糊测试工具中指导种子文件进行选择测试,优先选择触发漏洞路径的种子输入进行测试并赋予若干变异能量以执行相应变异次数,循环执行,直至中断。
2.根据权利要求1所述的程序路径敏感的灰盒测试方法,其特征在于,深度神经网络选择基于长短期记忆网络LSTM的神经网络,该神经网络包含4层,第一层是embeding嵌入层,将序列中的所有元素映射到固定维度向量中;第二层和第三层是栈式LSTM层,每一层包含64个神经元;最后一层是全连接层,使用sigmoid激活函数,进行二分类;样本数据集中每个样本数据包含用于执行的二进制程序及对应触发漏洞路径的测试用例。
3.根据权利要求1所述的程序路径敏感的灰盒测试方法,其特征在于,利用深度神经网络对样本数据集进行漏洞模式学习,包含如下内容:
A1)对样本数据集中程序进行动态执行,记录执行路径并根据是否存在漏洞做标签记录;
A2)将提取到的执行路径转成用于深度神经网络处理的向量表示;
A3)将向量表示作为深度神经网络模型输入,训练得到用于判定路径是否存在漏洞的程序执行路径的分类器。
4.根据权利要求3所述的程序路径敏感的灰盒测试方法,其特征在于,A1)程序动态执行中,将程序执行路径的每条指令用对应字节码表示,在记录路径过程中不跟入系统自带库函数,并且保留与漏洞特征相关的库函数名。
5.根据权利要求3所述的程序路径敏感的灰盒测试方法,其特征在于,A2)转成向量表示中,程序执行路径中每条指令的字节码作为一个token,将字节码序列利用word2vec训练,输出每条指令的256维向量表示,完成将程序执行路径映射到向量空间。
6.根据权利要求5所述的程序路径敏感的灰盒测试方法,其特征在于,A3)将向量表示作为模型输入中,通过定义程序执行路径最大长度,通过补0或截断操作,获取固定长度的模型输入序列。
7.根据权利要求1所述的程序路径敏感的灰盒测试方法,其特征在于,在线测试阶段中,首先,重构程序执行路径,并将重构后的程序执行路径进行向量表示;然后,利用训练生成的分类器对路径进行漏洞预测,依据预测结果,将预测有漏洞路径和种子输入进行标签和漏洞属性记录,循环执行,优先选择做标签记录的种子输入进行测试,并赋予多变异能量以执行多变异次数,直至被用户中断。
8.根据权利要求7所述的程序路径敏感的灰盒测试方法,其特征在于,为赋予种子输入多变异能量以执行多变异次数,将标记有漏洞种子输入的能量值设定最大值,将标记为无漏洞种子输入的能量值设定为原始值减半。
9.一种程序路径敏感的灰盒测试装置,其特征在于,包含:离线训练模块和在线测试模块,其中,
离线训练模块,用于利用深度神经网络对样本数据集进行漏洞模式学习,获得程序执行路径的分类器,其中,样本数据集包中包含漏洞程序路径样本数据和无漏洞程序路径样本数据;
在线测试模块,用于将分类器集成到模糊测试工具中指导种子文件进行选择测试,优先选择触发漏洞路径的种子输入进行测试并赋予若干变异能量以执行相应变异次数,循环执行,直至中断。
10.根据权利要求9所述的程序路径敏感的灰盒测试装置,其特征在于,所述离线训练模块包含:动态执行单元、向量表示单元和训练学习单元,其中,
动态执行单元,用于对样本数据集中程序进行动态执行,记录执行路径并根据是否存在漏洞做标签记录;
向量表示单元,用于将提取到的执行路径转成用于深度神经网络处理的向量表示;
训练学习单元,用于将向量表示作为深度神经网络模型输入,训练得到用于判定路径是否存在漏洞的程序执行路径的分类器。
CN201910204436.5A 2019-03-18 2019-03-18 一种程序路径敏感的灰盒测试方法及装置 Active CN109902024B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910204436.5A CN109902024B (zh) 2019-03-18 2019-03-18 一种程序路径敏感的灰盒测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910204436.5A CN109902024B (zh) 2019-03-18 2019-03-18 一种程序路径敏感的灰盒测试方法及装置

Publications (2)

Publication Number Publication Date
CN109902024A true CN109902024A (zh) 2019-06-18
CN109902024B CN109902024B (zh) 2022-04-29

Family

ID=66953666

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910204436.5A Active CN109902024B (zh) 2019-03-18 2019-03-18 一种程序路径敏感的灰盒测试方法及装置

Country Status (1)

Country Link
CN (1) CN109902024B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124926A (zh) * 2019-12-25 2020-05-08 支付宝(杭州)信息技术有限公司 模糊测试方法、装置、电子设备及存储介质
CN111191245A (zh) * 2019-12-24 2020-05-22 中国人民解放军战略支援部队信息工程大学 基于路径感知变异策略的模糊测试方法
CN111475820A (zh) * 2020-04-28 2020-07-31 张皓天 基于可执行程序的二进制漏洞检测方法、系统及存储介质
CN111523119A (zh) * 2020-04-26 2020-08-11 南开大学 漏洞检测的方法和装置、电子设备及计算机可读存储介质
CN111897733A (zh) * 2020-08-07 2020-11-06 北京理工大学 一种基于最小集合覆盖的模糊测试方法和装置
CN112069061A (zh) * 2020-08-19 2020-12-11 北京科技大学 深度学习梯度指导变异的软件安全漏洞检测方法及系统
CN112445709A (zh) * 2020-11-30 2021-03-05 安徽工业大学 一种通过gan解决afl测试模型数据不平衡的方法及装置
CN113255810A (zh) * 2021-06-04 2021-08-13 杭州新州网络科技有限公司 基于关键决策逻辑设计测试覆盖率的网络模型测试方法
CN114064506A (zh) * 2021-11-29 2022-02-18 电子科技大学 一种基于深度神经网络的二进制程序模糊测试方法及系统
CN115941358A (zh) * 2023-01-29 2023-04-07 国家工业信息安全发展研究中心 漏洞挖掘方法、装置、终端设备及存储介质
CN117235738A (zh) * 2023-10-11 2023-12-15 内蒙古电力集团蒙电信息通信产业有限责任公司 一种执行路径主动覆盖的软件安全测试方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105487983A (zh) * 2015-12-24 2016-04-13 郑州恩倍网络科技有限公司 基于智能路径引导的敏感点逼近方法
CN107885999A (zh) * 2017-11-08 2018-04-06 华中科技大学 一种基于深度学习的漏洞检测方法及系统
CN108255711A (zh) * 2017-12-29 2018-07-06 湖南优利泰克自动化系统有限公司 一种基于污点分析的plc固件模糊测试系统及测试方法
CN108647520A (zh) * 2018-05-15 2018-10-12 浙江大学 一种基于脆弱性学习的智能模糊测试方法与系统
US20180321918A1 (en) * 2017-05-08 2018-11-08 Datapipe, Inc. System and method for integration, testing, deployment, orchestration, and management of applications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105487983A (zh) * 2015-12-24 2016-04-13 郑州恩倍网络科技有限公司 基于智能路径引导的敏感点逼近方法
US20180321918A1 (en) * 2017-05-08 2018-11-08 Datapipe, Inc. System and method for integration, testing, deployment, orchestration, and management of applications
CN107885999A (zh) * 2017-11-08 2018-04-06 华中科技大学 一种基于深度学习的漏洞检测方法及系统
CN108255711A (zh) * 2017-12-29 2018-07-06 湖南优利泰克自动化系统有限公司 一种基于污点分析的plc固件模糊测试系统及测试方法
CN108647520A (zh) * 2018-05-15 2018-10-12 浙江大学 一种基于脆弱性学习的智能模糊测试方法与系统

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111191245B (zh) * 2019-12-24 2022-06-17 中国人民解放军战略支援部队信息工程大学 基于路径感知变异策略的模糊测试方法
CN111191245A (zh) * 2019-12-24 2020-05-22 中国人民解放军战略支援部队信息工程大学 基于路径感知变异策略的模糊测试方法
CN111124926B (zh) * 2019-12-25 2022-09-16 支付宝(杭州)信息技术有限公司 模糊测试方法、装置、电子设备及存储介质
CN111124926A (zh) * 2019-12-25 2020-05-08 支付宝(杭州)信息技术有限公司 模糊测试方法、装置、电子设备及存储介质
CN111523119A (zh) * 2020-04-26 2020-08-11 南开大学 漏洞检测的方法和装置、电子设备及计算机可读存储介质
CN111475820A (zh) * 2020-04-28 2020-07-31 张皓天 基于可执行程序的二进制漏洞检测方法、系统及存储介质
CN111475820B (zh) * 2020-04-28 2023-08-01 张皓天 基于可执行程序的二进制漏洞检测方法、系统及存储介质
CN111897733A (zh) * 2020-08-07 2020-11-06 北京理工大学 一种基于最小集合覆盖的模糊测试方法和装置
CN111897733B (zh) * 2020-08-07 2023-04-07 北京理工大学 一种基于最小集合覆盖的模糊测试方法和装置
CN112069061A (zh) * 2020-08-19 2020-12-11 北京科技大学 深度学习梯度指导变异的软件安全漏洞检测方法及系统
CN112445709A (zh) * 2020-11-30 2021-03-05 安徽工业大学 一种通过gan解决afl测试模型数据不平衡的方法及装置
CN113255810A (zh) * 2021-06-04 2021-08-13 杭州新州网络科技有限公司 基于关键决策逻辑设计测试覆盖率的网络模型测试方法
CN114064506A (zh) * 2021-11-29 2022-02-18 电子科技大学 一种基于深度神经网络的二进制程序模糊测试方法及系统
CN115941358A (zh) * 2023-01-29 2023-04-07 国家工业信息安全发展研究中心 漏洞挖掘方法、装置、终端设备及存储介质
CN117235738A (zh) * 2023-10-11 2023-12-15 内蒙古电力集团蒙电信息通信产业有限责任公司 一种执行路径主动覆盖的软件安全测试方法

Also Published As

Publication number Publication date
CN109902024B (zh) 2022-04-29

Similar Documents

Publication Publication Date Title
CN109902024A (zh) 一种程序路径敏感的灰盒测试方法及装置
Harer et al. Automated software vulnerability detection with machine learning
Le et al. Deepcva: Automated commit-level vulnerability assessment with deep multi-task learning
Tian et al. BVDetector: A program slice-based binary code vulnerability intelligent detection system
Gupta et al. Novel xgboost tuned machine learning model for software bug prediction
Hu et al. Neural network model extraction attacks in edge devices by hearing architectural hints
CN116049831A (zh) 一种基于静态分析和动态分析的软件漏洞检测方法
Kaur et al. A review on machine-learning based code smell detection techniques in object-oriented software system (s)
Sotgiu et al. Explainability-based debugging of machine learning for vulnerability discovery
Yue et al. DARE: disentanglement-augmented rationale extraction
CN111177731A (zh) 一种基于人工神经网络的软件源代码漏洞检测方法
Zaragoza et al. A two-step method to learn multidimensional Bayesian network classifiers based on mutual information measures
Alsghaier et al. Software fault prediction using whale algorithm with genetics algorithm
Zhao et al. Precise learning of source code contextual semantics via hierarchical dependence structure and graph attention networks
Chen et al. Multi-view learning for parallelism discovery of sequential programs
CN115776401A (zh) 基于少样本学习对网络攻击事件进行溯源的方法、装置
Cheng et al. Blocking bug prediction based on XGBoost with enhanced features
Tang et al. Sevuldet: A semantics-enhanced learnable vulnerability detector
CN115357896A (zh) 一种基于深度学习的定向漏洞挖掘方法
CN113886832A (zh) 智能合约漏洞检测方法、系统、计算机设备和存储介质
CN116702157B (zh) 一种基于神经网络的智能合约漏洞检测方法
Saumya et al. Xstressor: Automatic generation of large-scale worst-case test inputs by inferring path conditions
Seas et al. Automated Vulnerability Detection in Source Code Using Deep Representation Learning
CN116361806A (zh) 基于多示例和注意力机制的智能合约分析方法及装置
CN114780967A (zh) 基于大数据漏洞挖掘的挖掘评估方法及ai漏洞挖掘系统

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