CN111897729B - 基于TensorFuzz的深度神经网络模糊测试框架和测试方法 - Google Patents
基于TensorFuzz的深度神经网络模糊测试框架和测试方法 Download PDFInfo
- Publication number
- CN111897729B CN111897729B CN202010765951.3A CN202010765951A CN111897729B CN 111897729 B CN111897729 B CN 111897729B CN 202010765951 A CN202010765951 A CN 202010765951A CN 111897729 B CN111897729 B CN 111897729B
- Authority
- CN
- China
- Prior art keywords
- neuron
- test
- test case
- neural network
- coverage
- 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
-
- 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
- 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
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Abstract
本发明公开了一种基于TensorFuzz的深度神经网络模糊测试框架和方法。采用配置的变异方式对从测试用例池中提取的测试用例进行变异,将变异后的测试用例作为当前测试用例,加载到深度神经网络模糊测试模型中进行处理;采用配置的覆盖分析度量标准,确定当前测试用例是否触发了新的覆盖;如果是,则将当前测试用例增加到所述测试用例池中;根据目标函数中的模糊测试目标,在当前测试用例触发“崩溃”时,将当前测试用例增加到所述测试用例池中;根据目标函数中的终止条件,如果判断满足终止条件,则结束模糊测试,否则从测试用例池中获取下一个测试用例,继续测试。使用本发明提高了模糊测试的效率和漏洞发现能力。
Description
技术领域
本发明属于信息安全领域,尤其涉及一种基于TensorFuzz的深度神经网络模糊测试框架和测试方法。
背景技术
模糊测试技术在传统漏洞挖掘领域占有举足轻重的地位,由于其简单粗暴且高效可行的优势,被工程界普遍使用和推广,同时也吸引了大量的研究人员,目前已成为发现漏洞和崩溃的最有效的测试技术之一。因此,当深度神经网络面临安全挑战时,研究人员尝试应用模糊测试技术挖掘其安全问题。由于深度神经网络与传统程序的巨大不同,模糊测试技术不能直接应用,特别是需要在安全分析、覆盖分析、变异等环节作出调整。
TensorFuzz是基于覆盖导向的深度神经网络模糊测试工具之一,2018年由Google安全研究员Augustus Odena等人提出,同时开源了TensorFuzz的源码。它可以对深度学习模型进行模糊测试,并挖掘可能存在的安全漏洞。
TensorFuzz实现了覆盖导向的模糊测试技术在深度神经网络安全研究中的应用。使用时,首先需要设置模糊测试的目标,之后基于用户提供的初始测试用例及变异产生的新的测试用例运行被测程序,并从这些运行中收集神经元的激活信息用于后续覆盖分析及安全分析。TensorFuzz并不会保存所有变异生成的新的测试用例,而仅仅保存那些“有趣”的测试用例,即触发新覆盖的测试用例。TensorFuzz基于用户提供的初始测试用例及这些“有趣”的测试用例,不断重复上述过程,直至触发crash——“崩溃”。
TensorFuzz的基本流程如图1所示。其包括如下步骤:
步骤1、通过目标函数设置模糊测试的目标,并把用户提供的初始测试用例加载到测试用例池中;
步骤2、从测试用例池中获取下一个测试用例;
步骤3、采用添加高斯噪声的方式,重复变异当前测试用例,然后输入给深度神经网络;
步骤4、如果经过变异生成的新的测试用例触发了新覆盖,则把这一测试用例加入到测试用例池中;
如果测试用例触发了crash,则停止模糊测试;否则转到步骤2。
TensorFuzz成功地应用了模糊测试技术并取得了很好的效果,但它仍存在以下问题。首先,TensorFuzz的执行流程与传统模糊测试有差异,其触发“crash”后模糊测试即停止,而深度神经网络安全研究通常需要大量触发“漏洞”的测试用例进行后续研究;由于深度神经网络的可解释性不佳,已有研究的覆盖率度量标准(包括TensorFuzz采用的覆盖分析方法),很难通过理论分析论证其合理性,且缺乏深入的分析比较;TensorFuzz采用的变异策略较为单一,且其触发“crash”的能力与效率较差。
发明内容
有鉴于此,本发明提供了一种基于TensorFuzz的深度神经网络模糊测试框架和测试方法,提高了模糊测试的效率和漏洞发现能力。
为了解决上述技术问题,本发明是这样实现的:
一种基于TensorFuzz的深度神经网络模糊测试框架,包括:测试用例池、选择输入模块、可配置的变异模块、深度神经网络模糊测试模型、可配置的覆盖分析模块、目标函数判断模块和安全分析模块;
所述选择输入模块,用于从测试用例池中获取测试用例;
所述可配置的变异模块,用于根据配置选择,采用配置的变异方式对选择输入模块获取的测试用例进行变异,将变异后的测试用例作为当前测试用例,加载到所述深度神经网络模糊测试模型中进行处理;
所述可配置的覆盖分析模块,用于根据配置选择,采用配置的覆盖分析度量标准,确定当前测试用例是否触发了新的覆盖;如果是,则将当前测试用例增加到所述测试用例池中;
所述目标函数判断模块依据目标函数进行判断,所述目标函数包括模糊测试的目标和终止条件;当根据模糊测试的目标判定当前测试用例触发“崩溃”时,通知安全分析模块工作;当根据模糊测试的终止条件判定满足终止条件时,模糊测试结束,否则继续进行变异、测试。
所述安全分析模块,用于接收到目标函数判断模块的通知时,记录与“崩溃”相关的信息,将触发“崩溃”的当前测试用例增加到所述测试用例池中,继续进行变异、测试。
优选地,针对图像类型的测试用例,所述可配置的变异模块中的可选变异策略为添加椒盐噪声、添加泊松噪声、添加区域遮挡、图像平移、图像旋转和随机选择中的一种或两种以上的组合;所述随机选择是指从可选变异策略中随机选择一种。
优选地,所述可配置的覆盖分析模块中可选覆盖分析度量标准为神经元覆盖率、k-多节神经元覆盖率、神经元边界覆盖率、神经元强激活覆盖率和top-k神经元覆盖率中的一种或两种以上的组合;
定义在深度神经网络训练过程中,获取的深度神经网络中各神经元输出值的最大值与最小值为上下界;在模糊测试过程中,根据神经元输出值将神经元划分为主要功能区和边界情况:上下界之间的区间为神经元的主要功能区,低于下界的区间为神经元的下边界情况,高于上界的区间为神经元的上边界情况;下边界情况和上边界情况同属于边界情况;将所述主要功能区等分为k个小节,即认为每个神经元存在k种状态;那么:
所述神经元覆盖率是指深度神经网络中处于激活状态神经元的比例;
所述k-多节神经元覆盖率是指深度神经网络中所有神经元主要功能区被触发的状态数之和与所有神经元的状态总数的比值;
所述神经元边界覆盖率是指触发到边界情况的神经元个数与神经元总个数2倍的比值;
所述神经元强激活覆盖率是指触发到上边界情况的神经元个数与神经元总个数的比值;
所述top-k神经元覆盖率以深度神经网络的层为考量单位,统计深度神经网络的每一层中曾经为输出值前k高的神经元数量,将所有层的前k高的神经元数量相加除以深度神经网络中神经元总数,得到的比值作为top-k神经元覆盖率。
优选地,所述终止条件是测试时间上限、循环次数上限或者是人为终止信号。
本发明还提供了一种基于TensorFuzz的深度神经网络模糊测试方法,包括:
步骤1、设置目标函数;所述目标函数包括模糊测试的目标和终止条件;
步骤2、从测试用例池中获取测试用例;
步骤3、根据配置选择,采用配置的变异方式对获取的测试用例进行变异,将变异后的测试用例作为当前测试用例,加载到深度神经网络模糊测试模型中进行处理;
步骤4、根据配置选择,采用配置的覆盖分析度量标准,确定当前测试用例是否触发了新的覆盖;如果是,则将当前测试用例增加到所述测试用例池中;
步骤5、根据目标函数的模糊测试目标,在当前测试用例触发“崩溃”时,将当前测试用例增加到所述测试用例池中;根据目标函数的终止条件,判断是否满足终止条件,如果是,则结束模糊测试,否则从测试用例池中获取下一个测试用例,重复步骤3-5,直到触发了目标函数的终止条件,结束模糊测试。
优选地,当测试用例为图像时,步骤3可选的变异策略为添加椒盐噪声、添加泊松噪声、添加区域遮挡、图像平移、图像旋转和随机选择中的两种或两种以上的组合;所述随机选择是指从可选变异策略中随机选择一种。
优选地,步骤4可选的覆盖分析度量标准为神经元覆盖率、k-多节神经元覆盖率、神经元边界覆盖率、神经元强激活覆盖率和top-k神经元覆盖率中的两种或两种以上的组合;
定义在深度神经网络训练过程中,获取的深度神经网络中各神经元输出值的最大值与最小值为上下界;在模糊测试过程中,根据神经元输出值将神经元划分为主要功能区和边界情况:上下界之间的区间为神经元的主要功能区,低于下界的区间为神经元的下边界情况,高于上界的区间为神经元的上边界情况;下边界情况和上边界情况同属于边界情况;将所述主要功能区等分为k个小节,即认为每个神经元存在k种状态;那么:
所述神经元覆盖率是指深度神经网络中处于激活状态神经元的比例;
所述k-多节神经元覆盖率是指深度神经网络中所有神经元主要功能区被触发的状态数之和与所有神经元的状态总数的比值;
所述神经元边界覆盖率是指触发到边界情况的神经元个数与神经元总个数2倍的比值;
所述神经元强激活覆盖率是指触发到上边界情况的神经元个数与神经元总个数的比值;
所述top-k神经元覆盖率以深度神经网络的层为考量单位,统计深度神经网络的每一层中曾经为输出值前k高的神经元数量,将所有层的前k高的神经元数量相加除以深度神经网络中神经元总数,得到的比值作为top-k神经元覆盖率。
优选地,所述终止条件是测试时间上限、循环次数上限或者是人为终止信号。
通过修改执行流程、丰富覆盖率度量标准与变异策略,本发明实现了对TensorFuzz的优化:
(1)本发明首先对TensorFuzz的执行流程做出了修改,使其在执行设定的时间、次数后终止或人为终止,并保留期间触发“crash”的测试用例。在深度神经网络模糊测试中,触发“crash”的测试用例往往不会触发新覆盖,所以通常不会被保留。而保留触发“crash”的测试用例的好处在于:首先,这些触发“crash”的测试用例能够加大有用测试用例的数量,从而可以采用这些测试用例对其他模型进行再训练,例如对抗攻击研究中往往通过利用对抗样本对模型再训练的方式提高模型的鲁棒性;其次,在触发“crash”的测试用例的基础上继续进行模糊测试往往容易触发更多“crash”。因此,通过保留触发“crash”的测试用例,在相同的实验环境下本发明生成的触发“crash”的测试用例数量相比TensorFuzz有了大幅提升,触发了更多的“crash”,从而提高了模糊测试的效率和漏洞发现能力。
(2)本发明实现了多种覆盖率度量标准,提供了可配置的覆盖分析方法。其好处在于,各个覆盖率度量标准体现了分析深度神经网络执行状态的不同角度,在同一平台中实现多种覆盖率度量标准有利于更加全面地对目标进行模糊测试。
(3)本发明在变异模块提出并实现了多种变异策略,将图像变换应用于测试用例的变异,实现了对模糊测试效果的提升。
附图说明
图1为TensorFuzz的传统流程。
图2为本发明TensorFuzz-MCM的总体框图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明针对现有的TensorFuzz流程不完善、在覆盖分析环节存在方法单一且难以有效展现深度神经网络执行状态,以及变异策略较为单一的问题,提出了一种基于TensorFuzz的深度神经网络模糊测试框架,命名为TensorFuzz-MCM(Multi-criteria andMulti-mutation Fuzzing Framework for Deep-Neural-Networks based onTensorFuzz)。该框架首先对TensorFuzz的执行流程做了修改,之后在TensorFuzz中实现了多种覆盖率度量标准,提供了可配置的深度神经网络执行状态分析方法。最后,本发明结合了多种变异策略,提高了模糊测试的效率和漏洞发现能力。
图2为本发明基于TensorFuzz的深度神经网络模糊测试框架的示意图。该测试框架包括测试用例池、选择输入模块、可配置的变异模块、深度神经网络模糊测试模型、可配置的覆盖分析模块、目标函数判断模块和安全分析模块。
选择输入模块,用于从测试用例池中获取测试用例。
可配置的变异模块,用于根据配置选择,采用配置的变异方式对选择输入模块获取的测试用例进行变异,将变异后的测试用例作为当前测试用例,加载到所述深度神经网络模糊测试模型中进行处理。
可配置的覆盖分析模块,用于根据配置选择,采用配置的覆盖分析度量标准,确定当前测试用例是否触发了新的覆盖;如果是,则将当前测试用例增加到所述测试用例池中;
目标函数判断模块中设置有目标函数,所述目标函数包括模糊测试的目标和终止条件;当根据模糊测试的目标判定当前测试用例触发“crash(崩溃)”时,通知安全分析模块工作;如果没有触发“crash”,则不执行任何操作;当根据模糊测试的终止条件判定满足终止条件时,模糊测试结束,否则继续进行测试、变异。其中,所述终止条件可以是测试时间上限、循环次数上限或者是人为终止信号。
安全分析模块,用于“crash”被触发时,记录与“crash”相关的信息,将触发“crash”的当前测试用例增加到所述测试用例池中。具体来说,该安全分析模块可以对触发“crash”的当前测试用例进行分析,记录触发该“crash”的当前测试用例及条件。
基于上述框架,本发明的模糊测试过程包括如下步骤:
步骤1、设置目标函数。
其中,在传统的TensorFuzz中,目标函数只包括模糊测试的目标,通过设定目标函数的方式明确模糊测试要挖掘的“漏洞”,例如深度神经网络可能存在的错误分类、量化后损失精度、数值溢出、梯度消失等问题。触发程序漏洞后随即停止模糊测试。
而本发明的目标函数不仅设置了模糊测试的目标,目标函数还包含模糊测试终止的条件。这个条件可以是时间条件、或者是循环次数上限,或者是人为的终止。当判定满足终止条件时,结束模糊测试。
步骤2、将用户提供的初始测试用例加载到测试用例池中,从测试用例池中获取一个测试用例。
步骤3、根据配置选择,采用配置的变异方式对获取的测试用例进行变异,将变异后的测试用例作为当前测试用例,加载到深度神经网络模糊测试模型中进行处理。
步骤4、根据配置选择,采用配置的覆盖分析度量标准,确定当前测试用例是否触发了新的覆盖;如果是,则将当前测试用例增加到所述测试用例池中。如果没有触发新的覆盖,则不执行所述将当前测试用例增加到测试用例池中的操作。
步骤5、根据目标函数执行判断操作,包括:一是根据目标函数的模糊测试目标,判断当前测试用例是否触发“crash”,如果是,则记录和分析当前测试用例的相关信息,并将当前测试用例增加到所述测试用例池中,否则不增加测试用例到测试用例池;二是根据目标函数的终止条件,判断当前模糊测试是否停止,如果是,则结束模糊测试,而不满足终止条件则从测试用例池中获取下一个测试用例,重复步骤3-5,直到触发了目标函数的终止条件,结束模糊测试。
至此,本流程结束。
本发明的TensorFuzz-MCM框架通过目标函数设置了模糊测试终止的标志,使其执行设定的时间、次数或人为终止。在覆盖分析与安全分析环节,TensorFuzz-MCM将触发新覆盖的测试用例和触发“crash”的测试用例添加到测试用例池。其中,保留触发“crash”的测试用例是必有要的:首先,深度神经网络安全研究中通常需要大量触发“crash”的测试用例,例如对抗攻击研究中往往通过利用对抗样本对模型再训练的方式提高模型的鲁棒性;其次,在触发“crash”的测试用例基础上继续模糊测试过程往往更容易触发“crash”。综上所述,通过保留触发“crash”的测试用例,在相同的实验环境下TensorFuzz-MCM生成的触发“crash”的测试用例数量相比TensorFuzz有了大幅提升。
本发明流程中步骤3的变异是深度神经网络模糊测试的重要环节之一,对模糊测试的性能有较大影响。传统的TensorFuzz采用添加高斯噪声的方式生成新的测试用例。在应用过程过中发现该变异方式的效果不佳。
在一优选实施例中,本发明提供了多种可选择的变异策略。与传统程序模糊测试中常用的位翻转、增加字符串变异策略不同,该实施例基于测试用例以图像类型数据为主的特点,将图像的变换方法作为变异策略,提供了添加椒盐噪声、添加泊松噪声、添加区域遮挡、图像平移、图像旋转、随机选择等多种可选的变异策略,有效地提升了模糊测试的性能。在应用过程中选择哪种变异策略由用户决定,可选择其中的一种或者一种以上的组合。
其中,添加椒盐噪声:椒盐噪声又称为脉冲噪声,通常由图像信号中尖锐而突然的干扰引起,其表现为稀疏出现的白色或黑色像素,即在图像中只有几个像素是有噪声的,但噪声较为强烈,其效果类似于在图像上撒上盐和胡椒。本发明提出的添加椒盐噪声变异策略为模拟椒盐噪声产生的效果,并将其应用于模糊测试的变异操作。
添加泊松噪声:泊松噪声又称为散粒噪声,是一种符合泊松分布的噪声,其产生的根源为光和电流等是由离散的运动构成。本发明提出的添加泊松噪声变异策略为模拟泊松噪声产生的效果,并将其应用于模糊测试的变异操作。
添加区域遮挡:修改图像中一个区域内连续的像素点。
图像平移:对图像进行整体的移动,属于图像级别的修改。
图像旋转:对图像进行整体的旋转操作,属于图像级别的修改。
随机选择:在上述变异策略中随机选择一种进行变异。
这些变异策略的好处在于,添加椒盐噪声与泊松噪声同属于像素级别的噪声,对于输入的修改较小,二者随机选择像素点进行修改,有利于触发深度神经网络中可能存在的更多“crash”,且其可以生成较多的测试用例;相比于噪声,区域遮挡对于输入的修改幅度更大,对于某些类型的“crash”,其可能会缩短模糊测试的进程;图像平移与图像旋转同属于图像级别的修改,对输入的修改幅度更大,已有研究显示二者对于触发错误分类的效果更好;随机选择结合了以上变异策略的优点,可以更加全面地进行模糊测试。并且,提供多种变异策略的好处在于,可以根据模糊测试的目标选择更有针对性的变异策略。例如,图像平移与图像旋转相比于添加噪声可以更快、更多、更稳定地触发错误分类,而后者对于触发数值溢出、梯度消失等更加有效。
本发明流程中步骤4的覆盖分析是将模糊测试技术应用于深度神经网络安全研究的关键之一,当前已有多种覆盖率度量标准,但分析角度较为片面且并非专为深度神经网络模糊测试设计。本发明基于TensorFuzz-MCM框架对各覆盖率度量标准进行了深入的分析比较,发现各标准互有优劣,不存在最佳的覆盖率度量标准,因此提供可选择的覆盖分析方法是有必要的。除原有的激活向量覆盖率外,本发明还提供了神经元覆盖率、k-多节神经元覆盖率、神经元边界覆盖率、神经元强激活覆盖率、top-k神经元覆盖率等多种度量标准,可供使用者选择。
其中,神经元覆盖率将深度神经网络中的神经元定义为两种状态:输出值大于阈值的神经元为激活状态(activated),而输出值小于阈值的神经元为非激活状态。神经元覆盖率NC(x,t)就是深度神经网络中处于激活状态神经元的比例,即输出值大于设定阈值的神经元个数与神经元总数的比值,其计算公式如式(1)所示。式中n表示神经元n,t表示输出值阈值,x表示单个输入,T表示已经使用过的测试用例集合,称为测试集,output(n,x)表示神经元n对于输入x的输出值,N表示深度神经网络中的所有神经元集合,且下述公式中“||”符号表示集合中元素的个数,例如|N|表示深度神经网络中神经元总数。神经元覆盖率是首个适用于深度神经网络的覆盖率度量标准,可以在一定程度上反应深度神经网络中神经元的激活情况。
在对深度神经网络进行训练的过程中,获取深度神经网络中神经元输出值的上、下界。在模糊测试中,可以将神经元划分为主要功能区和边界情况:上下界之间的区间为神经元的主要功能区,低于下界和高于上界的部分为神经元的边界情况,边界情况又可根据输出值高于上界或低于下界分别视为上边界情况或下边界情况,其中输出值高于上界的神经元视为强激活状态。下面的3种覆盖率度量标准都是基于此前提的。
k-多节神经元覆盖率中,将神经元的主要功能区间等分为k个小节,即认为每个神经元存在k种状态。对于一个输入x,如果神经元n的输出值在第i节的范围内,就称神经元n的第i节被输入x覆盖。k-多节神经元覆盖率KNC(T,k)即表示测试集T在所有神经元的k×|N|个状态的覆盖情况。对于测试集T,KNC(T,k)统计所有神经元在主要功能区中被覆盖的状态数与神经元状态总数作比,其计算公式如式(2)所示。式中k表示小节数,表示神经元n的主要功能区被测试集T覆盖的状态数量,即执行测试集T后,神经元n主要功能区的k种状态中被覆盖的状态数量S。与神经元覆盖率相比,k-多节覆盖率度量标准对神经元的状态做了细分,从而对于深度神经网络执行状态的划分更加细致。
神经元边界覆盖率NBC(x)是指统计触发到边界情况的神经元个数与神经元总个数2倍的比值,计算公式如式(3)所示。式中(-∞,lown)与(highn,+∞)分别表示神经元n输出值的下边界情况与上边界情况。理论上,使神经元处于其边界情况的测试用例可能有更大几率触发“crash”。
神经元强激活覆盖率SNAC(x)是指统计触发到上边界情况的神经元个数与神经元总个数的比值,计算公式如式(4)所示。神经元强激活覆盖率与神经元边界覆盖率类似,区别在于后者只关注上边界情况。
top-k神经元覆盖率以层为考量单位,关注每一层中输出值最高的前k个神经元的状态,认为其在一定程度上反映了该层的“行为”。top-k神经元覆盖率的计算方式为,统计深度神经网络的每一层中曾经为输出值前k高的神经元总数量与深度神经网络中神经元总数的比值,其计算公式如式(5)所示。式中k表示参数排名,L表示深度神经网络的层数,topk(x,i)表示给定输入x,在测试过程中第i层网络中曾经输出值排名前k的神经元集合。top-k神经元覆盖率为深度神经网络执行状态的划分提供了另一个角度。
上述覆盖率度量标准分别从不同的角度对深度神经网络执行状态进行评估。由于当前对于“应如何评估深度神经网络执行状态”尚无确切的结论,因此,提供多种执行状态分析方法对于深度神经网络模糊测试的应用效果以及后续技术发展是很有必要的。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于TensorFuzz的深度神经网络模糊测试框架,其特征在于,包括:测试用例池、选择输入模块、可配置的变异模块、深度神经网络模糊测试模型、可配置的覆盖分析模块、目标函数判断模块和安全分析模块;
所述选择输入模块,用于从测试用例池中获取测试用例;
所述可配置的变异模块,用于根据配置选择,采用配置的变异方式对选择输入模块获取的测试用例进行变异,将变异后的测试用例作为当前测试用例,加载到所述深度神经网络模糊测试模型中进行处理;
所述可配置的覆盖分析模块,用于根据配置选择,采用配置的覆盖分析度量标准,确定当前测试用例是否触发了新的覆盖;如果是,则将当前测试用例增加到所述测试用例池中;
所述目标函数判断模块依据目标函数进行判断,所述目标函数包括模糊测试的目标和终止条件;当根据模糊测试的目标判定当前测试用例触发“崩溃”时,通知安全分析模块工作;当根据模糊测试的终止条件判定满足终止条件时,模糊测试结束,否则继续进行变异、测试;
所述安全分析模块,用于接收到目标函数判断模块的通知时,记录与“崩溃”相关的信息,将触发“崩溃”的当前测试用例增加到所述测试用例池中,继续进行变异、测试。
2.如权利要求1所述的模糊测试框架,其特征在于,针对图像类型的测试用例,所述可配置的变异模块中的可选变异策略为添加椒盐噪声、添加泊松噪声、添加区域遮挡、图像平移、图像旋转和随机选择中的一种或两种以上的组合;所述随机选择是指从可选变异策略中随机选择一种。
3.如权利要求1所述的模糊测试框架,其特征在于,所述可配置的覆盖分析模块中可选覆盖分析度量标准为神经元覆盖率、k-多节神经元覆盖率、神经元边界覆盖率、神经元强激活覆盖率和top-k神经元覆盖率中的一种或两种以上的组合;
定义在深度神经网络训练过程中,获取的深度神经网络中各神经元输出值的最大值与最小值为上下界;在模糊测试过程中,根据神经元输出值将神经元划分为主要功能区和边界情况:上下界之间的区间为神经元的主要功能区,低于下界的区间为神经元的下边界情况,高于上界的区间为神经元的上边界情况;下边界情况和上边界情况同属于边界情况;将所述主要功能区等分为k个小节,即认为每个神经元存在k种状态;那么:
所述神经元覆盖率是指深度神经网络中处于激活状态神经元的比例;
所述k-多节神经元覆盖率是指深度神经网络中所有神经元主要功能区被触发的状态数之和与所有神经元的状态总数的比值;
所述神经元边界覆盖率是指触发到边界情况的神经元个数与神经元总个数2倍的比值;
所述神经元强激活覆盖率是指触发到上边界情况的神经元个数与神经元总个数的比值;
所述top-k神经元覆盖率以深度神经网络的层为考量单位,统计深度神经网络的每一层中曾经为输出值前k高的神经元数量,将所有层的前k高的神经元数量相加除以深度神经网络中神经元总数,得到的比值作为top-k神经元覆盖率。
4.如权利要求1所述的模糊测试框架,其特征在于,所述终止条件是测试时间上限、循环次数上限或者是人为终止信号。
5.一种基于TensorFuzz的深度神经网络模糊测试方法,其特征在于,包括:
步骤1、设置目标函数;所述目标函数包括模糊测试的目标和终止条件;
步骤2、从测试用例池中获取测试用例;
步骤3、根据配置选择,采用配置的变异方式对获取的测试用例进行变异,将变异后的测试用例作为当前测试用例,加载到深度神经网络模糊测试模型中进行处理;
步骤4、根据配置选择,采用配置的覆盖分析度量标准,确定当前测试用例是否触发了新的覆盖;如果是,则将当前测试用例增加到所述测试用例池中;
步骤5、根据目标函数的模糊测试目标,在当前测试用例触发“崩溃”时,将当前测试用例增加到所述测试用例池中;根据目标函数的终止条件,判断是否满足终止条件,如果是,则结束模糊测试,否则从测试用例池中获取下一个测试用例,重复步骤3-5,直到触发了目标函数的终止条件,结束模糊测试。
6.如权利要求5所述的方法,其特征在于,当测试用例为图像时,步骤3可选的变异策略为添加椒盐噪声、添加泊松噪声、添加区域遮挡、图像平移、图像旋转和随机选择中的两种或两种以上的组合;所述随机选择是指从可选变异策略中随机选择一种。
7.如权利要求5所述的方法,其特征在于,步骤4可选的覆盖分析度量标准为神经元覆盖率、k-多节神经元覆盖率、神经元边界覆盖率、神经元强激活覆盖率和top-k神经元覆盖率中的两种或两种以上的组合;
定义在深度神经网络训练过程中,获取的深度神经网络中各神经元输出值的最大值与最小值为上下界;在模糊测试过程中,根据神经元输出值将神经元划分为主要功能区和边界情况:上下界之间的区间为神经元的主要功能区,低于下界的区间为神经元的下边界情况,高于上界的区间为神经元的上边界情况;下边界情况和上边界情况同属于边界情况;将所述主要功能区等分为k个小节,即认为每个神经元存在k种状态;那么:
所述神经元覆盖率是指深度神经网络中处于激活状态神经元的比例;
所述k-多节神经元覆盖率是指深度神经网络中所有神经元主要功能区被触发的状态数之和与所有神经元的状态总数的比值;
所述神经元边界覆盖率是指触发到边界情况的神经元个数与神经元总个数2倍的比值;
所述神经元强激活覆盖率是指触发到上边界情况的神经元个数与神经元总个数的比值;
所述top-k神经元覆盖率以深度神经网络的层为考量单位,统计深度神经网络的每一层中曾经为输出值前k高的神经元数量,将所有层的前k高的神经元数量相加除以深度神经网络中神经元总数,得到的比值作为top-k神经元覆盖率。
8.如权利要求5所述的方法,其特征在于,所述终止条件是测试时间上限、循环次数上限或者是人为终止信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010765951.3A CN111897729B (zh) | 2020-08-03 | 2020-08-03 | 基于TensorFuzz的深度神经网络模糊测试框架和测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010765951.3A CN111897729B (zh) | 2020-08-03 | 2020-08-03 | 基于TensorFuzz的深度神经网络模糊测试框架和测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111897729A CN111897729A (zh) | 2020-11-06 |
CN111897729B true CN111897729B (zh) | 2022-08-19 |
Family
ID=73183016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010765951.3A Active CN111897729B (zh) | 2020-08-03 | 2020-08-03 | 基于TensorFuzz的深度神经网络模糊测试框架和测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111897729B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328496A (zh) * | 2020-11-27 | 2021-02-05 | 杭州新州网络科技有限公司 | 全栈式的循环神经网络深度学习系统安全分析与检测方法 |
CN112328505B (zh) * | 2021-01-04 | 2021-04-02 | 中国人民解放军国防科技大学 | 一种用于提升模糊测试的覆盖率的方法和系统 |
CN113704098B (zh) * | 2021-08-18 | 2023-09-22 | 武汉大学 | 一种基于蒙特卡洛搜索树种子调度的深度学习模糊测试方法 |
CN116383067B (zh) * | 2023-04-07 | 2023-11-21 | 上海安般信息科技有限公司 | 一种基于模糊测试停止的充分性判断方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647520A (zh) * | 2018-05-15 | 2018-10-12 | 浙江大学 | 一种基于脆弱性学习的智能模糊测试方法与系统 |
CN109032942A (zh) * | 2018-07-24 | 2018-12-18 | 北京理工大学 | 一种基于afl的模糊测试框架 |
CN109379329A (zh) * | 2018-09-05 | 2019-02-22 | 中国人民解放军战略支援部队信息工程大学 | 基于lstm的网络安全协议模糊测试方法及系统 |
CN110110854A (zh) * | 2019-04-01 | 2019-08-09 | 南京邮电大学 | 一种基于边状态的深度神经网络测试充分性的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3782082A1 (en) * | 2018-05-18 | 2021-02-24 | Google LLC | Systems and methods for debugging neural networks with coverage guided fuzzing |
-
2020
- 2020-08-03 CN CN202010765951.3A patent/CN111897729B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647520A (zh) * | 2018-05-15 | 2018-10-12 | 浙江大学 | 一种基于脆弱性学习的智能模糊测试方法与系统 |
CN109032942A (zh) * | 2018-07-24 | 2018-12-18 | 北京理工大学 | 一种基于afl的模糊测试框架 |
CN109379329A (zh) * | 2018-09-05 | 2019-02-22 | 中国人民解放军战略支援部队信息工程大学 | 基于lstm的网络安全协议模糊测试方法及系统 |
CN110110854A (zh) * | 2019-04-01 | 2019-08-09 | 南京邮电大学 | 一种基于边状态的深度神经网络测试充分性的方法 |
Non-Patent Citations (2)
Title |
---|
TensorFuzz: Debugging Neural Networks with Coverage-Guided Fuzzing;Augustus Odena 等;《https://arxiv.org/pdf/1807.10875.pdf》;20180728;1-12 * |
面向神经网络的模糊测试算法优化;崔建峰 等;《厦门理工学院学报》;20191031;第27卷(第5期);41-46 * |
Also Published As
Publication number | Publication date |
---|---|
CN111897729A (zh) | 2020-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111897729B (zh) | 基于TensorFuzz的深度神经网络模糊测试框架和测试方法 | |
CN107590073A (zh) | 基于路径覆盖软件测试的测试用例自动生成方法 | |
CN105471659B (zh) | 一种故障根因分析方法和分析设备 | |
CN112884130A (zh) | 一种基于SeqGAN的深度强化学习数据增强防御方法和装置 | |
CN111783442A (zh) | 入侵检测方法、设备和服务器、存储介质 | |
CN107483486A (zh) | 基于随机演化博弈模型的网络防御策略选取方法 | |
Kirsopp et al. | Case and feature subset selection in case-based software project effort prediction | |
CN113204745B (zh) | 基于模型剪枝和逆向工程的深度学习后门防御方法 | |
WO2021144943A1 (ja) | 制御方法、情報処理装置および制御プログラム | |
Abraham | Analysis of hybrid soft and hard computing techniques for forex monitoring systems | |
Kelly et al. | Knowledge transfer from keepaway soccer to half-field offense through program symbiosis: Building simple programs for a complex task | |
CN114265309B (zh) | 一种工程机械优化控制策略推荐系统及方法 | |
Tajgardan et al. | Software systems clustering using estimation of distribution approach | |
Zhu et al. | Adaptive deep reinforcement learning for non-stationary environments | |
Rajput | Robustness of different loss functions and their impact on networks learning capability | |
Chu et al. | A solution to the crucial problem of population degeneration in high-dimensional evolutionary optimization | |
CN114358278A (zh) | 神经网络模型的训练方法及装置 | |
CN110191081A (zh) | 基于学习自动机的网络流量攻击检测的特征筛选系统及方法 | |
Jia et al. | Kill two birds with one stone: Auto-tuning rocksdb for high bandwidth and low latency | |
CN109934917B (zh) | 基于机器学习预测计算强度的并行化点云生成dem方法 | |
Vasicek et al. | Evolutionary design of robust noise-specific image filters | |
CA3122970A1 (en) | Partial-activation of neural network based on heat-map of neural network activity | |
CN112434808A (zh) | 全栈式的前向型神经网络深度学习系统安全分析与检测方法 | |
Doux et al. | Deep reinforcement learning for Morpion Solitaire | |
CN111582495A (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 |