CN112463638B - 基于神经网络的模糊测试方法及计算机可读存储介质 - Google Patents
基于神经网络的模糊测试方法及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112463638B CN112463638B CN202011459487.1A CN202011459487A CN112463638B CN 112463638 B CN112463638 B CN 112463638B CN 202011459487 A CN202011459487 A CN 202011459487A CN 112463638 B CN112463638 B CN 112463638B
- Authority
- CN
- China
- Prior art keywords
- neural network
- edge
- hash
- program
- test
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/045—Combinations of 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于神经网络的模糊测试方法及计算机可读存储介质,方法包括:改进模糊测试工具中的边的哈希计算过程使得每条所述边的哈希值不同,得到改进后的模糊测试工具;基于所述改进后模糊测试工具生成的覆盖信息作为训练集对神经网络进行训练;依据临近边信息挑选出<测试用例,程序边>对,利用训练完成的所述神经网络计算出该输出神经元对输入的梯度,并根据所述梯度的绝对值的大小确定输入中的关键字节,从而对关键字节进行变异生成测试用例集合;使用所述测试用例集进行模糊测试。从而实现了以较小的资源开销探索了程序状态信息。
Description
技术领域
本发明涉及模糊测试技术领域,尤其涉及一种基于神经网络的模糊测试方法及计算机可读存储介质。
背景技术
随着信息时代的进一步深化,各行各业在日常运行中与网络的联系已密不可分。2019年我国5G商用牌照的正式发放,使得我国的互联网发展又进入了一个新时期。5G技术将加速更多行业的数字化转型,使得数字经济更加蓬勃发展。这也预示着互联网上承载的信息将更为丰富。与之相映的是,近年来互联网程序的漏洞数量呈现明显上升趋势,新漏洞从公布到被利用的时间也越来越短。2017年5月爆发的WannaCry勒索病毒,在一天时间内就攻击了全球超过150个国家的300000名用户,造成了超过80亿的损失。这次事件向人们展示了漏洞的严重危害。安全漏洞已是网络安全威胁的根本原因之一。
由于漏洞数量的不断增加和其严重的危害性,漏洞挖掘技术逐渐受到了广泛地关注。现有的漏洞挖掘技术包括静态分析,动态分析,符号执行和模糊测试(Fuzzing)。与其余技术相比较,模糊测试对被测程序的所需信息更少并且可以轻松扩展到大型程序测试。因此,模糊测试成为了最受欢迎的漏洞挖掘技术,在工业界更甚。Adobe,Cisco,Google和Microsoft等知名厂商都将模糊测试作为其安全开发实践的一部分。
现有的模糊测试工具根据其在模糊运行中观察到的语义粒度将模糊测试工具分为三组:黑盒、灰盒和白盒模糊工具。黑盒模糊测试工具不检查被测程序内部状态的特性进行变异,策略简单但盲目性极大;白盒模糊测试工具能够系统探索被测程序的内部状态,但造成较高的资源开销;灰盒测试只利用运行时信息引导变异,实现了一定的开销和效果的平衡。随着机器学习技术浪潮的席卷,越来越多的领域引入机器学习技术。模糊测试领域也开始关注机器学习技术的运用,但整体还不成熟。大部分人运用机器学习技术去学习输入的结构,只有少部分的研究关注识别输入中的关键字节。更重要的是,机器学习与模糊测试分属不同的领域,机器学习技术要想在模糊测试领域充分发挥其优势,需要对模糊测试的特性进行研究并关注其影响机器学习技术发挥的缺陷。例如,被广泛用于生成各模糊测试工具初始数据集的AFL中存在的哈希冲突问题常被忽略。而这一问题会导致同于机器学习方法的训练集是粗糙的。恰恰在机器学习领域,高质量的数据集对神经网络建模的效果至关重要。
针对传统的模糊测试技术以及引入机器学习的模糊测试技术中存在的直接使用AFL生成的粗糙数据集作为机器学习方法训练集的不足以及在盲目地挑选种子文件进行变异的不足,现有技术中缺乏一种基于神经网络的模糊测试方法。
以上背景技术内容的公开仅用于辅助理解本发明的构思及技术方案,其并不必然属于本专利申请的现有技术,在没有明确的证据表明上述内容在本专利申请的申请日已经公开的情况下,上述背景技术不应当用于评价本申请的新颖性和创造性。
发明内容
本发明为了解决现有的问题,提供一种基于神经网络的模糊测试方法及计算机可读存储介质。
为了解决上述问题,本发明采用的技术方案如下所述:
一种基于神经网络的模糊测试方法,包括如下步骤:S1:改进模糊测试工具中的边的哈希计算过程使得每条所述边的哈希值不同,得到改进后的模糊测试工具;S2:基于所述改进后模糊测试工具生成的覆盖信息作为训练集对神经网络进行训练;S3:依据临近边信息挑选出<测试用例,程序边>对,利用训练完成的所述神经网络计算出该输出神经元对输入的梯度,并根据所述梯度的绝对值的大小确定输入中的关键字节,从而对关键字节进行变异生成测试用例集合;S4:使用所述测试用例集进行模糊测试。
优选地,在模糊测试工具中对不同类型的基本块的边通过不同的哈希运算得到的哈希值作为在位图中的键值,从而生成覆盖信息作为神经网络训练集;所述基本块分为两种类型:只有一个前驱的基本块;有多个前驱的基本块。
优选地,在模糊测试工具中的所述只有一个前驱的基本块B和它的唯一前驱基本块A,边的哈希计算引入公式表达如下:
Fsingle(cur,prev):c
其中,prev和cur分别是基本块A和B的编号,参数c是一个唯一的常数。
优选地,在所述有多个前驱的基本块的所有边的哈希值获取之后,再挑选未被使用的哈希值一一赋值所述参数c;所述参数c值将被硬编码在边的到达块中。
优选地,在模糊测试工具中的所述有多个前驱的基本块包括:使用Fmul公式能够计算出唯一哈希值的基本块归为已解决的基本块集合,所述Fmul公式为:
其中,<x,y,z>是需要确定的参数,对于不同的边取不同的值;
否则,归为未解决的基本块集合。
优选地,对于所述未解决集合中的基本块,为基本块A→B引入哈希算法如下:
Fhash(cur,prev)hash_table_laokup(cur,prev)
其中,prev和cur分别是基本块A和B的编号值,构建一个哈希表,对所有以未解决的基本块结尾的边使用不同于其他边的唯一哈希值。
优选地,所述神经网络是前向全连接神经网络,采用所述前向全连接神经网络对程序分支行为进行近似。
优选地,采用了基于梯度的搜索变异模式对关键字节进行变异,具体包括:S31:依据所述梯度的绝对值降序排列输入中的字节;S32:将所述字节划分成多个组,同一组中的字节在变异阶段一同变异;对于所述组中的字节数量从2开始,然后指数增长该数;在执行过程中,进行多轮迭代,每轮迭代依据每个字节对应梯度的符号选定变异方向,每次变异的步长为1。
优选地,还包括:S5:在所述模糊测试的过程中,所述神经网络的行为与预期行为不匹配时,对所述神经网络进行精炼;所述精炼包括:当前训练集中能触发程序新分支的种子先被保留,在新的所述测试用例生成后,识别出能达到新的程序覆盖的测试用例,将所述测试用例与保留的种子合并形成新的训练集;所述神经网络根据所述新的训练集重新训练,学习新的程序状态,更新网络结构。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述方法的步骤。
本发明的有益效果为:提供一种基于神经网络的模糊测试方法及计算机可读存储介质,通过简单高效的变异策略用于生成测试用例集;进一步地,本发明中的神经网络结构,能够进行快速地训练和计算梯度信息,由此得到程序中关键信息,从而实现了以较小的资源开销探索了程序状态信息。
附图说明
图1是本发明实施例中一种基于神经网络的模糊测试方法的示意图。
图2是本发明实施例中用于解释临近边信息在变异策略中作用的示意图。
图3是本发明实施例中一种基于梯度的搜索变异模式对关键字节进行变异的方法示意图。
图4是本发明实施例中又一种基于神经网络的模糊测试方法的示意图。
图5(a)-图5(d)是本发明实施例中本方法和NEUZZ方法的结果示意图。
具体实施方式
为了使本发明实施例所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
需要说明的是,当元件被称为“固定于”或“设置于”另一个元件,它可以直接在另一个元件上或者间接在该另一个元件上。当一个元件被称为是“连接于”另一个元件,它可以是直接连接到另一个元件或间接连接至该另一个元件上。另外,连接既可以是用于固定作用也可以是用于电路连通作用。
需要理解的是,术语“长度”、“宽度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明实施例和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多该特征。在本发明实施例的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
AFL(American Fuzzy Lop)是由安全研究员Michal Zalewski(@lcamtuf)开发的一款基于覆盖引导(Coverage-guided)的模糊测试工具,它通过记录输入样本的代码覆盖率,从而调整输入样本以提高覆盖率,增加发现漏洞的概率。可以理解的是,本发明的方法不仅适用于AFL也适用于其他类似的的模糊测试工具。
本发明引入神经网络对模糊测试的盲目变异进行优化,同时在将神经网络运用至模糊测试领域过程中,关注了模糊测试领域的特性,进而做出了相应的优化使得神经网络的效果能得到充分地发挥。本发明主要分为两个步骤:建模程序分支行为和基于临近边和梯度信息的测试用例变异。在建模程序分支行为阶段,基于对模糊测试领域特性的研究,发现AFL这一被广泛用于生成初始测试用例集的程序中存在的哈希冲突问题常被忽略。而神经网络建模的效果又与训练集的质量高度相关。因此,本发明第一步:对模糊测试工具中的哈希冲突问题进行缓解,进而基于改进后的模糊测试工具生成的准确覆盖信息对神经网络进行训练,从而建模程序的分支行为。第二步:在基于临近边和梯度信息的测试用例变异环节,本方案依据临近边信息挑选出合适的<测试用例,程序边>对,接着利用上一环节训练完成的神经网络计算出该输出神经元(程序分支)对输入(以byte为单位的测试用例)的梯度,并根据梯度绝对值的大小确定输入中的关键字节。从而在变异时主要关注关键字节,降低传统模糊测试变异的盲目性。如下的描述会以模糊测试工具AFL为例进行说明,但是不能视为对本发明的限制。
如图1所示,本发明提供一种基于神经网络的模糊测试方法,包括如下步骤:
S1:改进模糊测试工具中的边的哈希计算过程使得每条所述边的哈希值不同,得到改进后的模糊测试工具;
S2:基于所述改进后模糊测试工具生成的覆盖信息作为训练集对神经网络进行训练;
S3:依据临近边信息挑选出<测试用例,程序边>对,利用训练完成的所述神经网络计算出该输出神经元对输入的梯度,并根据所述梯度的绝对值的大小确定输入中的关键字节,从而对关键字节进行变异生成测试用例集合;
S4:使用所述测试用例集进行模糊测试。
如图2所示,是本发明实施例中基于神经网络的模糊测试系统结构示意图。
本发明通过缓解模糊测试工具中的哈希冲突,从而生成了高质量的数据集。这样能最大限度地发挥神经网络的效果;进一步地,关注了程序中可利用的临近边信息,对选取种子(程序的输入),边这样一对信息提供了指导。
以模糊测试工具AFL为例,它利用一个默认大小为64KB的位图(bitmap)去记录程序的边覆盖信息。位图的每一个字节表示一条特定的边的统计值(如执行次数)。每一条边通过哈希运算得到的值作为它在位图中的键值。因此,在这种模式中就存在着哈希冲突的问题。例如,两条边通过运算可能会对应着同一个哈希值。因此模糊测试工具就无法区分这些边,从而导致覆盖信息不准确。具体来说,AFL在对目标程序插桩时为每一个基本块随机分配了一个值作为它的编号。在计算边的编号,例如边A→B,AFL使用下面的哈希计算方式:
其中,pre和cur分别表示基本块A和B的编号。由于赋予基本块数值时的随机性,两条不同的边通过该式可能会计算出同一个哈希值,从而造成哈希冲突。
如前所述,AFL使用一个固定的公式去计算每一条边的哈希值。这种方式计算便捷但是易于造成冲突。于是,可以对不同类型的边使用不同的哈希公式来完善哈希的计算过程,以消除哈希冲突,与此同时保留哈希计算和覆盖率追踪的速度。
不同于现有技术,本发明在模糊测试工具中对不同类型的基本块的边通过不同的哈希运算得到的哈希值作为在位图中的键值,从而生成覆盖信息作为神经网络训练集;基本块分为两种类型:只有一个前驱的基本块;有多个前驱的基本块。
具体地,对于给定的两个基本块A和B,它们的编号分别为pre和cur,计算边A→B的哈希值可以按照下面的公式:
其中,<x,y,z>是需要确定的参数,它们对于不同的边可以取不同的值。AFL所使用的计算哈希的公式是该公式的特殊形式,即对所有的基本块取<x=0,y=1,z=0>。因此Fmul的计算过程和AFL是一致的,运行开销也一致。
对于每一条边都为<x,y,z>赋值无疑是一个复杂的过程。但是通过对程序中边的分析基本块可以被分为两种类型:当前边的到达块只有一个前驱;当前边的到达块有多个前驱。这样就可以为每一个到达块选定一系列参数,而不是每一条边。同时,为了简化计算过程,给定一个y值为每个基本块共享,每个基本块在参数<x,z>会有差异。因此,给定一个程序,便可以尝试去为每一个基本块找到一组参数的值,从而确保利用公式Fmul计算出的边的哈希值是唯一的。使用贪心算法去为每一个基本块寻找合适的参数值。一旦每一个基本块的参数值都确定了,就可以利用哈希值区分任意两条边。下面对每种类型基本块确定参数的方法进行详细介绍。
对于只有一个前驱的基本块而言,可以直接为这条边分配一个与其他边的哈希值不冲突的数值,并存储在该边的到达块中,而不用使用Fmul公式为边计算一个哈希值。因此,对于一个基本块B和它的唯一前驱基本块A,不需要找到一组参数值<x,y,z>,只要为这条边赋予一个唯一的数值即可。为这种类型边的哈希计算引入公式表达如下:
Fsingle(cur,prev):c
其中,prev和cur分别是基本块A和B的编号,参数c是一个唯一的常数。为了避免c值于其他边的哈希值冲突,可以在其他类型的所有边的哈希值获取之后,再挑选未被使用的哈希值一一赋值。这个c值将被硬编码在边的到达块中。因此在这种类型边的哈希值计算中,该方法快于AFL。
对于有多个前驱的基本块而言,若基本块B有多个前驱,那么就会有多条边到达基本块B,因此就需要动态地计算基本块B中的参数值。一般地,使用Fmul公式计算边的哈希值,但是由于基本块编号的随机性,并不能保证使用Fmul就能解决这一类型的哈希冲突。因此在这一计算过程,将那些使用Fmul公式能够计算出唯一哈希值的基本块归为已解决的基本块集合中,否则,归为未解决的基本块集合。
对于未解决集合中的基本块,为其边A→B引入另一个哈希算法:
Fhash(cur,prgv):hash_table_lookup(cur,prev)
其中,prev和cur分别是基本块A和B的编号值。它构建一个哈希表,对所有以未解决的基本块结尾的边使用不同于其他边的唯一哈希值。
万能逼近定理揭示了任何函数都可以被多层神经网络以任意精度逼近,同时神经网络支持有效地梯度计算。因此,本发明中使用了一个前向全连接神经网络对程序的分支行为进行近似。前向的神经网络架构能高效地完成训练以及计算梯度。在神经网络输出表示上,每一个输出神经元代表程序中一条具体的边,其0-1之间的值表征输入触发改变的可能性。在神经网络输入表示上,使用了一种较细的粒度方案,即将每个输入单元视为测试用例中的一个字节。但是真实环境中的测试用例是变长的,而神经网络的输入必须是定长的。因此,本方案可根据测试用例集动态设定一个最大值,对于任意长度小于该最大值的测试用例填充0字节。
一旦神经网络训练完成,可以计算边相对于输入的梯度,从而识别出对于特定边具有关键影响的输入字节。对于模糊测试领域而言,该过程就是定位关键分支处判定条件中的输入字节。在这一过程,需要挑选边和输入进行梯度计算。有别于其他随机匹配边和输入的方法,根据临近边信息,挑选具有关联的边和输入进行梯度计算。因为只有具有关联的边与输入计算出来的梯度,才能使得即使是一个简单的基于梯度的变异策略也能生成高质量的测试用例。这样一来,就提供了一种简单却高效的解决方案。具体地,对于随机挑选的边和输入计算出的梯度对输入的变异指导很难有效地生成可以触发该边的测试用例。
如图2所示,一个种子S能够触发边B和F,一条随机匹配的边为H。这时,由于H所在的路径偏离种子S的路径较远,边H对种子S的梯度信息指导生成的测试用例能触发边H的概率很小,从而形成了一次无用的计算。而此时,匹配边E与种子S,就能发现即使设计简单的基于它们梯度信息的变异策略也能生成触发边E的测试用例。
在确定了进行梯度计算的边和输入之后,本发明采用了一种基于梯度的搜索变异模式。首先,依据梯度的绝对值降序排列输入中的字节。然后将这些字节划分成一些组,同一组中的字节在变异阶段一同变异。对于一组中的字节数量可以从一个较小的数开始,然后指数增长该数。在执行过程中,进行多轮迭代,每轮迭代依据每个字节对应梯度的符号选定变异方向,每次变异的步长为1。值得注意的是,每个字节变异的范围为0-255的合法范围。
如图3所示,采用了基于梯度的搜索变异模式对关键字节进行变异,具体包括:
S31:依据所述梯度的绝对值降序排列输入中的字节;
S32:将所述字节划分成多个组,同一组中的字节在变异阶段一同变异;对于所述组中的字节数量从2开始,然后指数增长该数;在执行过程中,进行多轮迭代,每轮迭代依据每个字节对应梯度的符号选定变异方向,每次变异的步长为1。
为了达到更高的准确性,当在模糊过程中观察到程序行为出现差异时,即神经网络的行为与预期行为不匹配时,本方案会对神经网络进行精炼。具体地,当前能触发程序新分支的种子先被保留。在新的测试用例生成后,识别出那些能达到新的程序覆盖的测试用例,将这些测试用例与原先保留的种子合并形成新的训练集。神经网络根据当前的训练集重新训练,学习新的程序状态,更新网络结构。
如图4所示,一种基于神经网络的模糊测试方法还包括:
S5:在所述模糊测试的过程中,所述神经网络的行为与预期行为不匹配时,对所述神经网络进行精炼;
所述精炼包括:当前训练集中能触发程序新分支的种子先被保留,在新的所述测试用例生成后,识别出能达到新的程序覆盖的测试用例,将所述测试用例与保留的种子合并形成新的训练集;
所述神经网络根据所述新的训练集重新训练,学习新的程序状态,更新网络结构。
现有的模糊测试方法主要是依靠信息流分析相关技术或符号执行技术,获得数据在系统中转移的有关信息;然后进行判断或者约束求解。这些方法虽然能够为模糊测试提供定向指导,但其带来的资源消耗使得这些方法不具备良好的可扩展性。另一方面,近年来涌现了许多利用机器学习技术提升模糊测试效果的方案。但它们只是简单地将两者结合在一起,并没有深入研究模糊测试领域中会给机器学习效果带来损失的一些特性。
为了证实本方法的有效性,在nm,objdump,readlef和size四个程序上对比了本方法和当前效果显著的NEUZZ方法在边覆盖了上的探索情况。表1对两种方法在四个程序上探索的边的数量表现进行了总结,如表1所示。
表1实验结果
如图5(a)-5(d)所示,两种方法在nm,objdump,readlef和size四个程序中执行24小时的探索边的情况示意图,图中实线表示本发明工具24小时探索到的程序边的数量变化,虚线表示Neuzz 24小时探索到的程序边的数量变化。这些结果充分地说明了本发明工具能更加高效地进行边覆盖从而达到更好的漏洞挖掘效果。
本发明首先通过一种更细粒度的哈希模式缓解AFL中的哈希冲突,使得能够收集到准确的覆盖信息进行神经网络训练。神经网络用于建模程序的分支行为,从而能够进行梯度计算识别出输入中的关键字节。最后,结合临近边与梯度信息,本发明设计了一种简单高效的变异策略用于生成测试用例集。传统的模糊测试方案要降低模糊测试的盲目性就需要增加资源开销,无法做到同时地优化。本发明中的神经网络结构,能够进行快速地训练和计算梯度信息,由此得到程序中关键信息,从而实现了以较小的资源开销探索了程序状态信息。
本申请实施例还提供一种控制装置,包括处理器和用于存储计算机程序的存储介质;其中,处理器用于执行所述计算机程序时至少执行如上所述的方法。
本申请实施例还提供一种存储介质,用于存储计算机程序,该计算机程序被执行时至少执行如上所述的方法。
本申请实施例还提供一种处理器,所述处理器执行计算机程序,至少执行如上所述的方法。
所述存储介质可以由任何类型的易失性或非易失性存储设备、或者它们的组合来实现。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,ErasableProgrammable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,ElectricallyErasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,FerromagneticRandom Access Memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,SynchronousStatic Random Access Memory)、动态随机存取存储器(DRAM,DynamicRandom AccessMemory)、同步动态随机存取存储器(SDRAM,Synchronous Dynamic RandomAccessMemory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double DataRateSynchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本发明实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上内容是结合具体的优选实施方式对本发明所做的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明的保护范围。
Claims (5)
1.一种基于神经网络的模糊测试方法,其特征在于,包括如下步骤:
S1:改进模糊测试工具中的边的哈希计算过程使得每条所述边的哈希值不同,得到改进后的模糊测试工具;
S2:基于所述改进后的模糊测试工具生成的覆盖信息作为训练集对神经网络进行训练;
S3:依据临近边信息挑选出<测试用例,程序边>对,利用训练完成的所述神经网络计算出输出神经元对输入的梯度,并根据所述梯度的绝对值的大小确定输入中的关键字节,从而对关键字节进行变异生成测试用例集合;
S4:使用所述测试用例集进行模糊测试;
步骤S1中,哈希计算时,为每一个到达块选定一系列参数,而不是每一条边;具体如下:
对于只有一个前驱的基本块,直接为这条边分配一个与其他边的哈希值不冲突的数值,并存储在该边的到达块中,而不用使用Fmul公式为边计算一个哈希值;
对于有多个前驱的基本块,动态地计算基本块中的参数值;在这一计算过程,将那些使用Fmul公式能够计算出唯一哈希值的基本块归为已解决的基本块集合中,否则,归为未解决的基本块集合;
对于未解决集合中的基本块,为其边A→B引入另一个哈希算法:
Fhash(cur,prev):hash_table_lookup(cur,prev)
其中,prev和cur分别是基本块A和B的编号值,通过该哈希算法构建一个哈希表,对所有以未解决的基本块结尾的边使用不同于其他边的唯一哈希值。
2.如权利要求1所述的基于神经网络的模糊测试方法,其特征在于,所述神经网络是前向全连接神经网络,采用所述前向全连接神经网络对程序分支行为进行近似。
3.如权利要求2所述的基于神经网络的模糊测试方法,其特征在于,采用了基于梯度的搜索变异模式对关键字节进行变异,具体包括:
S31:依据所述梯度的绝对值降序排列输入中的字节;
S32:将所述字节划分成多个组,同一组中的字节在变异阶段一同变异;对于所述组中的字节数量从2开始,然后指数增长该字节数量;在执行过程中,进行多轮迭代,每轮迭代依据每个字节对应梯度的符号选定变异方向,每次变异的步长为1。
4.如权利要求1-3任一所述的基于神经网络的模糊测试方法,其特征在于,还包括:
S5:在所述模糊测试的过程中,所述神经网络的行为与预期行为不匹配时,对所述神经网络进行精炼;
所述精炼包括:当前训练集中能触发程序新分支的种子先被保留,在新的所述测试用例生成后,识别出能达到新的程序覆盖的测试用例,将所述测试用例与保留的种子合并形成新的训练集;
所述神经网络根据所述新的训练集重新训练,学习新的程序状态,更新网络结构。
5.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011459487.1A CN112463638B (zh) | 2020-12-11 | 2020-12-11 | 基于神经网络的模糊测试方法及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011459487.1A CN112463638B (zh) | 2020-12-11 | 2020-12-11 | 基于神经网络的模糊测试方法及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112463638A CN112463638A (zh) | 2021-03-09 |
CN112463638B true CN112463638B (zh) | 2022-09-20 |
Family
ID=74803735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011459487.1A Active CN112463638B (zh) | 2020-12-11 | 2020-12-11 | 基于神经网络的模糊测试方法及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463638B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948277B (zh) * | 2021-04-30 | 2024-06-14 | 上海大学 | 一种基于耦合自编码器的模糊测试用例生成系统和方法 |
CN114064499B (zh) * | 2021-11-23 | 2023-04-07 | 电子科技大学 | 一种黑盒模糊测试方法、系统、电子设备及存储介质 |
CN115237797B (zh) * | 2022-08-03 | 2023-09-08 | 中国电子科技集团公司信息科学研究院 | 一种基于覆盖率制导的模糊测试方法和装置 |
CN115878498A (zh) * | 2023-03-03 | 2023-03-31 | 中国电子科技集团公司第三十研究所 | 一种基于机器学习预测程序行为的关键字节提取方法 |
CN116361190B (zh) * | 2023-04-17 | 2023-12-05 | 南京航空航天大学 | 一种基于神经元相关性指导的深度学习变异测试方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109259784A (zh) * | 2018-08-27 | 2019-01-25 | 上海铱硙医疗科技有限公司 | 脑梗塞的ai预测方法、装置、设备及存储介质 |
WO2019236949A1 (en) * | 2018-06-08 | 2019-12-12 | Avexis Inc. | Cell-based assay for measuring drug product potency |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452526B2 (en) * | 2017-06-15 | 2019-10-22 | Microsoft Technology Licensing, Llc | Machine learning for constrained mutation-based fuzz testing |
CN108427643B (zh) * | 2018-03-21 | 2020-12-08 | 北京理工大学 | 基于多种群遗传算法的二进制程序模糊测试方法 |
CN108647520B (zh) * | 2018-05-15 | 2020-05-29 | 浙江大学 | 一种基于脆弱性学习的智能模糊测试方法与系统 |
CN110336827B (zh) * | 2019-07-15 | 2021-06-18 | 北京工业大学 | 一种基于异常字段定位的Modbus TCP协议模糊测试方法 |
CN110597734B (zh) * | 2019-09-23 | 2021-06-01 | 电子科技大学 | 一种适用于工控私有协议的模糊测试用例生成方法 |
CN111767546B (zh) * | 2020-06-17 | 2022-09-16 | 北京理工大学 | 一种基于深度学习的输入结构推断方法和装置 |
-
2020
- 2020-12-11 CN CN202011459487.1A patent/CN112463638B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019236949A1 (en) * | 2018-06-08 | 2019-12-12 | Avexis Inc. | Cell-based assay for measuring drug product potency |
CN109259784A (zh) * | 2018-08-27 | 2019-01-25 | 上海铱硙医疗科技有限公司 | 脑梗塞的ai预测方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112463638A (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112463638B (zh) | 基于神经网络的模糊测试方法及计算机可读存储介质 | |
Hu et al. | A distributed framework for large-scale protein-protein interaction data analysis and prediction using mapreduce | |
Narayanan et al. | An FPGA implementation of decision tree classification | |
Zhang | Protein interaction networks: computational analysis | |
Huang et al. | SLNL: a novel method for gene selection and phenotype classification | |
CN110557382A (zh) | 一种利用域名共现关系的恶意域名检测方法及系统 | |
Ma et al. | An integrative framework for protein interaction network and methylation data to discover epigenetic modules | |
Ma et al. | Extracting stage-specific and dynamic modules through analyzing multiple networks associated with cancer progression | |
Zaman et al. | Feature selection for online streaming high-dimensional data: A state-of-the-art review | |
Papadopoulos et al. | Skygraph: an algorithm for important subgraph discovery in relational graphs | |
CN110442800B (zh) | 一种融合节点属性和图结构的半监督社区发现方法 | |
Zhao et al. | An improve feature selection algorithm for defect detection of glass bottles | |
Fang et al. | Domain-embeddings based DGA detection with incremental training method | |
Noppel et al. | Disguising attacks with explanation-aware backdoors | |
Chen et al. | Forest Fire Clustering for single-cell sequencing combines iterative label propagation with parallelized Monte Carlo simulations | |
Pfeifer et al. | Network module detection from multi-modal node features with a greedy decision forest for actionable explainable AI | |
Wong et al. | PLW: Probabilistic Local Walks for detecting protein complexes from protein interaction networks | |
Feng et al. | Hierarchical multi-label classification based on LSTM network and Bayesian decision theory for LncRNA function prediction | |
Huber et al. | MS2DeepScore-a novel deep learning similarity measure for mass fragmentation spectrum comparisons | |
Itzhacky et al. | Prediction of cancer dependencies from expression data using deep learning | |
Withnall et al. | Building attention and edge convolution neural networks for bioactivity and physical-chemical property prediction | |
CN110766338A (zh) | 一种基于人工智能和区块链技术eos.io的dpos分叉预测模型方法 | |
Turner et al. | rG4detector: convolutional neural network to predict RNA G-quadruplex propensity based on rG4-seq data | |
Riera Roca | Theoretical Models and Computational Techniques for the Analysis of Microbial Communities | |
Wang et al. | Splicescanner: An accurate and interpretable deep learning-based method for splice site prediction |
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 |