模糊测试方法和设备技术

技术编号:26170558 阅读:20 留言:0更新日期:2020-10-31 13:38
提供一种模糊测试方法和设备,所述模糊测试方法包括:向被测对象测试入口注入测试输入;获取基于所述测试输入所述被测对象被执行过程中的资源访问反馈,其中,所述资源访问反馈指示所述被测对象对资源的访问情况;根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。根据所述测试方法和设备,能够通过利用资源访问反馈来引导模糊测试的方式,获取可用输入用例,从而基于获取的可用输入用例来对同一执行路径进行深入测试,来达到发现更多的深层次漏洞的技术效果。

【技术实现步骤摘要】
模糊测试方法和设备
本专利技术总体来说涉及计算机
,更具体地讲,涉及一种模糊测试方法和设备。
技术介绍
模糊测试(FuzzTesting,简称“Fuzzing”)是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。其核心思想是将无效数据,意料之外的数据或随机数据中的一个或多个的组合作为输入注入到一个程序中,并监视程序异常,如崩溃、内置代码断言失败、潜在的内存泄漏、日志异常等,以发现可能的程序错误。目前模糊测试可被分为黑盒测试、白盒测试以及灰盒测试三大类,其中,灰盒测试又称为覆盖率指导的突变模糊测试,是指介于白盒测试与黑盒测试之间的一种测试,不仅关注输出和输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。例如代码覆盖率。目前,在灰盒测试中,可通过改变输入的种子来生成新的测试用例,例如,灰盒测试使用程序插桩的方式来跟踪输入在目标系统执行过程中产生的代码覆盖率,模糊管理器使用产生的代码覆盖率来决定要添加到输入序列中的输入,以使得代码覆盖率得到提升。例如,如果一个输入能产生新的执行路径,则会保留该输入,否则,丢弃该输入。通过这种连续循环的方式进行模糊处理,可以贡献更多的输入用例。然而,高代码覆盖率并不意味能够发现真正的漏洞。实际上,大多数路径都与安全性问题无关,并且软件漏洞通常是由不正确使用对安全性敏感的函数(例如类似于内存操作的strcpy())引起的。换句话说,真正的漏洞实际上隐藏在一些包含strcpy()等内存操作函数的执行路径,然而,实际上会有数千种可能的输入组合可以到达执行路径。但是,现有的代码覆盖率所指导的灰盒测试到达指定的执行路径时,将丢弃其他可以到达该路径的输入,因此,现有的灰盒测试会因此丢失了隐藏在该路径中的漏洞或者退化为黑盒测试。以图1为例,假设种子变异算法的规则是每次对输入扩展指定的长度,例如100。当输入为5个字符时,图1中的代码都将会执行。当下次输入为105个字符时,基于代码覆盖率的模糊测试(即,灰盒测试)会认为此次执行没有产生新的代码覆盖,将会停止对输入的扩展。然而,事实上,只有当输入为大于1000个字符的字符时,图1中的代码中才存在缓冲区溢出。因此,此时的代码覆盖率引导的模糊测试将会失效并退化为黑盒测试。
技术实现思路
本专利技术的示例性实施例在于提供一种模糊测试方法和设备,以克服现有的基于代码覆盖率的模糊测试可能会丢失了隐藏在某个路径中的漏洞或者退化为黑盒测试的缺陷。根据本专利技术的示例性实施例的一方面,提供一种模糊测试方法,包括:向被测对象测试入口注入测试输入;获取基于所述测试输入所述被测对象被执行过程中的资源访问反馈,其中,所述资源访问反馈指示所述被测对象对资源的访问情况;根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。通过这种方式,可以通过利用资源访问反馈来引导模糊测试的方式,获取可用输入用例,从而基于获取的可用输入用例来对同一执行路径进行深入测试,来达到发现更多的深层次漏洞的技术效果。可选地,所述模糊测试方法还包括:确定基于所述测试输入所述被测对象所执行的代码行;所述根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列具体包括:如果所述被测对象所执行的代码行未产生新的代码行,则根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列。通过这种方式,可在代码覆盖方式的基础上结合资源访问反馈方法来确定测试输入是否是可用的测试用例,能够增加测试输入判断的准确性。可选地,所述获取资源访问反馈的步骤包括:获取所述被测对象为处理所述测试输入所申请的资源组,其中,所述资源组包括至少一个资源;获取与所述资源组对应的资源标识码;获取与所述资源标识码对应的访问标识码;将获取的访问标识码与对应的资源标识码确定为一个标识对;确定与所述标识对相应的资源中是否存在被首次访问的资源;如果存在被首次访问的资源,则产生指示已访问新资源的资源访问反馈;如果不存在被首次访问的资源,则产生指示未访问新资源的资源访问反馈;其中,所述资源标识码是指用于标识资源申请程序指令所在位置的符号,所述访问标识码是指用于标识资源访问程序指令所在位置的符号。通过这种确定标识对所对应的资源是否被访问的方式,消除了实际地址和分配长度在实际执行时可变所导致的访问确认不准确的缺陷。可选地,所述根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列的步骤包括:确定所述资源访问反馈是否指示已访问新资源;如果所述资源访问反馈指示已访问新资源,则将所述测试输入添加到测试输入队列;如果所述资源访问反馈指示未访问新资源,则丢弃所述测试输入。可选地,所述模糊测试方法还包括:若所述资源访问反馈指示已访问新资源,确定与所述标识对相应的访问标识码所标识的资源访问的程序指令执行时所访问的地址区间;如果确定的地址区间未位于与所述标识对相应的资源的起始地址和结束地址之间,则发出指示所述被测对象异常的报警信号。通过这种方式,可以及时发现因溢出导致的被测对象异常的问题。可选地,所述资源包括以下项中的至少一项:内存、网络连接池中的连接、图像中的像素、图的节点和图的边。根据本专利技术的示例性实施例的另一方面,提供一种模糊测试设备,包括:注入单元,用于向被测对象测试入口注入测试输入;获取单元,用于获取基于所述测试输入所述被测对象被执行过程中的资源访问反馈,其中,所述资源访问反馈指示所述被测对象对资源的访问情况;确定单元,用于根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。通过这种方式,可以通过利用资源访问反馈来引导模糊测试的方式,获取可用输入用例,从而基于获取的可用输入用例来对同一执行路径进行深入测试,来达到发现更多的深层次漏洞的技术效果。可选地,所述模糊测试设备还包括:代码行确定单元,用于确定基于所述测试输入所述被测对象所执行的代码行;所述确定单元,用于若所述代码行确定单元确定所述被测对象所执行的代码行未产生新的代码行,根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列。通过这种方式,可在代码覆盖方式的基础上结合资源访问反馈方法来确定测试输入是否是可用的测试用例,能够增加测试输入判断的准确性。可选地,所述获取单元包括:资源组获取子单元,用于获取所述被测对象为处理所述测试输入所申请的资源组,其中,所述资源组包括至少一个资源;资源标识码获取子单元,用于获取与所述资源组对应的资源标识码;访问标识码获取子单元,用于获取与所述资源标识码对应的访问标识码;标识对确定子单元,用于将获取的访问标识码与对应的资源标识码确定为一个标识对;资源访问确定子单元,用于确定与所述标识对相应的资源中是否存在被首次访问的资源,如果存在被首次访问的资源,则产生指示已访问新资源的资源访问反馈,如果不存在被首次访问的资源,则产生指示未访问新资源的资源访问反馈;其中,所述资本文档来自技高网
...

【技术保护点】
1.一种模糊测试方法,包括:/n向被测对象测试入口注入测试输入;/n获取基于所述测试输入所述被测对象被执行过程中的资源访问反馈,其中,所述资源访问反馈指示所述被测对象对资源的访问情况;/n根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。/n

【技术特征摘要】
1.一种模糊测试方法,包括:
向被测对象测试入口注入测试输入;
获取基于所述测试输入所述被测对象被执行过程中的资源访问反馈,其中,所述资源访问反馈指示所述被测对象对资源的访问情况;
根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。


2.如权利要求1所述的模糊测试方法,其中,所述模糊测试方法还包括:
确定基于所述测试输入所述被测对象所执行的代码行;
所述根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列具体包括:
如果所述被测对象所执行的代码行未产生新的代码行,则根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列。


3.如权利要求1或2所述的模糊测试方法,其中,所述获取资源访问反馈的步骤包括:
获取所述被测对象为处理所述测试输入所申请的资源组,其中,所述资源组包括至少一个资源;
获取与所述资源组对应的资源标识码;
获取与所述资源标识码对应的访问标识码;
将获取的访问标识码与对应的资源标识码确定为一个标识对;
确定与所述标识对相应的资源中是否存在被首次访问的资源;
如果存在被首次访问的资源,则产生指示已访问新资源的资源访问反馈;
如果不存在被首次访问的资源,则产生指示未访问新资源的资源访问反馈;
其中,所述资源标识码是指用于标识资源申请程序指令所在位置的符号,所述访问标识码是指用于标识资源访问程序指令所在位置的符号。


4.如权利要求3所述的模糊测试方法,其中,所述根据所述资源访问反馈确定是否将所述测试输入添...

【专利技术属性】
技术研发人员:屈建云吴洪泽
申请(专利权)人:三星中国半导体有限公司三星电子株式会社
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1