CN111191245B - 基于路径感知变异策略的模糊测试方法 - Google Patents
基于路径感知变异策略的模糊测试方法 Download PDFInfo
- Publication number
- CN111191245B CN111191245B CN201911343779.6A CN201911343779A CN111191245B CN 111191245 B CN111191245 B CN 111191245B CN 201911343779 A CN201911343779 A CN 201911343779A CN 111191245 B CN111191245 B CN 111191245B
- Authority
- CN
- China
- Prior art keywords
- magic
- byte
- strategy
- sample
- mutation
- 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
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于路径感知变异策略的模糊测试方法。该方法包括:步骤1:对插桩后的测试程序进行检测,判断是否检测到魔术字节:若是,则执行步骤2;步骤2:若检测到魔术字节,则在共享内存中记录;步骤3:继续对插桩后的测试程序进行检测,采用基于启发式的方法判断是否突破魔术字节:若是,则将该魔术字节及其偏移量加入全局映射;若否,则执行步骤4;步骤4:继续对插桩后的测试程序进行检测,判断是否经过magic变异:若是,则调用原始变异策略进行变异,返回步骤1;若否,则调用魔术字典策略进行变异,返回步骤1。本发明摆脱了依靠动态分析技术突破检查点过程中所带来的巨大开销问题,且可提升模糊测试效率。
Description
技术领域
本发明涉及计算软件安全测试技术领域,尤其涉及一种基于路径感知变异策略的模糊测试方法。
背景技术
模糊测试(Fuzzing)是一种自动化软件测试技术,通过将半有效数据作为输入提供给测试程序并监测程序是否出现异常的一种测试方法。由于其简单、高效,因此被广泛应用于各大软件厂商以及开源软件开发测试中,且该技术已在各类软件中发现大量漏洞。但随着软件安全测试工具的广泛应用及代码安全开发意识的提升,漏洞通常出现在代码结构更为复杂的位置。现有模糊测试在挖掘代码结构相对简单的代码漏洞时效果显著,但是面对结构复杂的代码时往往难以捕获到异常。其中魔术字节检查是阻碍深层测试的重要因素之一。
目前主流的模糊测试器中采用的变异策略主要分为bitflip、arithmetic、interest、dictionary、havoc、splice六种,其中前四种变异方式称为确定性策略,后两种则称为随机性策略。虽然已有的变异策略已经十分全面,但由于缺乏程序感知导致在某些程序的测试中会相对低效。如图5所示的代码1-1示例,程序崩溃点在一个魔术字节比较之后,如果想触发程序崩溃,则必须准确变异样本中的某些字节,可能为连续的四个字节甚至更多的字节。对于目前的变异策略而言,简单的翻转、运算等策略很难突破此处检查。而对于字典策略,虽然可以通过替换实现突破,但由于没有准确的值进行替换,因此该策略在应对这种情况下也无法实现突破。
针对上述问题,已有相关研究提出不同的方法实现更高效的探索。AFLFast假设这些将以低频路径出现,并对触发低频路径的种子侧重于应用havoc策略以实现更多低频路径分支的探索;Driller使用符号执行来产生这些魔术字节;Steelix为AFL添加了静态分析阶段、额外的插装和突变,以便在多字节比较中的某字节周围彻底搜索其他相关字节。
但这些技术或使用开销过大的分析技术或依概率提高,且上述技术的优势在于面对样本特殊字节非直接比较的情况,即字节经过一定的转换后作为比较对象。而对于样本字节的直接比较情况,上述技术较传统的字典策略优势并不明显。同时,针对敏感字节变异问题,Fairfuzz修改变异策略使样本保持稀有分支的触发,防止对关键字节的变异。但该方法不能防止后续对其他样本在特定字节处的变异。且对于字节固定偏移的情况,后续样本的变异过程也会浪费一定的计算资源。因此在该问题上还缺少一定完善的解决方案。
发明内容
为解决现有的模糊测试方法存在开销过大或者依概率提高,且针对样本字节直接比较情况效果并不明显的问题,本发明提供一种基于路径感知变异策略的模糊测试方法。
本发明提供一种基于路径感知变异策略的模糊测试方法,包括:
步骤1:对插桩后的测试程序进行检测,判断是否检测到魔术字节:若是,则执行步骤2;所述插桩后的测试程序包括:利用覆盖率插桩方式进行插桩得到的测试程序,利用原始变异策略进行变异后得到的测试程序,以及利用魔术字典策略进行变异后的测试程序;
步骤2:若检测到魔术字节,则在共享内存中记录;
步骤3:继续对插桩后的测试程序进行检测,采用基于启发式的方法判断是否突破魔术字节:若是,则将该魔术字节及其偏移量加入全局映射;若否,则执行步骤4;
步骤4:继续对插桩后的测试程序进行检测,判断是否经过magic变异:若是,则调用原始变异策略进行变异,返回步骤1;若否,则调用魔术字典策略进行变异,返回步骤1。
进一步地,所述利用覆盖率插桩方式进行插桩,具体为:
逐条检测跳转指令,若在该跳转指令前检测到比较指令,则记录该比较指令的指令特征,并在跳转指令的条件跳转分支处插入基本块ID;若在该跳转指令前没检测到比较指令,则在跳转指令的条件跳转分支处插入设定的桩代码;
其中,所述指令特征包括目的操作数和源操作数,所述源操作数为非单字节立即数;所述基本块ID的ID值随着检测到比较指令条数的递增而递增。
进一步地,还包括:在模糊测试器中,建立映射字典,所述映射字典用于指示基本块ID与魔术字节的映射关系。
进一步地,所述共享内存分为四个存储区域:bitmap区域、Block_ID区域、bitmap_branch区域和found_magic区域;
所述bitmap区域,用于记录本次测试样本执行过程中触发的所有分支;
所述Block_ID区域,用于记录待突破的基本块ID;
所述bitmap_branch区域,用于记录包含当前执行的检查点的基本块所在跳转分支在bitmap中的偏移量;
所述found_magic区域,用于记录当前测试样本已经完成突破的基本块。
进一步地,还包括:步骤3中,采用基于启发式的方法判断是否突破魔术字节,具体为:
步骤3.1:判断包含魔术字节的基本块与后续跳转的基本块所在分支的bitmap_branch的字节是否为1;
步骤3.2:判断在当前基本块中第一处遇到的魔术字节检查点是否依旧为原始样本中待突破的检查点;
步骤3.3:判断变异样本执行深度是否大于等于原始样本。
进一步地,当且仅当步骤3.1至步骤3.3中的判断结果均为“是”的条件下,认为已突破魔术字节。
进一步地,在调用魔术字典策略进行变异的过程中,替换的偏移为以该翻转字节作为替换字节的尾部开始,直到该翻转字节成为替换字节的首字节结束。
进一步地,步骤1中还包括:若没有检测到魔术字节,则调用原始变异策略对插桩后的测试程序进行变异,并继续检测,判断是否检测到魔术字节。
进一步地,步骤3中,将该魔术字节加入全局映射后,还包括:
判断该魔术字节的偏移量是否属于固定偏移:若是,则在全局映射中保留该魔术字节及其偏移量,返回步骤1;若否,则从全局映射中删除该魔术字节及其偏移量,返回步骤1。
进一步地,还包括:
当后续样本开始执行魔术字典策略时,如果第一处待突破的魔术字节包含于全局映射中,则优先对全局映射中该处障碍点进行变异。
本发明的有益效果:
1.针对魔术字节检查影响模糊测试效率的问题,提出一种魔术字典策略。通过在样本执行过程中对路径信息的记录,搜集影响样本深层探索的障碍点信息,调整变异策略实现障碍点的快速突破,最终提升模糊测试效率。
2.为了解决后续样本对固定偏移字节进行变异,进而影响效率的问题,本发明采用在模糊测试器中设置一个全局映射,其中包含每一个突破魔术字节检查的样本中变异字节的偏移量与魔术字节值的映射。因为如果样本中存在固定偏移的魔术字节比较,后续在对其他样本进行变异时还需对样本实施新一轮的变异过程,浪费了有效的计算资源,而通过设置该全局映射,则可以快速找到魔术字节的准确值,同时在下次样本变异时提供支撑,无需变异,直接替换即可,节省大量样本无效变异的时间。
3.对于传统方法中依靠动态分析技术突破检查点过程带来的巨大开销问题,提出一种基于路径感知的变异策略,通过样本执行获取程序状态信息从而避免开销过重的动态分析,且该方法不针对特定的测试目标,简单有效。
附图说明
图1为本发明实施例提供的基于路径感知变异策略的模糊测试方法的流程示意图;
图2为本发明实施例提供的优化变异策略的实施流程;
图3为本发明实施例提供的调整变异策略的示意图;
图4为本发明实施例提供的共享内存的结构示意图;
图5为魔术字节阻碍崩溃点触发的代码1-1示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的主要思想是通过模糊测试器感知样本的执行路径,对路径上的魔术字节进行识别,并进行针对性的变异,以实现魔术字节检查点的快速突破。主要分为以下两个部分:
1.插桩分析。在模糊测试器对测试程序进行插桩过程中收集比较指令相关信息,同时对收集到比较指令的基本块进行记录,形成基本块与比较指令的映射。
2.魔术字典策略(magic变异策略)。在原始变异策略中增加一种类似dictionary的变异策略,而token来源于第一阶段构造的映射。同时构造一个维护魔术字节与样本偏移量的全局映射。
如图1所示,本发明实施例提供一种基于路径感知变异策略的模糊测试方法,包括以下步骤:
步骤1:对插桩后的测试程序进行检测,判断是否检测到魔术字节:若是,则执行步骤2;若否,则调用原始变异策略对插桩后的测试程序进行变异,并继续检测,判断是否检测到魔术字节。
所述插桩后的测试程序包括:利用覆盖率插桩方式进行插桩得到的测试程序,利用原始变异策略进行变异后得到的测试程序,以及利用魔术字典策略进行变异后的测试程序;
步骤2:若检测到魔术字节,则在共享内存中记录;
步骤3:继续对插桩后的测试程序进行检测,采用基于启发式的方法判断是否突破魔术字节:若是,则将该魔术字节及其偏移量加入全局映射;若否,则执行步骤4;
将该魔术字节加入全局映射后,还包括:
判断该魔术字节的偏移量是否属于固定偏移:若是,则在全局映射中保留该魔术字节及其偏移量,返回步骤1;若否,则从全局映射中删除该魔术字节及其偏移量,返回步骤1。
步骤4:继续对插桩后的测试程序进行检测,判断是否经过magic变异:若是,则调用原始变异策略进行变异,返回步骤1;若否,则调用魔术字典策略进行变异,返回步骤1。
参见图1~图4,本发明实施例提供一种基于路径感知变异策略的模糊测试方法,包括:
步骤一:在模糊测试器对测试程序进行插桩过程中收集比较指令相关信息,同时对收集到比较指令的基本块进行记录,形成基本块与比较指令的映射关系。
步骤二:在原始变异策略中增加一种类似dictionary的变异策略,而token来源于步骤一构造的映射。
步骤三:在原始变异策略中增加全局偏移与魔术字节的映射关系,并进行动态更新。
下面详细说明步骤一、步骤二、步骤三所包含的相关内容:
(一)步骤一:
由于魔术字节通常是输入字符串中固定偏移量的固定字节,而对于魔术字节的检查,在汇编代码中通常以CMP或TEST指令的形式出现。因此如果能在运行程序之前知道比较的具体值,则会有助于样本的有效变异。
以CMP指令为例进行说明,在对程序的汇编代码进行插桩的过程中,由于是在条件跳转分支处进行插桩,因此会逐条检测是否为跳转指令,如jz、jnz等。而CMP指令会在跳转指令前出现,因此在检测到CMP指令时便将其记录。
例如,记录的指令特征为cmpreg, imm,其中reg表示寄存器,imm表示立即数。同时立即数不属于单字节,因为单字节的立即数比较可以通过原始变异策略实现突破。
而仅仅知道可能发生的魔术字节检查点并不能提高变异的有效性。还需要知道当前测试样本具体执行了哪一处检查。
因此,本发明实施例对插桩方案进行了改进,具体地,所述利用覆盖率插桩方式进行插桩,具体为:
逐条检测跳转指令(如jz、jnz等),若在该跳转指令前检测到比较指令,则记录该比较指令的指令特征,并在跳转指令的条件跳转分支处插入基本块ID;若在该跳转指令前没检测到比较指令,则在跳转指令的条件跳转分支处插入设定的桩代码;其中,比较指令特征包括目的操作数和源操作数,所述源操作数为非单字节立即数;所述基本块ID的ID值随着检测到比较指令条数的递增而递增。例如,记录的指令特征为cmpreg, imm,其中reg表示寄存器,imm表示立即数。
即,通过采用在桩代码中加入字节检查基本块记录的方式,检查当前基本块是否被执行,在汇编中插入一个基本块ID,表示当前基本块的序号,如果在逐条指令检查中发现一条CMP指令,便将该ID值加一。此外,在实际应用中,可在模糊测试器中,建立映射字典,所述映射字典用于指示基本块ID与魔术字节的映射关系,例如[Block_ID:magic_num]。
除此之外,还需要对比较指令的中所用到的目的操作数进行记录,包括寄存器与内存地址两种,对于寄存器操作数,可以根据寄存器名称直接访问。对于内存引用操作数,首先计算内存地址,然后解引用相应的内存地址生成操作数值。
(二)步骤二:
本发明实施例采用增加共享内存的方式实现测试程序子进程与模糊测试器主进程的通信。
共享内存的结构如图4,所述共享内存分为四个存储区域:bitmap区域、Block_ID区域、bitmap_branch区域和found_magic区域;
所述bitmap区域,用于记录本次测试样本执行过程中触发的所有分支;所述Block_ID区域,用于记录待突破的基本块ID;
所述bitmap_branch区域,用于记录包含当前执行的检查点的基本块所在跳转分支在bitmap中的偏移量;
所述found_magic区域,用于记录当前测试样本已经完成突破的基本块。
假设测试样本执行路径上存在多处魔术字节检查点,如何选择对哪一个基本块的魔术字节进行替换。这里只对第一处识别到的包含魔术字节比较的基本块序号进行记录。在对魔术字节检查点进行突破时,还存在对样本是否突破该检查点的验证。
具体地,采用基于启发式的方法判断是否突破魔术字节,具体为:
检查规则1:判断包含魔术字节的基本块与后续跳转的基本块所在分支的bitmap_branch的字节是否为1;
检查规则2:判断在当前基本块中第一处遇到的魔术字节检查点是否依旧为原始样本中待突破的检查点;
检查规则3:判断变异样本执行深度是否大于等于原始样本。
如果检查规则1中字节为1,检查规则2中保持不变且检查规则3中变异样本深度大于等于原始样本则被认为该样本突破了该处检查。
对于上述的检查规则2,不排除样本中刚好满足魔术字节检查点的情况,虽然概率极低,上述检测规则同样适用。同时还需设置一个found_magic区域,用于管理哪一个基本块已经完成了突破。目的在于在对该样本的下一处待突破的魔术字节检查基本块突破之前要先检查found_magic中对应的偏移位是否为0,因此可以避免Block_ID中重复记录已经突破的基本块。记录bitmap_branch时首先判断是否已经记录了Block_ID,如果已经记录则保存相应的bitmap_branch,否则跳过该基本块分支的记录。
其中Block_ID、bitmap_branch与found_magic区域在样本执行完当前变异后进行刷新。刷新之前还需要对每一个样本增加一个已突破基本块的记录,此记录与found_magic保持一致,这样可以对每一个样本,针对魔术字节检查基本块的突破情况进行检查。在样本变异前按此记录对found_magic进行更新,为Block_ID的记录做准备。
除了上述具体的实施过程外,还需要调整变异策略原有的实施方案,原始变异策略包括确定性变异策略和随机性策略,将魔术字典策略加入到确定性变异策略中,即该魔术字典策略对于每一个未经过测试的样本而言,只执行一次。
将魔术字典策略与确定性变异策略进行结合,目的在于两者结合便于发现魔术字节在原始样本的偏移量,在进行确定性变异的过程中,如果发现变异字节包含比较值,则可以确定该处触发了魔术字节检查,则调用魔术字典策略。替换的偏移为以该翻转字节作为替换字节的尾部开始,直到该翻转字节成为替换字节的首字节结束。如果在对所有字节偏移进行替换后仍无法完成突破,则仍继续后续变异过程,因为可能并不是魔术字节的检查,而是需要经过多字段计算产生的校验点检查。该魔术字典策略与其他策略的不同之处在于在进行该变异过程中,需要预先执行一次原始测试样本,目的是找到当前样本中待突破的基本块ID。
(三)步骤三:
为了解决后续样本对固定偏移字节进行变异,进而影响效率的问题,采用在模糊测试器中设置一个全局映射magic_offset,其中包含每一个突破魔术字节检查的样本中变异字节的偏移与变异值的映射。目的在于,如果样本中存在固定偏移的魔术字节比较,后续在对其他样本进行变异时还需对样本实施新一轮的变异过程,浪费了有效的计算资源。当后续样本开始执行魔术字典策略时,如果第一处待突破的魔术字节包含于magic_offset中,则优先对magic_offset中该处障碍点进行变异,如果可以实现检查点突破,则保留magic_offset中此偏移映射关系,如果不能完成突破,则将此映射关系移除。证明该魔术字节检查不属于固定字节偏移的检查。比较值是变异后生成的随机值,能够使样本突破检查实现深层测试的是当该比较值等于魔术字节时。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.基于路径感知变异策略的模糊测试方法,其特征在于,包括:
步骤1:对插桩后的测试程序进行检测,判断是否检测到魔术字节:若是,则执行步骤2;所述插桩后的测试程序包括:利用覆盖率插桩方式进行插桩得到的测试程序,利用原始变异策略进行变异后得到的测试程序,以及利用魔术字典策略进行变异后的测试程序;
其中,所述利用覆盖率插桩方式进行插桩,具体为:
逐条检测跳转指令,若在该跳转指令前检测到比较指令,则记录该比较指令的指令特征,并在跳转指令的条件跳转分支处插入基本块ID;若在该跳转指令前没检测到比较指令,则在跳转指令的条件跳转分支处插入设定的桩代码;
其中,所述指令特征包括目的操作数和源操作数,所述源操作数为非单字节立即数;所述基本块ID的ID值随着检测到比较指令条数的递增而递增;
所述原始变异策略包括确定性变异策略和随机性策略;所述魔术字典策略与其他策略的不同之处在于在进行变异过程中,需要预先执行一次原始测试样本以找到当前样本中待突破的基本块ID;
步骤2:若检测到魔术字节,则在共享内存中记录;
步骤3:继续对插桩后的测试程序进行检测,采用基于启发式的方法判断是否突破魔术字节:若是,则将该魔术字节及其偏移量加入全局映射;若否,则执行步骤4;
其中,采用基于启发式的方法判断是否突破魔术字节,具体为:
步骤3.1:判断包含魔术字节的基本块与后续跳转的基本块所在分支的bitmap_branch的字节是否为1;
步骤3.2:判断在当前基本块中第一处遇到的魔术字节检查点是否依旧为原始样本中待突破的检查点;
步骤3.3:判断变异样本执行深度是否大于等于原始样本;
当且仅当步骤3.1至步骤3.3中的判断结果均为“是”的条件下,认为已突破魔术字节;
步骤4:继续对插桩后的测试程序进行检测,判断是否已利用魔术字典策略进行变异:若是,则调用原始变异策略进行变异,返回步骤1;若否,则调用魔术字典策略进行变异,返回步骤1。
2.根据权利要求1所述的方法,其特征在于,还包括:在模糊测试器中,建立映射字典,所述映射字典用于指示基本块ID与魔术字节的映射关系。
3.根据权利要求1所述的方法,其特征在于,所述共享内存分为四个存储区域:bitmap区域、Block_ID区域、bitmap_branch区域和found_magic区域;
所述bitmap区域,用于记录本次测试样本执行过程中触发的所有分支;
所述Block_ID区域,用于记录待突破的基本块ID;
所述bitmap_branch区域,用于记录包含当前执行的检查点的基本块所在跳转分支在bitmap中的偏移量;
所述found_magic区域,用于记录当前测试样本已经完成突破的基本块。
4.根据权利要求1所述的方法,其特征在于,在调用魔术字典策略进行变异的过程中,替换的偏移为以翻转字节作为替换字节的尾部开始,直到该翻转字节成为替换字节的首字节结束。
5.根据权利要求1所述的方法,其特征在于,步骤1中还包括:若没有检测到魔术字节,则调用原始变异策略对插桩后的测试程序进行变异,并继续检测,判断是否检测到魔术字节。
6.根据权利要求1所述的方法,其特征在于,步骤3中,将该魔术字节加入全局映射后,还包括:
判断该魔术字节的偏移量是否属于固定偏移:若是,则调用原始变异策略,并在全局映射中保留该魔术字节及其偏移量,返回步骤1;若否,则调用原始变异策略,并从全局映射中删除该魔术字节及其偏移量,返回步骤1。
7.根据权利要求1所述的方法,其特征在于,还包括:
当后续样本开始执行魔术字典策略时,如果第一处待突破的魔术字节包含于全局映射中,则优先对全局映射中所述的第一处待突破的魔术字节进行变异。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911343779.6A CN111191245B (zh) | 2019-12-24 | 2019-12-24 | 基于路径感知变异策略的模糊测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911343779.6A CN111191245B (zh) | 2019-12-24 | 2019-12-24 | 基于路径感知变异策略的模糊测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111191245A CN111191245A (zh) | 2020-05-22 |
CN111191245B true CN111191245B (zh) | 2022-06-17 |
Family
ID=70707455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911343779.6A Active CN111191245B (zh) | 2019-12-24 | 2019-12-24 | 基于路径感知变异策略的模糊测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111191245B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112861134B (zh) * | 2021-03-03 | 2022-09-02 | 国家计算机网络与信息安全管理中心 | 基于优化变异策略的漏洞检测方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108845944A (zh) * | 2018-06-28 | 2018-11-20 | 中国人民解放军国防科技大学 | 一种结合符号执行提高软件模糊测试效率的方法 |
CN109117364A (zh) * | 2018-07-03 | 2019-01-01 | 中国科学院信息工程研究所 | 一种面向目标的测试用例生成方法及系统 |
CN109308415A (zh) * | 2018-09-21 | 2019-02-05 | 四川大学 | 一种面向二进制的导向性模糊测试方法与系统 |
CN109885479A (zh) * | 2019-01-07 | 2019-06-14 | 中国人民解放军战略支援部队信息工程大学 | 基于路径记录截断的软件模糊测试方法及装置 |
CN109902024A (zh) * | 2019-03-18 | 2019-06-18 | 中国人民解放军战略支援部队信息工程大学 | 一种程序路径敏感的灰盒测试方法及装置 |
-
2019
- 2019-12-24 CN CN201911343779.6A patent/CN111191245B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108845944A (zh) * | 2018-06-28 | 2018-11-20 | 中国人民解放军国防科技大学 | 一种结合符号执行提高软件模糊测试效率的方法 |
CN109117364A (zh) * | 2018-07-03 | 2019-01-01 | 中国科学院信息工程研究所 | 一种面向目标的测试用例生成方法及系统 |
CN109308415A (zh) * | 2018-09-21 | 2019-02-05 | 四川大学 | 一种面向二进制的导向性模糊测试方法与系统 |
CN109885479A (zh) * | 2019-01-07 | 2019-06-14 | 中国人民解放军战略支援部队信息工程大学 | 基于路径记录截断的软件模糊测试方法及装置 |
CN109902024A (zh) * | 2019-03-18 | 2019-06-18 | 中国人民解放军战略支援部队信息工程大学 | 一种程序路径敏感的灰盒测试方法及装置 |
Non-Patent Citations (5)
Title |
---|
CollAFL: Path Sensitive Fuzzing;Shuitao Gan etc.;《2018 IEEE Symposium on Security and Privacy (SP)》;20180726;全文 * |
Field-aware Evolutionary Fuzzing Based on Input Specifications and Vulnerability Metrics;Yunchao Wang etc.;《2019 IEEE 10th International Conference on Software Engineering and Service Science (ICSESS)》;20191020;全文 * |
UISFuzz: An Efficient Fuzzing Method for CPU Undocumented Instruction Searching;Xixing Li etc.;《IEEE Access》;20191009;全文 * |
变异策略动态构建的模糊测试数据生成方法;焦龙龙等;《北京理工大学学报》;20190515(第05期);全文 * |
基于文件格式信息的改进模糊测试方法;刘天鹏等;《计算机系统应用》;20190515(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111191245A (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bekrar et al. | Finding software vulnerabilities by smart fuzzing | |
CN109032927A (zh) | 一种漏洞挖掘方法及装置 | |
CN112733150B (zh) | 一种基于脆弱性分析的固件未知漏洞检测方法 | |
CN102521543B (zh) | 一种基于动态污点分析进行消息语义解析的方法 | |
Li et al. | CLORIFI: software vulnerability discovery using code clone verification | |
WO2020075335A1 (ja) | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム | |
CN111832026B (zh) | 一种漏洞利用定位方法、系统、装置及介质 | |
CN111695119A (zh) | 一种基于细粒度静态污点分析与符号执行的web漏洞检测方法 | |
CN111191245B (zh) | 基于路径感知变异策略的模糊测试方法 | |
CN111931185A (zh) | 一种Java反序列化漏洞检测方法及组件 | |
Pagani et al. | Back to the whiteboard: A principled approach for the assessment and design of memory forensic techniques | |
CN112506564B (zh) | 一种用于建立控制流图的方法、系统和介质 | |
Alnaeli et al. | Vulnerable C/C++ code usage in IoT software systems | |
Ko et al. | Fuzzing with automatically controlled interleavings to detect concurrency bugs | |
CN114389978A (zh) | 一种基于静态污点分析的网络协议侧信道检测方法和系统 | |
CN103744776A (zh) | 一种基于符号化函数摘要的静态分析方法及系统 | |
Wang et al. | Tunter: assessing exploitability of vulnerabilities with taint-guided exploitable states exploration | |
Yeo et al. | Snapshot-based loading acceleration of web apps with nondeterministic javascript execution | |
CN111625448B (zh) | 协议包生成方法、装置、设备及存储介质 | |
CN107491387A (zh) | 一种文件处理程序的加密点和检查点定位方法及系统 | |
Shen et al. | A systematic review of fuzzy testing for information systems and applications | |
CN114741700B (zh) | 基于符号化污点分析的公共组件库漏洞可利用性分析方法及装置 | |
WO2022222270A1 (zh) | 一种恶意挖矿行为识别方法、装置、设备及存储介质 | |
Xiao et al. | New approach to path explosion problem of symbolic execution | |
CN116305173B (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 |