针对二进制可执行文件的模糊测试与符号执行相结合的漏洞检测系统技术方案

技术编号:17994920 阅读:29 留言:0更新日期:2018-05-19 12:05
针对二进制可执行文件的模糊测试与符号执行相结合的漏洞检测系统,属于计算机漏洞检测软件开发技术。为了在二进制文件漏洞检测场景中加强检测的深度、提高检测效率。包括经优化设计的模糊器模块、经优化设计的符号执行模块和模糊器跳转符号调度执行模块,引用入缓存探索器和任务协作模块。本发明专利技术将模糊测试与符号执行的优势结合在一起进行二进制执行文件漏洞的检测。本发明专利技术系统进行了评估实验,采用DARPA网络大挑战的资格赛提供的应用程序作为数据集,设置了对单独模糊测试、单独符号执行、以及本发明专利技术实现的漏洞挖掘系统三个对象的对比实验,本发明专利技术效果显著,加速了二进制程序隔间的探索,大大加速了漏洞挖掘系统的运行速度。

Vulnerability detection system for binary executable files based on fuzzy test and symbol execution

A vulnerability detection system based on Fuzzy testing and symbol execution for binary executable files is a software development technology for computer vulnerability detection. In order to enhance the detection depth and improve the detection efficiency in binary file vulnerability detection scenario. It includes the optimally designed fuzzy module, the optimized symbol execution module and the fuzzy jump symbol scheduling module, and cites the caching explorer and the task cooperation module. The invention combines the advantages of fuzzy testing and symbol execution to detect binary executable file vulnerabilities. The invention system has carried out the evaluation experiment, using the application program provided by the DARPA network big challenge qualification match as the data set, setting up the contrast experiment on three objects of the single fuzzy test, the single symbol execution, and the vulnerability mining system realized by the invention. The invention has a remarkable effect and accelerates the binary program compartment. Exploration has greatly accelerated the speed of vulnerability mining system.

【技术实现步骤摘要】
针对二进制可执行文件的模糊测试与符号执行相结合的漏洞检测系统
本专利技术涉及一种模糊测试与符号执行相结合的漏洞检测系统,属于计算机漏洞检测软件开发技术。
技术介绍
随着计算机科学技术和互联网技术飞速发展,软件安全问题层出不穷,软件安全一直备受关注。在软件安全性测试领域,模糊测试和符号执行是两种使用较为广泛的测试方法。模糊测试最初是作为测试UNIX系统程序的几个工具之一引入的。已广泛用于黑盒测试,但是缺乏指导,基于先前输入的随机突变产生新的输入,不能控制应用中的某条路径被指向。而动态符号执行解释应用程序,使用符号变量的模拟用户输入,跟踪条件跳转产生的约束,并使用约束求解器创建输入以及驱动程序代码按特定路径向下执行。然而条件分支依赖于符号值,则通常满足已采用和未采用条件。因此执行状态必须分叉,而且必须探索两条路径。这快速导致了众所周知的路径爆炸问题。由于现有技术具有的一些瓶颈问题,现代自动化分析技术产生的大多数用来触发缺陷的输入仅能表现软件中的浅层错误。现有技术中没有提出能结合模糊测试和符号执行两种方法优势的一种二进制执行文件漏洞检测技术。现有技术中的检测方存在检测深度不够、检测效率低的问题。
技术实现思路
本专利技术的目的是提供一种针对二进制可执行文件的模糊测试与符号执行相结合的漏洞检测系统,以在二进制文件漏洞检测场景中加强检测的深度、提高检测效率。本专利技术为解决上述技术问题采取的技术方案是:一种针对二进制可执行文件的模糊测试与符号执行相结合的漏洞检测系统,所述漏洞检测系统包括:一、经优化设计的模糊器模块,包括:数据生成模块:功能为产生随机输入数据,以便用于探索程序执行路径,可根据配置的协议格式生产指定格式的数据;数据输入执行模块:读取测试数据构造模块生成的数据,输入到目标二进制程序中,使用不同输入不断重复执行二进制程序;漏洞产生监控模块:监控二进制程序执行不同输入数据后,是否发现指定的signal产生异常情况;误报自动分析模块:定位漏洞产生监控模块发现的漏洞,并对发现的缺陷进行分析是否为可利用的有价值的缺陷;挖掘结果记录模块:将程序中可能存在软件漏洞的执行序列记录生成日志文件并输出,自动去除重复的记录;二、经优化设计的符号执行模块,包括符号执行的条件约束模块,符号执行的条件约束模块用于确保经优化设计的符号执行模块的输出结果与经优化设计的模糊器模块的输出结果一致,同时保持发现新的状态转换的能力;符号执行路径查找模块,用于增加符号执行引擎的可伸缩性;三、模糊器跳转符号调度执行模块,包括模糊器与符号执行的跳转模块,用于弥补模糊测试的根本弱点,通过符号执行的力量来确定通过复杂检查所需的特定输入;当经优化设计的模糊器模块的参数达到预定值(与输入长度成正比)而没有识别新的状态转换时,检查在当前分区中认为“感兴趣”的输入后调用符号执行引擎;缓存探索器,用于减少昂贵的符号引擎调用的次数以发现更多的状态转换,直接位于新发现的状态转换之后;所述缓存探索器探索状态转换的周围区域,直到探索器遍历配置数量的基本块;探索达到了预定数量后,符号执行就会为探索器发现的所有路径确定输入;任务协作模块,用于数据流转移;符号执行若找到新的可驱动程序继续执行的输入,会将输入publish到监听进程监听的redis管道中;监听到新的输入数据时,监听进程将会把输入数据写入到输入队列目录的新建文件中;之后,模糊器读取到新建的输入文件后,继续执行模糊测试,直到再次卡住。进一步地,针对所述符号执行的条件约束模块,在将约束条件输入到符号执行的条件约束模块的求解器并生成新数据之前,对约束条件进行的优化,包括:1)约束条件插桩缓存:中间代码中插入的辅助插桩程序对之前已经缓存过的约束不再重复生成;2)约束条件简化:在路径约束进行求解时,进行以下两个方面处理:a)剪枝无关约束:假设所有变量的关键属性不为规定值,即相关的污点属性都不包含有关键输入,则可以去除当前约束条件;b)具化变量:在剩下的约束条件中,对关键属性不包含关键输入的无关变量,使用二进制程序实际执行时得到的具体数值进行变换,简化生成的路径约束条件;优化之后生成的路径约束条件将输入到求解器进行约束求解,假如得不到结果即可认为该路径对应的隔间不能到达;假设该路径约束条件可以得到可行解,则将求解器得到的输入数据加入到目标队列中,模糊器将从队列中得到输入执行,或者符号执行也会从队列中进行选择,作为下一个输入数据继续执行。进一步地,所述符号执行路径查找模块,其主要执行流程如下:1)检查redis中该二进制的已跟踪集合中是否已经包含当前输入;2)将当前输入写入该二进制文件redis已跟踪集合中;3)初始化符号执行跟踪引擎;4)设置输入具化参数,包括内存阈值、寄存器阈值;5)更新已经过的路径;6)当下一分支的active数量大于0且基本块数量小于路径数,执行以下操作:a)检查redis中该二进制的已完成集合中是否包含该输入;b)对于每条丢失路径,通过下式hit=bool(ord(bitmap[cur∧prev])∧0xff)判断当前地址与丢失分支的最后一个跟踪地址(符号执行前一个跟踪到的地址)是否未相遇;未相遇则执行c);hit表示当前地址与丢失分支的最后一个跟踪地址(符号执行前一个跟踪到的地址)是否未相遇bool表示布尔运算,bitmap表示配置文件,cur表示当前地址,prev表示上一次地置,0xff表示16进制常量;c)移除该路径的预约束;d)当前转移与缓存探索器发现的转移都写回到redis。进一步地,在所述模糊器与符号执行的跳转模块中,所述“感兴趣”的输入的识别条件为:其中如果输入满足以下两个条件之一,则模糊器将其识别为感兴趣:1)使应用程序采取的路径,触发了状态转换;2)使应用程序采取的路径,放置到了唯一的“循环桶”。进一步地,在所述模糊器与符号执行的跳转模块中,采用celery分布式任务队列进行任务分发与管理,其中分发队列采用rabittmq消息队列,任务完成或中断时采用redis存储任务状态,恢复后可继续执行;模糊器与符号执行的跳转模块包含两个任务队列:1)模糊器(fuzz)接收二进制文件路径作为参数,输入为默认初始化或从文件读入,并初始化模糊器,开启监听进程监听符号执行产生的新输入;循环检查模糊器,当没有发现崩溃也没有超时,检查fuzzer_stats文件中的pending_favs属性,为0时表示模糊器卡住,将任务交给符号执行处理;当发现崩溃,将崩溃信息写入redis,并撤销仍在执行的符号执行任务;2)符号执行(concolic)读取模糊器输出目录中的fuzz_bitmap文件,并写入redis;对于fuzzer输出目录中的每一个未被跟踪过的输入文件,读取redis中的模糊器bitmap,并开启符号执行引擎。进一步地,所述缓存探索器,还用于防止模糊器在接受符号执行生成的输入后被卡住;缓存探索器在确定当前转移后执行,接收参数为当前发现的路径,并将当前路径周围区域的转移同时写回redis。进一步地,在所述任务协作模块中,模糊器任务产生的输出记录到日志文件fuzzer-out.log,符号执行任务产生的输出记录到日志文件concolic-out.log;监听进程、模糊器、符号执行协同工作。本专利技术的有益本文档来自技高网...
针对二进制可执行文件的模糊测试与符号执行相结合的漏洞检测系统

【技术保护点】
一种针对二进制可执行文件的模糊测试与符号执行相结合的漏洞检测系统,其特征在于:所述漏洞检测系统包括:一、经优化设计的模糊器模块,包括:数据生成模块:功能为产生随机输入数据,以便用于探索程序执行路径,可根据配置的协议格式生产指定格式的数据;数据输入执行模块:读取测试数据构造模块生成的数据,输入到目标二进制程序中,使用不同输入不断重复执行二进制程序;漏洞产生监控模块:监控二进制程序执行不同输入数据后,是否发现指定的signal产生异常情况;误报自动分析模块:定位漏洞产生监控模块发现的漏洞,并对发现的缺陷进行分析是否为可利用的有价值的缺陷;挖掘结果记录模块:将程序中可能存在软件漏洞的执行序列记录生成日志文件并输出,自动去除重复的记录;二、经优化设计的符号执行模块,包括符号执行的条件约束模块,符号执行的条件约束模块用于确保经优化设计的符号执行模块的输出结果与经优化设计的模糊器模块的输出结果一致,同时保持发现新的状态转换的能力;符号执行路径查找模块,用于增加符号执行引擎的可伸缩性;三、模糊器跳转符号调度执行模块,包括模糊器与符号执行的跳转模块,用于弥补模糊测试的根本弱点,通过符号执行的力量来确定通过复杂检查所需的特定输入;当经优化设计的模糊器模块的参数达到预定值而没有识别新的状态转换时,检查在当前分区中认为“感兴趣”的输入后调用符号执行引擎;缓存探索器,用于减少昂贵的符号引擎调用的次数以发现更多的状态转换,直接位于新发现的状态转换之后;所述缓存探索器探索状态转换的周围区域,直到探索器遍历配置数量的基本块;探索达到了预定数量后,符号执行就会为探索器发现的所有路径确定输入;任务协作模块,用于数据流转移;符号执行若找到新的可驱动程序继续执行的输入,会将输入publish到监听进程监听的redis管道中;监听到新的输入数据时,监听进程将会把输入数据写入到输入队列目录的新建文件中;之后,模糊器读取到新建的输入文件后,继续执行模糊测试,直到再次卡住。...

【技术特征摘要】
1.一种针对二进制可执行文件的模糊测试与符号执行相结合的漏洞检测系统,其特征在于:所述漏洞检测系统包括:一、经优化设计的模糊器模块,包括:数据生成模块:功能为产生随机输入数据,以便用于探索程序执行路径,可根据配置的协议格式生产指定格式的数据;数据输入执行模块:读取测试数据构造模块生成的数据,输入到目标二进制程序中,使用不同输入不断重复执行二进制程序;漏洞产生监控模块:监控二进制程序执行不同输入数据后,是否发现指定的signal产生异常情况;误报自动分析模块:定位漏洞产生监控模块发现的漏洞,并对发现的缺陷进行分析是否为可利用的有价值的缺陷;挖掘结果记录模块:将程序中可能存在软件漏洞的执行序列记录生成日志文件并输出,自动去除重复的记录;二、经优化设计的符号执行模块,包括符号执行的条件约束模块,符号执行的条件约束模块用于确保经优化设计的符号执行模块的输出结果与经优化设计的模糊器模块的输出结果一致,同时保持发现新的状态转换的能力;符号执行路径查找模块,用于增加符号执行引擎的可伸缩性;三、模糊器跳转符号调度执行模块,包括模糊器与符号执行的跳转模块,用于弥补模糊测试的根本弱点,通过符号执行的力量来确定通过复杂检查所需的特定输入;当经优化设计的模糊器模块的参数达到预定值而没有识别新的状态转换时,检查在当前分区中认为“感兴趣”的输入后调用符号执行引擎;缓存探索器,用于减少昂贵的符号引擎调用的次数以发现更多的状态转换,直接位于新发现的状态转换之后;所述缓存探索器探索状态转换的周围区域,直到探索器遍历配置数量的基本块;探索达到了预定数量后,符号执行就会为探索器发现的所有路径确定输入;任务协作模块,用于数据流转移;符号执行若找到新的可驱动程序继续执行的输入,会将输入publish到监听进程监听的redis管道中;监听到新的输入数据时,监听进程将会把输入数据写入到输入队列目录的新建文件中;之后,模糊器读取到新建的输入文件后,继续执行模糊测试,直到再次卡住。2.根据权利要求1所述的针对二进制可执行文件的模糊测试与符号执行相结合的漏洞检测系统,其特征在于:针对所述符号执行的条件约束模块,在将约束条件输入到符号执行的条件约束模块的求解器并生成新数据之前,对约束条件进行的优化,包括:1)约束条件插桩缓存:中间代码中插入的辅助插桩程序对之前已经缓存过的约束不再重复生成;2)约束条件简化:在路径约束进行求解时,进行以下两个方面处理:a)剪枝无关约束:假设所有变量的关键属性不为规定值,即相关的污点属性都不包含有关键输入,则可以去除当前约束条件;b)具化变量:在剩下的约束条件中,对关键属性不包含关键输入的无关变量,使用二进制程序实际执行时得到的具体数值进行变换,简化生成的路径约束条件;优化之后生成的路径约束条件将输入到求解器进行约束求解,假如得不到结果即可认为该路径对应的隔间不能到达;假设该路径约束条件可以得到可行解,则将求解器得到的输入数据加入到目标队列中,模糊器将从队列中得到输入执行,或者符号执行也会从队列中进行选择,作为下一个输入数据继续执行。3.根据权利要求2所述的针对二进制可执行文件的模糊测试与符号...

【专利技术属性】
技术研发人员:张伟哲方滨兴余翔湛何慧刘亚维张宇刘川意王焕然宋博宇
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:黑龙江,23

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

1