您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 【CN109885479A】基于路径记录截断的软件模糊测试方法及装置【专利】
(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号(43)申请公布日(21)申请号201910012433.1(22)申请日2019.01.07(71)申请人中国人民解放军战略支援部队信息工程大学地址450000河南省郑州市高新区科学大道62号(72)发明人宋晓斌 柳晓龙 王允超 武泽慧 魏强 曹琰 (74)专利代理机构郑州大通专利商标代理有限公司41111代理人周艳巧(51)Int.Cl.G06F11/36(2006.01)(54)发明名称基于路径记录截断的软件模糊测试方法及装置(57)摘要本发明属于软件测试技术领域,特别涉及一种基于路径记录截断的软件模糊测试方法及装置,该方法包含:构建项目数据集并提取条件代码结构,获取低频路径转移条件代码结构分类模型的模型输入数据,进行模型训练,其中,分类模型采用LSTM网络模型结构;在模糊测试器插桩代码中增加路径截断标记与标记检查指令;针对待测试程序,提取条件代码结构并获取模型输入数据,传输至训练好的分类模型,识别低频路径转移条件代码结构,在源文件中相应位置进行源代码级插桩,依据路径截断标记进行路径截断并完成模糊测试。本发明在程序执行前识别低频路径转移条件代码并采用路径截断策略取消高频路径样本测试,提升模糊测试效率和覆盖率,具有很强工程应用前景。权利要求书2页说明书8页附图2页CN109885479A2019.06.14CN109885479A1.一种基于路径记录截断的软件模糊测试方法,其特征在于,包含如下内容:A)构建项目数据集并提取条件代码结构,将提取到的条件代码结构进行模型输入数据处理后,作为低频路径转移条件代码结构分类模型的输入进行模型训练,其中,分类模型采用LSTM网络模型结构;B)在模糊测试器插桩代码中增加路径截断标记与标记检查指令;C)针对待测试程序,提取条件代码结构并进行模型输入数据处理,将处理后的数据作为训练好的分类模型输入,识别出低频路径转移条件代码结构,并在源文件中相应位置进行源代码级插桩,依据路径截断标记进行路径截断并完成源代码模糊测试。2.根据权利要求1所述的基于路径记录截断的软件模糊测试方法,其特征在于,A)提取条件代码结构中,首先定义面向源码数据集的符号描述并提取数据集中所有的条件代码结构,然后将提取的条件代码结构进行代码解析,并对解析结果进行标签化处理获取代码token序列;对token序列进行向量转换,获取分类模型输入数据。3.根据权利要求2所述的基于路径记录截断的软件模糊测试方法,其特征在于,A)中,提取数据集中所有的条件代码结构,包含如下内容:首先对源码数据集进行预处理,提取有效代码;然后,对有效代码提取条件结构集合,并构建类似栈,同时记录代码段与源码数据集位置对应关系,依据类似栈对嵌套的条件结构集合进行迭代处理,获取最小化的代码片段。4.根据权利要求2所述的基于路径记录截断的软件模糊测试方法,其特征在于,A)中,代码解析过程,包含如下内容:采用抽象语法树提取代码序列并符号化处理,同时依据代码序列中词条意义进行分组,获取同义词集合,扩充代码序列。5.根据权利要求2所述的基于路径记录截断的软件模糊测试方法,其特征在于,A)中,对token序列进行向量转换,包含如下内容:利用word2vec进行文本向量化转化,通过设定特征向量维度与词频参数输出,获取词向量模型;根据该词向量模型获取词典索引字典及词向量字典,依据所述词典索引字典及词向量字典获取分类模型输入数据。6.根据权利要求1所述的基于路径记录截断的软件模糊测试方法,其特征在于,B)中,增加路径截断标记与标记检查指令过程中,通过在源码数据集中插入路径截断标记,该路径截断标记在代码bss段进行定义;并在原始插桩入口处进行路径截断标记检查。7.根据权利要求6所述的基于路径记录截断的软件模糊测试方法,其特征在于,C)中,针对测试程序,依靠训练过程中分类模型识别到的错误处理代码段,并结合源码数据集中条件代码结构与位置索引,采用内外插桩方式对错误处理代码段进行插桩。8.根据权利要求7所述的基于路径记录截断的软件模糊测试方法,其特征在于,C)中,针对路径截断标记在插桩代码后的情形,取消当前条件的原始插桩,采用空指令进行插桩并在指令注释处加入注释标记。9.根据权利要求7所述的基于路径记录截断的软件模糊测试方法,其特征在于,C)中,针对同一条条件语句在不同源码数据集中中的编译优化问题,设定在标记分支处取消插桩。10.一种基于路径记录截断的软件模糊测试装置,其特征在于,包含:训练模块、标记模块和测试模块,其中,训练模块,用于构建项目数据集并提取条件代码结构,将提取到的条件代码结构进行权 利 要 求 书1/2页2CN109885479A2模型输入数据处理后,作为低频路径转移条件代码结构分类模型的输入进行模型训练,其中,分类模型采用LSTM网络模型结构;标记模块,用于在模糊测试器插桩代码中增加路径截断标记与标记检查指令;测试模块,用于针对待测试程序,提取条件代码结构并进行模型输入数据处理,将处理后的数据作为训练好的分类模型输入,识别出低频路径转移条件代码结构,并在源文件中相应位置进行源代码级插桩,依据路径截断标记进行路径截断并完成源代码模糊测试。权 利 要 求 书2/2页3CN109885479A3基于路径记录截断的软件模糊测试方法及装置技术领域[0001]本发明属于软件测试技术领域,特别涉及一种基于路径记录截断的软件模糊测试方法及装置。背景技术[0002]模糊测试(Fuzzing)是一种自动化软件测试技术,通过将半有效数据作为输入提供给测试程序并监测程序是否出现异常的一种测试方法。由于其简单、高效,因此被广泛应用于各大软件厂商以及开源软件开发测试中,且该技术已在各类软件中发现大量漏洞。但随着软件安全测试工具的广泛应用及代码安全开发意识的提升,漏洞通常出现在代码结构更为复杂的位置。现有模糊测试在挖掘代码结构相对简单的代码漏洞时效果显著,但是面对结构复杂的代码时往往难以捕获到异常。导致该问题的原因在于大多数测试样本执行相同的高频路径,而难以探索低频路径。[0003]为解决上述问题,研究人员将其他漏洞分析技术与模糊测试技术进行结合,先后提出不同的模糊测试方法。主要分为基于符号执行的模糊测试方法、基于污点分析的模糊测试方法、基于静态分析的模糊测试方法。基于符号执行的模糊测试方法是一种结合符号执行的模糊测试技术,采取平衡的方式利用模糊测试和选择性的concolic执行,以找到更深层次的错误。使用选择性的concolic执行来测试模糊测试器判定为更有“价值”但受阻的路径。通过结合轻量级模糊测试和concolic执行的优点,避免了符号执行中固有的路径爆炸和模糊不完备的缺陷。基于污点分析的模糊测试技术,采用动态污点分析技术分析测试样本中哪些字节的变异更容易触发未知代码的探索,从而进行更有针对性的变异,最终生成更优的输入样本实现深层代码的检测。基于静态分析的模糊测试方法通过结合程序静态分析技术调整不同种子的受关注度大小,利用边覆盖率信息优化种子排序与选择策略,从而提高对低频路径的测试概率,提高了代码覆盖率。上述三种模糊测试方法虽然采用了不同技术提高低频路径测试概率,但对于高频路径样本的测试依然存在,不仅导致低频路径的测试概率提升有限,整体的测试效率提升也不明显。发明内容[0004]为此,本发明提供一种基于路径记录截断的软件模糊测试方法及装置,提升深层代码测试效率及测试覆盖率,具有很强的工程应用前景。[0005]按照本发明所提供的设计方案,一种基于路径记录截断的软件模糊测试方法,包含如下内容:[0006]A)构建项目数据集并提取条件代码结构,将提取到的条件代码结构进行模型输入数据处理后,作为低频路径转移条件代码结构分类模型的输入进行模型训练,其中,分类模型采用LSTM网络模型结构;[0007]B)在模糊测试器插桩代码中增加路径截断标记与标记检查指令;[0008]C)针对待测试程序,提取条件代码结构并进行模型输入数据处理,将处理后的数说 明 书1/8页4CN109885479A4据作为训练好的分类模型输入,识别出低频路径转移条件代码结构,并在源文件中相应位置进行源代码级插桩,依据路径截断标记进行路径截断并完成源代码模糊测试。[0009]上述的,A)提取条件代码结构中,首先定义面向源码数据集的符号描述并提取数据集中所有的条件代码结构,然后将提取的条件代码结构进行代码解析,并对解析结果进行标签化处理获取代码token序列;对token序列进行向量转换,获取分类模型输入数据。[0010]优选的,A)中,提取数据集中所有的条件代码结构,包含如下内容:首先对源码数据集进行预处理,提取有效代码;然后,对有效代码提取条件结构集合,并构建类似栈,同时记录代码段与源码数据集位置对应关系,依据类似栈对嵌套的条件结构集合进行迭代处理,获取最小化的代码片段。[0011]优选的,A)中,代码解析过程,包含如下内容:采用抽象语法树提取代码序列并符号化处理,同时依据代码序列中词条意义进行分组,获取同义词集合,扩充代码序列。[0012]优选的,A)中,对token序列进行向量转换,包含如下内容:利用word2vec进行文本向量化转化,通过设定特征向量维度与词频参数输出,获取词向量模型;根据该词向量模型获取词典索引字典及词向量字典,依据所述词典索引字典及词向量字典获取分类模型输入数据。[0013]上述的,B)中,增加路径截断标记与标记检查指令过程中,通过在源码数据集中插入路径截断标记,该路径截断标记在代码bss段进行定义;并在原始插桩入口处进行路径截断标记检查。[0014]优选的,C)中,针对测试程序,依靠训练过程中分类模型识别到的错误处理代码段,并结合源码数据集中条件代码结构与位置索引,采用内外插桩方式对错误处理代码段进行插桩。[0015]更进一步,C)中,针对路径截断标记在插桩代码后的情形,取消当前条件的原始插桩,采用空指令进行插桩并在指令注释处加入注释标记。[0016]更进一步,C)中,针对同一条条件语句在不同源码数据集中中的编译优化问题,设定在标记分支处取消插桩。[0017]一种基于路径记录截断的软件模糊测试装置,包含:训练模块、标记模块和测试模块,其中,[0018]训练模块,用于构建项目数据集并提取条件代码结构,将提取到的条件代码结构进行模型输入数据处理后,作为低频路径转移条件代码结构分类模型的输入进行模型训练,其中,分类模型采用LSTM网络模型结构;[0019]标记模块,用于在模糊测试器插桩代码中增加路径截断标记与标记检查指令;[0020]测试模块,用于针对待测试程序,提取条件代码结构并进行模型输入数据处理,将处理后的数据作为训练好的分类模型输入,识别出低频路径转移条件代码结构,并在源文件中相应位置进行源代码级插桩,依据路径截断标记进行路径截断并完成源代码模糊测试。[0021]本发明的有益效果:[0022]1.本发明针对高频路径影响模糊测试效率的问题,采用深度学习神经网络进行低频路径转移条件代码识别,通过对训练模型识别得到的转移条件代码结构进行源代码级插桩,依据标记代码实现路径记录的截断,以此增大低频样本变异的概率,最终提升模糊测试说 明 书2/8页5CN109885479A5效率。[0023]2.本发明通过在程序具体执行前识别低频路径转移条件代码,并采用路径截断策略取消高频路径样本测试,填补高频路径样本影响分析方面的空白,不依靠复杂的动态分析技术且不带来开销问题,可以与其他灰盒测试技术进行有效结合,在原有测试工具的基础上进一步提升覆盖率,对于软件测试技术发展都具有重要的指导意义。附图说明:[0024]图1为实施例中软件模糊测试方法流程示意图;[0025]图2为实施例中软件模糊测试原理图;[0026]图3为实施例中结合word2vec与LSTM神经网络模型构建分类模型示意图;[0027]图4为实施例中软件模糊测试装置示意图。具体实施方式:[0028]为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发
本文标题:【CN109885479A】基于路径记录截断的软件模糊测试方法及装置【专利】
链接地址:https://www.777doc.com/doc-7439362 .html