CN111124926A - 模糊测试方法、装置、电子设备及存储介质 - Google Patents
模糊测试方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111124926A CN111124926A CN201911359307.XA CN201911359307A CN111124926A CN 111124926 A CN111124926 A CN 111124926A CN 201911359307 A CN201911359307 A CN 201911359307A CN 111124926 A CN111124926 A CN 111124926A
- Authority
- CN
- China
- Prior art keywords
- seed
- seeds
- memory state
- memory
- state space
- 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
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本说明书提供一种模糊测试方法。该方法包括:从种子池中选择预定数量种子;对所选择的种子进行变异生成复数的程序输入;对目标程序在接受所述程序输入之后的运行状态进行监控,获取测试过程的内存状态信息;根据获取的内存状态信息确定本次测试的平均内存状态空间;针对所述种子池中已经参与过测试的种子,将各个种子对应的内存状态空间分别与所述平均内存状态空间进行比较;以及保留其中内存状态空间大于所述平均内存状态空间的种子。本说明书还提供了实现模糊测试装置、电子设备以及计算机可读存储介质。
Description
技术领域
本说明书涉及软件测试技术领域,尤其涉及一种模糊测试方法、装置、电子设备以及计算机可读存储介质。
背景技术
模糊测试技术是一种通过自动化生成大量随机输入(testcases)来对目标程序进行测试并挖掘漏洞的技术。而为了增加模糊测试中对随机输入的控制,让模糊测试能更高效的挖掘漏洞,现有模糊测试技术采用已经执行过的testcases产生的各种反馈信息来对输入的生成进行制导。其中,基于路径覆盖率反馈的模糊测试技术是一种基于执行过的testcases已经覆盖的执行路径信息,通过特定算法将程序的执行路径导向未执行过的路径,以此来挖掘漏洞的技术。
内存破坏型漏洞作为当前程序漏洞中占比最大的一种类型漏洞,它持续威胁着当今各种软件的安全。基于路径覆盖率反馈的模糊测试技术被广泛应用在发现此类漏洞上,是检测此类漏洞的最有效方案之一。但是,程序在相同路径上的执行可能会产生不同的内存状态,例如,在同一循环中不同的迭代次数,内存布局的不同,变量的数值不同,因此,仅仅关注路径覆盖来发现漏洞,会忽视一批需要特定内存状态才能触发的内存破坏型漏洞。
发明内容
有鉴于此,本说明书的实施例提出了一种模糊测试方法,可以基于内存状态制导模糊测试,以提供尽可能多的内存状态来尝试触发漏洞。
本说明书实施例提出的模糊测试方法可以包括:从种子池中选择预定数量种子;对所选择的种子进行变异生成复数的程序输入;对目标程序在接受所述程序输入之后的运行状态进行监控,获取测试过程的内存状态信息;根据获取的内存状态信息确定本次测试的平均内存状态空间;针对所述种子池中已经参与过测试的种子,将各个种子对应的内存状态空间分别与所述平均内存状态空间进行比较;以及保留其中内存状态空间大于所述平均内存状态空间的种子。
其中,从种子池中选择预定数量种子可以包括:针对所述种子池中已经参与过测试的种子,根据各个种子对应的内存状态空间分别为各个种子设置优先级;以及根据所述各个种子的优先级选择所述预定数量的种子。
其中,根据各个种子对应的内存状态空间分别为各个种子设置优先级可以包括:将所述各个种子的优先级设置为其对应内存状态空间。
其中,从种子池中选择预定数量种子可以包括:针对所述种子池中已经参与过测试的种子,根据各个种子对应的内存状态空间和路径覆盖信息分别为各个种子设置优先级;以及根据所述各个种子的优先级选择所述预定数量的种子。
其中,根据各个种子对应的内存状态空间和路径覆盖信息分别为各个种子设置优先级可以包括:根据所述各个种子对应的路径覆盖信息设置各个种子的路径值;其中,路径值越高的种子所对应的路径覆盖信息中包含的路径节点越多;以及将所述各个种子的优先级设置为其对应内存状态空间和路径值的加权和。
其中,根据各个种子的优先级选择所述预定数量的种子可以包括:在所述种子池中已经参与过测试的种子的数量小于所述预定数量时,选择所述种子池中全部已经参与过测试的种子,以及从所述种子池中未参与过测试的种子中随机选择剩余数量的种子,其中,所述剩余数量为所述预定数量与所述种子池中已经参与过测试的种子的数量之差;以及在所述种子池中已经参与过测试的种子的数量大于或等于所述预定数量时,根据所述各个种子的优先级选择优先级最高的预定数量的种子。
其中,根据各个种子的优先级选择所述预定数量的种子可以包括:针对所述种子池中已经参与过测试的种子,将各个种子的优先级设置为各个种子被选中的概率;针对所述种子池中未参与过测试的种子,设置各个种子被选中的概率为预先设定的概率值;以及根据种子池中所有种子被选中的概率选择预定数量的种子。
其中,从种子池中选择预定数量种子可以包括:随机从所述种子池中选择预定数量的种子。
其中,获取测试过程的内存状态信息可以包括:通过程序插桩获取测试过程中所述目标程序运行的特征数据;以及分析所述特征数据获得所述内存状态信息。
其中,获取测试过程的内存状态信息可以包括:通过内存指针获取测试过程中所述目标程序运行的特征数据;以及分析所述特征数据获得所述内存状态信息。
其中,分析所述特征数据获得所述内存状态信息可以包括:分析所述特征数据获得本轮测试过程中各种子对应的各个内存模块的内存读写次数、内存读写长度以及数据结构复杂度;根据如下计算公式分别确定本轮测试各个种子对应的内存状态空间,将所述各个种子对应的内存状态空间作为所述内存状态信息:
其中,MSS为一个种子对应的内存状态空间;n代表涉及到的内存对象数量;Mi代表第i个内存对象被操作的读写次数;Li代表第i个内存对象的数据结构复杂度;Ri代表第i个内存对象的长度。
其中,分析所述特征数据获得所述内存状态信息可以包括:将一个内存区域被操作的次数与该内存区域在其内存对象中的位置或层次之积作为所述内存区域的内存状态;对一个内存对象内的所有内存区域的内存状态进行求和,得到所述内存对象的内存状态;以及对一个种子所涉及的所有内存对象的内存状态进行求和,得到所述种子对应的内存状态空间。
其中,根据所述内存状态信息对所述种子池中的种子进行过滤包括:根据获取的内存状态信息确定本次测试的平均内存状态空间;针对所述种子池中已经参与过测试的种子,将各个种子对应的内存状态空间分别与平均内存状态空间进行比较;以及保留其中内存状态空间大于平均内存状态空间的种子。
其中,上述方法进一步可以包括:获取测试过程的路径覆盖信息;针对所述种子池中已经参与过测试的种子,将各个种子对应的路径覆盖信息与获取的路径覆盖信息进行比较;以及所述保留其中内存状态空间大于所述平均内存状态空间的种子包括:保留其中内存状态空间大于所述平均内存状态空间或者对应的路径覆盖信息中包含有新路径节点的种子。
本说明书提出的模糊测试装置,可以包括:
种子池,用于存放种子;
选择器,用于从所述种子池中选择预定数量种子;
变异器,用于对所选择的种子进行变异生成复数的程序输入;
监控器,用于对目标程序在接受所述程序输入之后的运行状态进行监控,获取测试过程的内存状态信息;以及
过滤器,用于根据获取的内存状态信息确定本次测试的平均内存状态空间;针对所述种子池中已经参与过测试的种子,将各个种子对应的内存状态空间分别与所述平均内存状态空间进行比较;以及保留其中内存状态空间大于所述平均内存状态空间的种子。
其中,选择器可以包括:
特征信息确定单元,用于针对所述种子池中已经参与过测试的种子,确定各个种子对应的内存状态空间;
优先级确定单元,用于根据所述各个种子对应的内存状态空间为所述各个种子设置优先级;以及
选择单元,用于根据所述各个种子的优先级选择所述预定数量的种子。
其中,选择器可以包括:
特征信息确定单元,用于针对所述种子池中已经参与过测试的种子确定种子池中各个种子对应的内存状态空间和路径覆盖信息;
优先级确定单元,用于根据所述各个种子对应的内存状态空间和路径覆盖信息为所述各个种子设置优先级;以及
选择单元,用于根据所述各个种子的优先级选择所述预定数量的种子。
其中,选择器可以随机从所述种子池中选择预定数量的种子。
其中,监控器可以包括:
特征数据获取单元,用于获取测试过程中所述目标程序运行的特征数据;
分析单元,用于分析所述特征数据获得所述内存状态信息。
其中,过滤器可以进一步用于获取测试过程的路径覆盖信息;针对所述种子池中已经参与过测试的种子,确定各个种子对应的路径覆盖信息;将所述种子池中各个种子对应的路径覆盖信息与获取的路径覆盖信息进行比较;以及保留其中内存状态空间大于平均内存状态空间或路径覆盖信息中包含新路径节点的种子。
本说明书的实施例还提供了一种电子设备,可以包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述模糊测试方法。
本说明书的实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行实现上述模糊测试方法。
由此可以看出,上述模糊测试方法和模糊测试装置,可以根据获取的测试过程的内存状态信息对种子池中的种子进行过滤,以滤除内存状态空间小的种子,而保留内存空间大的种子,以提供尽可能多的内存状态来尝试触发漏洞,从而提高模糊测试的效率。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例所述模糊测试方法所应用模糊测试系统100的内部结构示意图;
图2为本说明书一些实施例所述的模糊测试装置的内部结构示意图;
图3为本说明书一些实施例所述的一个内存对象的内存状态空间示意图;
图4为本说明书一些实施例所述的一个种子对应的内存状态空间示意图;
图5为本说明书一些实施例所述的模糊测试方法的流程示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本说明书进一步详细说明。
需要说明的是,除非另外定义,本说明书实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
如前所述,基于路径覆盖率反馈的模糊测试技术目前被广泛应用在发现内存破坏型漏洞上。但是,由于程序在相同路径上的执行可能会产生不同的内存状态,其中,内存状态代表着程序的内存在运行过程中的某一时刻所处于的状态。例如,在同一循环中不同的迭代次数,内存布局的不同,变量的数值不同,因此,仅仅关注路径覆盖来发现漏洞,会忽视一批需要特定内存状态才能触发的内存破坏型漏洞,而这些漏洞将会对软件安全产生大量威胁。
通常,内存破坏型漏洞主要分为两种,一种是溢出类漏洞,通过数组越界,缓冲区溢出,整形溢出等漏洞制造指针越界,随后使用溢出部分造成内存破坏。另一种是悬挂指针漏洞,通过释放后重用,双重释放或者利用堆管理结构的特性去制造一个“悬挂指针”,随后利用“悬挂指针”去读写任意内存造成内存破坏。
有鉴于此,本说明书提出了一种模糊测试技术,这种技术旨在提供尽可能多的内存状态来尝试触发漏洞。
图1显示了本说明书实施例所述的模糊测试技术所应用的模糊测试系统100的结构示意图。
如图1所示,该模糊测试系统100可以包括:种子池(seeds corpus)101。
需要说明的是,在模糊测试技术中,通常将用于生成测试用例的输入数据称为种子。因此,上述种子池101即可以是用于存放全部种子的存储空间,也即其中存放了大量的种子。首先,在进行模糊测试之前将对种子池101进行一个初始模版的注入,可以将这个初始模板称为初始种子(initial seeds)。这些初始种子通常是可以是随机生成,并在生成之后存入种子池101中。
如图1所示,该模糊测试系统100还可以包括:
选择器102,用于从种子池101中选择预定数量种子,这些种子将用于作为对目标程序进行测试的输入。
在本说明书的一些实施例中,上述选择器102可以随机的从上述种子池中选择预定数量的种子。
在本说明书的另一些实施例中,为了实现基于内存状态导向的模糊测试,上述选择器102可以根据种子池中已经参与过测试的各个种子的内存状态信息来优先从这些种子中选择能够提供更多内存状态的种子,从而能够更快且更全面地检测到内存破坏型漏洞。
更进一步,为了进一步提高模糊测试的效率,在本说明书的又一些实施例中,上述选择器102在进行种子的选择时除了考虑各个种子的内存状态信息之外还可以进一步考虑各个种子的路径覆盖信息,优先从已经参与过测试的种子中选择能够提供更多内存状态或者能够提供新的路径覆盖的种子,从而进一步提高模糊测试的效率。
变异器(Mutator)103,用于对选择器102所选择的种子进行变异生成程序输入(testcases)。
在本说明书的实施例中,上述变异器103可以采用的变异策略可以有多种,可以是模糊测试系统100根据实际测试需要预先确定的。例如,上述变异器103可以采用AFL(American Fuzzy Lop)策略对所选择的种子进行变异。上述AFL变异策略可以分为两个阶段:确定的模糊变异(Deterministic Fuzzing)以及非确定的模糊变异(non-deterministic fuzzing)。其中,前者是指按照特定的规则进行变异,而后者是完全随机的策略。在Deterministic Fuzzing中,首先是进行按位反转(Bitflip)。顾名思义,按位反转是对种子文件按位进行翻转,0变1,1变0。然后是进行算术操作(Arithmetic)。实际操作就是对种子文件的8/16/32byte进行加减操作。再然后是替换操作(Interesting),即将一些特殊内容(大多为边界值)替换到原种子文件中。在Deterministic Fuzzing的最后是进行字典(Dictionary)操作,把自动生成或者用户提供的令牌替换、插入到原种子文件中。Non-deterministic变异阶段分为Havoc与Spice两个子阶段。Havoc,意为大破坏,该阶段会对原种子文件进行大量的变异。具体来说,Havoc包含了多轮变异,会随机选取1/4/8/16/32位,对它进行随机的加减、替换、删除操作。Spice即拼接,会在文件队列中承受机选取一个文件与当前文件进行对比,如果差别明显,则随机选取位置,将两个文件切开,并拼接到一起。通过上述AFL变异策略可以根据所选择的种子生成程序输入。需要说明的是,本说明书的实施例对变异器103所采用的变异策略不进行限定。
监控器(Monitor)104,用于对目标程序在接受上述复数的程序输入之后的运行状态进行监控,获取测试过程的内存状态信息,并将获取的内存状态信息反馈至上述选择器102以及过滤器105。
在本说明书的实施例中,上述内存状态信息可以包括每个种子对应的内存状态空间(memory state space)。在本说明书中,将每个种子所对应路径可能产生的内存状态的数量命名为该种子对应的内存状态空间。其中,上述内存状态空间可以由一个数值表征,其中,内存状态空间越大,说明这个种子在测试过程中可以提供的内存状态越多,越有挖掘的潜力。
在本说明书的实施例中,上述每个种子对应的内存状态空间信息可以通过程序插桩的方式获得。程序插桩是指预先在目标程序中插入的“探针”。通过这些“探针”,在目标程序的执行过程中可以获得目标程序运行的特征数据。上述监控器104进而可以通过分析这些通过程序插桩获取的特征数据得到某个种子对应的内存状态空间信息。
在本说明书的实施例中,上述监控器104还可以进一步用于获取测试过程的路径覆盖信息,并将获取的路径覆盖信息反馈至上述选择器102以及过滤器105。
在本说明书的实施例中,上述路径覆盖信息可以包括每个种子对应的路径节点信息。其中,上述每个种子对应的路径节点信息也可以通过程序插桩的方式获得。具体地,上述监控器104可以通过分析通过程序插桩获取的特征数据得到本次执行的路径节点信息,也即获得某个种子对应的路径覆盖信息。
而为了避免对目标程序插桩过多而造成性能压力过大的问题,除了程序插桩的方式,还可以通过硬件终端的方式承担部分插桩功能,例如通过硬件终端实现内存指针读写功能,从而通过内存指针获得目标程序运行的特征数据。
在本说明书的实施例中,当目标程序在运行过程中出现崩溃或者进行了某些违例操作时,说明此次程序的输入触发了一个漏洞,此时,监控器104将记录这个漏洞的相关信息,并将这个漏洞的相关信息进行报告。
如图1所示,上述模糊测试系统还可以包括:
过滤器105,用于根据在对目标程序的测试过程中获取的内存状态信息对种子池101中的种子进行过滤。
在本说明书的一些实施例中,为了实现基于内存状态导向的模糊测试,上述过滤器105可以以本次测试获取的内存状态信息为基准来滤除种子池中已经参与过测试的各个种子中内存状态空间较小的种子,可以首先根据获取的内存状态信息确定本次测试的平均内存状态空间;针对种子池中已经参与过测试的种子,将各个种子对应的内存状态空间分别与所述平均内存状态空间进行比较,保留其中内存状态空间大于所述平均内存状态空间的种子,从而在种子池中保留能够提供更多内存状态的种子。
可以看出,通过上述过滤器105的设置,上述模糊测试系统可以根据获取的测试过程的内存状态信息对种子池中的种子进行过滤,以滤除内存状态空间小的种子,而保留内存空间大的种子,以提供尽可能多的内存状态来尝试触发漏洞,达到更快且更全面地检测到内存破坏型漏洞的目的,从而提高模糊测试的效率。
在本说明书的另一些实施例中,上述过滤器105在对种子池101中的种子进行过滤时除了考虑内存状态信息之外,还可以进一步考虑在对目标程序的测试过程中获取的路径覆盖信息,滤除种子池中已经参与过测试的各个种子中内存状态空间较小而且不包含新的路径节点的种子,也即保留内存状态空间超过本次测试获取的内存状态信息或者其路径覆盖包含新的路径节点的种子,而从而在种子池中保留能够提供更多内存状态或新的路径覆盖的种子,进一步提高模糊测试的效率。
下面将进一步详细说明上述监控器104确定某个种子所对应内存状态空间的方法。
在本说明书的实施例中,上述内存状态空间通常可以通过内存读写次数(也即被操作的次数)、内存读写长度以及数据结构复杂度等维度进行度量。
本说明书的一些实施例给出了一种内存状态空间的度量方法,该度量方法可以参考如下计算公式:
其中,MSS为一个种子对应的内存状态空间;n代表涉及到的内存对象数量;Mi代表第i个内存对象的读写次数;Li代表第i个内存对象的数据结构复杂度;Ri代表第i个内存对象的长度。
其中,图3为本说明书一些实施例所述的一个内存对象的内存状态空间示意图,也即上述计算公式中的Mi×Li×Ri。如图3所示,该立方体的体积即代表了这个内存对象的内存状态空间的大小。
图4为本说明书一些实施例所述的一个种子对应的内存状态空间示意图,也即上述计算公式中的MSS。一个种子对应的内存状态空间表示该种子可以通过突变提供的内存状态数量的上限,它代表该种子的潜力。
如此,为了实现上述度量方法,上述监控器104可以包括:
特征数据获取单元,用于获取测试过程中所述目标程序运行的特征数据;
分析单元,用于分析所述特征数据获得所述内存状态信息。
其中,上述分析单元可以具体用于确定本轮测试过程中各种子对应的各个内存对象的内存读写次数、内存读写长度以及数据结构复杂度;并根据上述各种子对应的各个内存对象的内存读写次数、内存读写长度以及数据结构复杂度确定各种子对应的内存状态空间。具体地,上述分析单元,可以利用上述计算公式确定各个种子对应的内存状态空间。在本例中,对各个种子对应的内存状态空间的度量考虑了各个内存对象的内存读写次数、内存读写长度以及数据结构复杂度三个维度,基本可以反映测试过程的内存状态,具有既简单又相对准确的特点。
需要说明的是,上述内存状态空间的计算公式仅仅是对一个种子所应内存状态空间进行量化的一个示例,本说明书的实施例并不限于仅此一种量化方式。在实际应用中,可以新增一个或多个其他可以反映内存状态的参数来更精确的表达内存状态空间,还可以通过改变上述计算公式来更精确的描述公式中每个变量之间的关系,以修正每个变量对结果可能产生的影响。例如,在本说明书的另一些实施例中,在确定一个种子对应的内存状态空间时,可以以该种子所涉及各个内存对象中的每一个内存区域为计算对象。具体地,可以首先确定每个内存区域的内存状态,例如,可以是该内存区域的读写次数与该内存区域在其内存对象中的位置或层次之积;然后,再对一个内存对象内的所有内存区域的内存状态进行求和,得到一个内存对象的内存状态;最后,再对一个种子所涉及的所有内存对象的内存状态进行求和,从而得到一个种子对应的内存状态空间。对于其他的内存状态空间量化方法,本说明书不一一举例。
下面将进一步详细说明上述选择器102从种子池101中选择预定数量种子的方法。
在本说明书的一些实施例中,上述选择器102可以包括:
特征信息确定单元,用于针对所述种子池中已经参与过测试的种子,确定各个种子对应的内存状态空间;
优先级确定单元,用于根据各个种子对应的内存状态空间为各个种子设置优先级;以及
选择单元,用于根据所述各个种子的优先级选择所述预定数量的种子。
在本说明书的实施例中,上述优先级确定单元可以将每个种子的内存状态空间设置为该种子的优先级。也就是说,内存状态空间越大的种子的优先级越高。
在本说明书的另一些实施例中,上述选择器102可以包括:
特征信息确定单元,用于针对所述种子池中已经参与过测试的种子,确定各个种子对应的内存状态空间和路径覆盖信息;
优先级确定单元,用于根据各个种子对应的内存状态空间和路径覆盖信息为所述各个种子设置优先级;以及
选择单元,用于根据所述各个种子的优先级选择所述预定数量的种子。
此时,上述优先级确定单元可以先根据各个种子对应的路径覆盖信息设置各个种子的路径值;其中,路径值越高的种子所对应的路径覆盖信息中包含的路径节点越多;然后,将所述各个种子的优先级设置为其对应内存状态空间和路径值的加权和。这样,所对应路径覆盖信息中包含新路径节点信息越多或者所对应内存状态空间越大的种子的优先级越高。
在本说明书的一些实施例中,上述选择单元可以在所述种子池中已经参与过测试的种子的数量小于所述预定数量时,选择所述种子池中全部已经参与过测试的种子,并从所述种子池中未参与过测试的种子中随机选择剩余数量的种子,其中,所述剩余数量为所述预定数量与所述种子池中已经参与过测试的种子的数量之差;以及在所述种子池中已经参与过测试的种子的数量大于或等于所述预定数量时,根据所述各个种子的优先级选择优先级最高的预定数量的种子。
在本说明书的另一些实施例中,上述选择单元可以首先针对所述种子池中已经参与过测试的种子,将各个种子的优先级设置为各个种子被选中的概率;而针对所述种子池中未参与过测试的种子,设置各个种子被选中的概率为预先设定的概率值;然后,在根据种子池中所有种子被选中的概率选择预定数量的种子。
通过上述选择器102的设置,在种子池101中选择种子的时候可以优先选择内存状态空间大的种子,从而可以提供尽可能多的内存状态来尝试触发漏洞。在进一步考虑种子所对应路径覆盖信息的情况下,可以优先选择内存状态空间大或者路径覆盖多的种子,从而可以进一步提高模糊测试的效率。
下面将结合示例进一步详细说明上述过滤器105对种子池101中的种子进行过滤的方法。
在本说明书的一些实施例中,上述过滤器105可以包括:
特征信息确定单元,用于针对所述种子池中已经参与过测试的种子,确定各个种子对应的内存状态空间,并根据获取的内存状态信息确定本次测试的平均内存状态空间;
比较单元,用于将各个种子对应的内存状态空间与本次测试的平均内存状态空间进行比较;以及
过滤单元,用于保留其中内存状态空间大于本次测试的平均内存状态空间的种子。
通过上述过滤器105的设置,内存状态空间小于或等于上述平均内存状态空间的种子将从种子池101中删除,而具有大内存状态空间的种子将有机会被保留在种子池101中,参与后面对目标程序的测试,从而能够为测试提供尽可能多的内存状态来尝试触发漏洞。
在本说明书的另一些实施例中,上述监控器104还可以进一步用于获取测试过程的路径覆盖信息。此时,上述过滤器105可以包括:
特征信息确定单元,用于针对所述种子池中已经参与过测试的种子,确定各个种子对应的内存状态空间和路径覆盖信息,并根据获取的内存状态信息确定本次测试的平均内存状态空间;
比较单元,用于将各个种子对应的内存状态空间与上述平均内存状态空间进行比较;以及将所述种子池中各个种子对应的路径覆盖信息与获取的路径覆盖信息进行比较;以及
过滤单元,保留所述种子池中内存状态空间大于上述平均内存状态空间或路径覆盖信息中包含新路径节点的种子。
通过上述过滤器105的设置,不包含新路径节点信息以及内存状态空间小于或等于上述平均内存状态空间的种子将从种子池101中删除,而不产生新路径但具有大内存状态空间的种子将有机会被保留在种子池101中,参与后面对目标程序的测试,从而在能够为测试提供尽可能多的内存状态来尝试触发漏洞的情况下,进一步避免重复无效的测试,提高测试的效率。
在本说明书的实施例中,上述种子池101、选择器102、变异器103、监控器104以及过滤器105在物理上可以位于不同的电子设备中,也可以集成在一个电子设备中,在本说明书中将集成上述功能的电子设备成为模糊测试装置。
图2显示了本说明书一些实施例所述的模糊测试装置200的内部结构示意图。如图2所示,该模糊测试装置200包括:上述种子池101、选择器102、变异器103、监控器104、以及过滤器105。
此外,在本说明书的实施例中,上述模糊测试装置可以被视为一个电子设备,因此,该模糊测试装置可以包括:存储器20、处理器22、输入/输出接口24、通信接口26和总线28。其中处理器22、存储器20、输入/输出接口24和通信接口26通过总线28实现彼此之间在设备内部的通信连接。
存储器20可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器20可以存储操作系统和其他应用程序,还可以存储本说明书实施例提供的模糊测试装置200的各个模块,例如上述种子池101、选择器102、变异器103以及监控器104,通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器20中,并由处理器22来调用执行。
处理器22可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
输入/输出接口24用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口26用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中,通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线28包括一通路,在设备的各个组件(例如处理器72、存储器70、输入/输出接口74和通信接口76)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器22、存储器20、输入/输出接口24、通信接口26以及总线28,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
对应上述模糊测试系统100、模糊测试装置200,本说明书的实施例提出了一种模糊测试方法。图5显示了本说明书一些实施例所述的模糊测试方法的流程示意图。如图5所示,该方法可以包括:
在步骤502,从种子池中选择预定数量种子;
在步骤504,对所选择的种子进行变异生成复数的程序输入;
在步骤506,对目标程序在接受上述程序输入之后的运行状态进行监控,获取测试过程的内存状态信息;以及
在步骤508,根据获取的内存状态信息对上述种子池中的种子进行过滤。
在本说明书的实施例中,在上述步骤506中,当目标程序在运行过程中出现崩溃或者进行了违例操作时,说明此次程序的输入触发了一个漏洞,此时,将记录这个漏洞的相关信息,并将这个漏洞的相关信息进行报告。
下面将结合示例详细说明书上述方法中各个步骤的实现方法。
在本说明书的一些实施例中,在上述步骤502,可以随机从上述种子池中选择预定数量的种子作为对目标程序进行测试的输入,特别是在尚未进行过对目标程序的测试时,也即首次进行种子选择时。
在本说明书的另一些实施例中,上述步骤502可以包括:
针对所述种子池中已经参与过测试的种子,根据各个种子对应的内存状态空间分别为各个种子设置优先级;以及
根据所述各个种子的优先级选择所述预定数量的种子。
其中,根据各个种子对应的内存状态空间为各个种子设置优先级可以包括:将所述各个种子的优先级设置为其对应内存状态空间。
在本说明书的又一些实施例中,上述步骤502可以包括:
针对所述种子池中已经参与过测试的种子,根据各个种子对应的内存状态空间和路径覆盖信息分别为各个种子设置优先级;以及
根据所述各个种子的优先级选择所述预定数量的种子。
在这种情况下,在上述步骤502,针对所述种子池中已经参与过测试的种子,还可以进一步确定各个种子对应的路径覆盖信息,并根据上述各个种子对应的路径覆盖信息和内存状态空间为各个种子设置优先级。此时,在本步骤中,可以根据所述各个种子对应的路径覆盖信息设置各个种子的路径值;其中,路径值越高的种子所对应的路径覆盖信息中包含的路径节点越多;以及将所述各个种子的优先级设置为其对应内存状态空间和路径值的加权和。
在本说明书的一些实施例中,根据上述种子的优先级选择预定数量的种子时可以在所述种子池中已经参与过测试的种子的数量小于所述预定数量时,选择所述种子池中全部已经参与过测试的种子,以及从所述种子池中未参与过测试的种子中随机选择剩余数量的种子,其中,所述剩余数量为所述预定数量与所述种子池中已经参与过测试的种子的数量之差;然后,在所述种子池中已经参与过测试的种子的数量大于或等于所述预定数量时,根据所述各个种子的优先级选择优先级最高的预定数量的种子。
在本说明书的另一些实施例中,根据上述种子的优先级选择预定数量的种子时可以针对所述种子池中已经参与过测试的种子,将各个种子的优先级设置为各个种子被选中的概率;而针对所述种子池中未参与过测试的种子,设置各个种子被选中的概率为预先设定的概率值;然后,根据种子池中所有种子被选中的概率选择预定数量的种子。
通过上述方法,在种子池101中选择种子的时候可以优先选择内存状态空间大的种子,从而可以提供尽可能多的内存状态来尝试触发漏洞。在进一步考虑种子所对应路径覆盖信息的情况下,可以优先选择内存状态空间大或者路径覆盖广的种子,从而可以进一步提高模糊测试的效率。
在本说明书的实施例中,在上述步骤506中,对目标程序在接受上述复数的程序输入之后的运行状态进行监控可以采用程序插桩的方式实现。此外,为了避免对目标程序插桩过多而造成性能压力过大的问题,除了程序插桩的方式,还可以通过硬件终端的方式承担部分插桩功能,例如通过硬件终端实现内存指针读写功能,从而通过内存指针获得测试过程中目标程序运行的特征数据。
在本说明书的一些实施例中,在上述步骤506中,获取测试过程的内存状态信息可以包括获取测试过程中各个种子对应的内存状态空间。如前所述,上述内存状态空间可以通过内存读写次数、内存读写长度以及数据结构复杂度等维度进行度量。
在这种情况下,上述获取测试过程中各个种子对应的内存状态空间的步骤可以包括:
确定本轮测试过程中各种子对应的各个内存对象的内存读写次数、内存读写长度以及数据结构复杂度;以及
根据上述各种子对应的各个内存对象的内存读写次数、内存读写长度以及数据结构复杂度确定各种子对应的内存状态空间。
具体地,可以利用前述的内存状态空间的度量计算公式确定各种子对应的内存状态空间。
在本说明书的另一些实施例中,在上述步骤506中,获取测试过程中各个种子对应的内存状态空间的步骤可以包括:
将一个内存区域被操作的次数与该内存区域在其内存对象中的位置或层次之积作为所述内存区域的内存状态;
对一个内存对象内的所有内存区域的内存状态进行求和,得到所述内存对象的内存状态;以及
对一个种子所涉及的所有内存对象的内存状态进行求和,得到所述种子对应的内存状态空间。
在本说明书的实施例中,在上述步骤508中,根据获取的内存状态信息对上述种子池中的种子进行过滤可以包括:
根据获取的内存状态信息确定本次测试的平均内存状态空间;
针对所述种子池中已经参与过测试的种子,将各个种子对应的内存状态空间分别与上述平均内存状态空间进行比较;以及
保留其中内存状态空间大于所述平均内存状态空间的种子,也即,从上述种子中删除内存状态空间小于或等于上述平均内存状态空间的种子。
通过上述方法,内存状态空间小于或等于本次测试的平均内存状态空间的种子将从种子池中删除,而具有大内存状态空间的种子将有机会被保留在种子池中,参与后面对目标程序的测试,从而能够为测试提供尽可能多的内存状态来尝试触发漏洞。
更进一步,在已获取有测试过程的路径覆盖信息的情况下,上述根据获取的内存状态信息对上述种子池中的种子进行过滤可以包括:
根据获取的内存状态信息确定本次测试的平均内存状态空间;
针对所述种子池中已经参与过测试的种子,将各个种子对应的内存状态空间与所述平均内存状态空间进行比较;
将各个种子对应的路径覆盖信息与获取的路径覆盖信息进行比较;以及
保留其中内存状态空间大于所述平均内存状态空间或对应的路径覆盖信息中包含有新路径节点的种子,也即,从上述种子池中删除内存状态空间小于或等于上述平均内存状态空间且不包含新的路径节点信息的种子。
通过上述方法,不包含新路径节点信息以及内存状态空间小于或等于上述平均内存状态空间的种子将从种子池中删除,而不产生新路径但具有大内存状态空间的种子或者产生新路径的种子将有机会被保留在种子池中,参与后面对目标程序的测试,从而在能够为测试提供尽可能多的内存状态来尝试触发漏洞的情况下,进一步避免重复无效的测试,提高测试的效率。
本说明书提供的模糊测试方法和模糊测试装置可以针对一条程序路径进行深度测试,探测这条路径上可能存在的漏洞。例如:当一条路径上存在一个循环写的漏洞时,循环次数的增加代表着内存状态空间的增加,本说明书提供的方案会深度测试这条路径直到发现这个漏洞;当一条路径上存在一个需要特定的内存布局才会触发的漏洞(比如fastbin漏洞)时,由于内存布局也算在内存状态空间中的一种,因此,本说明书提供的方案会随机生成各种内存布局的路径,直到生成满足触发此漏洞的内存布局,能够更快且更全面地检测到内存破坏型漏洞。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于电子设备实施例以及计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本说明书的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本说明书难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本说明书难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本说明书的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本说明书的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本说明书。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本说明书的具体实施例对本说明书进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
上述对本说明书特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本说明书的保护范围之内。
Claims (21)
1.一种模糊测试方法,包括:
从种子池中选择预定数量种子;
对所选择的种子进行变异生成程序输入;
对目标程序在接受所述程序输入之后的运行状态进行监控,获取测试过程的内存状态信息;
根据获取的内存状态信息确定本次测试的平均内存状态空间;
针对所述种子池中已经参与过测试的种子,将各个种子对应的内存状态空间分别与所述平均内存状态空间进行比较;以及
保留其中内存状态空间大于所述平均内存状态空间的种子。
2.根据权利要求1所述的方法,其中,所述从种子池中选择预定数量种子包括:
针对所述种子池中已经参与过测试的种子,根据各个种子对应的内存状态空间分别为各个种子设置优先级;以及
根据所述各个种子的优先级选择所述预定数量的种子。
3.根据权利要求2所述的方法,其中,所述根据各个种子对应的内存状态空间分别为各个种子设置优先级包括:将所述各个种子的优先级设置为其对应内存状态空间。
4.根据权利要求1所述的方法,其中,所述从种子池中选择预定数量种子包括:
针对所述种子池中已经参与过测试的种子,根据各个种子对应的内存状态空间和路径覆盖信息分别为各个种子设置优先级;以及
根据所述各个种子的优先级选择所述预定数量的种子。
5.根据权利要求4所述的方法,其中,所述根据各个种子对应的内存状态空间和路径覆盖信息分别为各个种子设置优先级包括:
根据所述各个种子对应的路径覆盖信息设置各个种子的路径值;其中,路径值越高的种子所对应的路径覆盖信息中包含的路径节点越多;以及
将所述各个种子的优先级设置为其对应内存状态空间和路径值的加权和。
6.根据权利要求2或3所述的方法,其中,所述根据各个种子的优先级选择所述预定数量的种子包括:
在所述种子池中已经参与过测试的种子的数量小于所述预定数量时,选择所述种子池中全部已经参与过测试的种子,以及从所述种子池中未参与过测试的种子中随机选择剩余数量的种子,其中,所述剩余数量为所述预定数量与所述种子池中已经参与过测试的种子的数量之差;以及
在所述种子池中已经参与过测试的种子的数量大于或等于所述预定数量时,根据所述各个种子的优先级选择优先级最高的预定数量的种子。
7.根据权利要求2或3所述的方法,其中,所述根据各个种子的优先级选择所述预定数量的种子包括:
针对所述种子池中已经参与过测试的种子,将各个种子的优先级设置为各个种子被选中的概率;
针对所述种子池中未参与过测试的种子,设置各个种子被选中的概率为预先设定的概率值;以及
根据种子池中所有种子被选中的概率选择预定数量的种子。
8.根据权利要求1所述的方法,其中,所述从种子池中选择预定数量种子包括:随机从所述种子池中选择预定数量的种子。
9.根据权利要求1所述的方法,其中,所述获取测试过程的内存状态信息包括:
通过程序插桩获取测试过程中所述目标程序运行的特征数据;以及
分析所述特征数据获得所述内存状态信息。
10.根据权利要求1所述的方法,其中,所述获取测试过程的内存状态信息包括:
通过硬件内存指针获取测试过程中所述目标程序运行的特征数据;以及
分析所述特征数据获得所述内存状态信息。
12.根据权利要求9或10所述的方法,其中,所述分析所述特征数据获得所述内存状态信息包括:
将一个内存区域被操作的次数与该内存区域在其内存对象中的位置或层次之积作为所述内存区域的内存状态;
对一个内存对象内的所有内存区域的内存状态进行求和,得到所述内存对象的内存状态;以及
对一个种子所涉及的所有内存对象的内存状态进行求和,得到所述种子对应的内存状态空间。
13.根据权利要求1所述的方法,其中,所述方法进一步包括:
获取测试过程的路径覆盖信息;
针对所述种子池中已经参与过测试的种子,将各个种子对应的路径覆盖信息与获取的路径覆盖信息进行比较;以及
所述保留其中内存状态空间大于所述平均内存状态空间的种子包括:保留其中内存状态空间大于所述平均内存状态空间或者对应的路径覆盖信息中包含有新路径节点的种子。
14.一种模糊测试装置,包括:
种子池,用于存放种子;
选择器,用于从所述种子池中选择预定数量种子;
变异器,用于对所选择的种子进行变异生成复数的程序输入;
监控器,用于对目标程序在接受所述程序输入之后的运行状态进行监控,获取测试过程的内存状态信息;以及
过滤器,用于根据获取的内存状态信息确定本次测试的平均内存状态空间;针对所述种子池中已经参与过测试的种子,将各个种子对应的内存状态空间分别与所述平均内存状态空间进行比较;以及保留其中内存状态空间大于所述平均内存状态空间的种子。
15.根据权利要求14所述的装置,其中,所述选择器包括:
特征信息确定单元,用于针对所述种子池中已经参与过测试的种子,确定各个种子对应的内存状态空间;
优先级确定单元,用于根据所述各个种子对应的内存状态空间为所述各个种子设置优先级;以及
选择单元,用于根据所述各个种子的优先级选择所述预定数量的种子。
16.根据权利要求14所述的装置,其中,所述选择器包括:
特征信息确定单元,用于针对所述种子池中已经参与过测试的种子确定种子池中各个种子对应的内存状态空间和路径覆盖信息;
优先级确定单元,用于根据所述各个种子对应的内存状态空间和路径覆盖信息为所述各个种子设置优先级;以及
选择单元,用于根据所述各个种子的优先级选择所述预定数量的种子。
17.根据权利要求14所述的装置,其中,所述选择器随机从所述种子池中选择预定数量的种子。
18.根据权利要求14所述的装置,其中,所述监控器包括:
特征数据获取单元,用于获取测试过程中所述目标程序运行的特征数据;
分析单元,用于分析所述特征数据获得所述内存状态信息。
19.根据权利要求15所述的装置,其中,所述过滤器进一步用于获取测试过程的路径覆盖信息;针对所述种子池中已经参与过测试的种子,确定各个种子对应的路径覆盖信息,将所述种子池中各个种子对应的路径覆盖信息与获取的路径覆盖信息进行比较;以及保留其中内存状态空间大于所述平均内存状态空间或路径覆盖信息中包含新路径节点的种子。
20.一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至13任意一项所述的方法。
21.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1至13任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911359307.XA CN111124926B (zh) | 2019-12-25 | 2019-12-25 | 模糊测试方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911359307.XA CN111124926B (zh) | 2019-12-25 | 2019-12-25 | 模糊测试方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124926A true CN111124926A (zh) | 2020-05-08 |
CN111124926B CN111124926B (zh) | 2022-09-16 |
Family
ID=70502380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911359307.XA Active CN111124926B (zh) | 2019-12-25 | 2019-12-25 | 模糊测试方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124926B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111830928A (zh) * | 2020-06-08 | 2020-10-27 | 杭州电子科技大学 | 一种工业控制设备固件的模糊测试方法 |
CN111858307A (zh) * | 2020-06-18 | 2020-10-30 | 三星(中国)半导体有限公司 | 模糊测试方法和设备 |
CN112052156A (zh) * | 2020-07-15 | 2020-12-08 | 杭州木链物联网科技有限公司 | 一种模糊测试方法、装置和系统 |
CN112398839A (zh) * | 2020-11-06 | 2021-02-23 | 中国科学院信息工程研究所 | 工控漏洞挖掘方法及装置 |
CN113157551A (zh) * | 2021-01-14 | 2021-07-23 | 首都师范大学 | 一种面向ros的差分模糊测试方法 |
CN113760753A (zh) * | 2021-08-19 | 2021-12-07 | 东北大学 | 基于灰盒模糊技术的quic协议测试方法 |
CN113836008A (zh) * | 2021-09-13 | 2021-12-24 | 支付宝(杭州)信息技术有限公司 | 针对虚拟机监视器进行模糊测试的方法和系统 |
US11868238B2 (en) | 2020-06-18 | 2024-01-09 | Samsung Electronics Co., Ltd. | Method and apparatus for fuzz testing based on resource access feedback |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120089868A1 (en) * | 2010-10-06 | 2012-04-12 | Microsoft Corporation | Fuzz testing of asynchronous program code |
CN107193731A (zh) * | 2017-05-12 | 2017-09-22 | 北京理工大学 | 使用控制变异的模糊测试覆盖率改进方法 |
CN108416219A (zh) * | 2018-03-18 | 2018-08-17 | 西安电子科技大学 | 一种Android二进制文件漏洞检测方法及系统 |
CN108647145A (zh) * | 2018-05-10 | 2018-10-12 | 清华大学 | 软件内存安全检测方法及系统 |
CN109902024A (zh) * | 2019-03-18 | 2019-06-18 | 中国人民解放军战略支援部队信息工程大学 | 一种程序路径敏感的灰盒测试方法及装置 |
CN110147310A (zh) * | 2019-04-02 | 2019-08-20 | 中国科学院信息工程研究所 | 一种基于变异策略的并行模糊测试调度方法及装置 |
EP3572944A1 (en) * | 2018-05-24 | 2019-11-27 | Fujitsu Limited | Concurrency vulnerability detection |
-
2019
- 2019-12-25 CN CN201911359307.XA patent/CN111124926B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120089868A1 (en) * | 2010-10-06 | 2012-04-12 | Microsoft Corporation | Fuzz testing of asynchronous program code |
CN107193731A (zh) * | 2017-05-12 | 2017-09-22 | 北京理工大学 | 使用控制变异的模糊测试覆盖率改进方法 |
CN108416219A (zh) * | 2018-03-18 | 2018-08-17 | 西安电子科技大学 | 一种Android二进制文件漏洞检测方法及系统 |
CN108647145A (zh) * | 2018-05-10 | 2018-10-12 | 清华大学 | 软件内存安全检测方法及系统 |
EP3572944A1 (en) * | 2018-05-24 | 2019-11-27 | Fujitsu Limited | Concurrency vulnerability detection |
CN109902024A (zh) * | 2019-03-18 | 2019-06-18 | 中国人民解放军战略支援部队信息工程大学 | 一种程序路径敏感的灰盒测试方法及装置 |
CN110147310A (zh) * | 2019-04-02 | 2019-08-20 | 中国科学院信息工程研究所 | 一种基于变异策略的并行模糊测试调度方法及装置 |
Non-Patent Citations (4)
Title |
---|
DONGDONG SHE: "NEUZZ: Efficient Fuzzing with Neural Program Smoothing", 《40TH IEEE SYMPOSIUM ON SECURITY AND PRIVACY》 * |
SHUITAO GAN: "CollAFL: Path Sensitive Fuzzing", 《2018 IEEE SYMPOSIUM ON SECURITY AND PRIVACY》 * |
张瀚方等: "面向二进制程序的导向性模糊测试方法", 《计算机应用》 * |
邓承志等: "浅谈代码安全质量保障中的模糊测试技术", 《信息网络安全》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111830928A (zh) * | 2020-06-08 | 2020-10-27 | 杭州电子科技大学 | 一种工业控制设备固件的模糊测试方法 |
CN111830928B (zh) * | 2020-06-08 | 2021-07-30 | 杭州电子科技大学 | 一种工业控制设备固件的模糊测试方法 |
CN111858307A (zh) * | 2020-06-18 | 2020-10-30 | 三星(中国)半导体有限公司 | 模糊测试方法和设备 |
CN111858307B (zh) * | 2020-06-18 | 2024-04-19 | 三星(中国)半导体有限公司 | 模糊测试方法和设备 |
US11868238B2 (en) | 2020-06-18 | 2024-01-09 | Samsung Electronics Co., Ltd. | Method and apparatus for fuzz testing based on resource access feedback |
CN112052156B (zh) * | 2020-07-15 | 2022-07-29 | 浙江木链物联网科技有限公司 | 一种模糊测试方法、装置和系统 |
CN112052156A (zh) * | 2020-07-15 | 2020-12-08 | 杭州木链物联网科技有限公司 | 一种模糊测试方法、装置和系统 |
CN112398839A (zh) * | 2020-11-06 | 2021-02-23 | 中国科学院信息工程研究所 | 工控漏洞挖掘方法及装置 |
CN112398839B (zh) * | 2020-11-06 | 2021-11-30 | 中国科学院信息工程研究所 | 工控漏洞挖掘方法及装置 |
CN113157551B (zh) * | 2021-01-14 | 2022-09-09 | 首都师范大学 | 一种面向ros的差分模糊测试方法 |
CN113157551A (zh) * | 2021-01-14 | 2021-07-23 | 首都师范大学 | 一种面向ros的差分模糊测试方法 |
CN113760753A (zh) * | 2021-08-19 | 2021-12-07 | 东北大学 | 基于灰盒模糊技术的quic协议测试方法 |
CN113836008A (zh) * | 2021-09-13 | 2021-12-24 | 支付宝(杭州)信息技术有限公司 | 针对虚拟机监视器进行模糊测试的方法和系统 |
CN113836008B (zh) * | 2021-09-13 | 2023-10-27 | 支付宝(杭州)信息技术有限公司 | 针对虚拟机监视器进行模糊测试的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111124926B (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124926B (zh) | 模糊测试方法、装置、电子设备及存储介质 | |
Sambasivan et al. | Principled workflow-centric tracing of distributed systems | |
CN109062794A (zh) | 一种软件测评结果的确定方法、装置及电子设备 | |
CN115659358B (zh) | 一种智能合约模糊测试方法及装置 | |
US9195730B2 (en) | Verifying correctness of a database system via extended access paths | |
CN112597064A (zh) | 对程序进行仿真的方法、电子设备及存储介质 | |
CN110032505A (zh) | 软件质量确定装置、软件质量确定方法和软件质量确定程序 | |
CN113419971B (zh) | 安卓系统服务漏洞检测方法及相关装置 | |
CN111989655B (zh) | 一种soc芯片、确定热点函数的方法及终端设备 | |
CN112559978B (zh) | 基于动态胎记的多线程程序抄袭检测方法及相关设备 | |
JP2018073223A (ja) | 解析プログラム、解析方法、および解析装置 | |
CN112861134B (zh) | 基于优化变异策略的漏洞检测方法、装置、设备及介质 | |
CN114355171B (zh) | 一种可重构芯片性能瓶颈检测平台、检测方法及电子设备 | |
CN106648550B (zh) | 用于并发执行任务的方法与设备 | |
CN114840418A (zh) | 模糊测试方法及装置 | |
CN113360402A (zh) | 一种测试方法、电子设备、芯片和存储介质 | |
CN113051153B (zh) | 一种应用软件漏洞扫描方法及相关设备 | |
CN114328171A (zh) | 测试用例库的生成方法、装置、设备及存储介质 | |
CN112817525A (zh) | 闪存芯片可靠性等级预测方法、装置及存储介质 | |
CN115687158B (zh) | 一种协议软件的测试方法及装置 | |
US8359456B2 (en) | Generating random addresses for verification of distributed computerized devices | |
CN109885402B (zh) | 测试函数输出数据溢出的方法、终端设备及存储介质 | |
CN112580297B (zh) | 一种编解码数据的方法、电子设备及存储介质 | |
US9262251B1 (en) | Detecting memory failures in computing systems | |
CN111352825B (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 |