一种基于模式的动态漏洞挖掘集成系统和方法
【技术领域】
[0001]本发明涉及一种针对二进制程序的动态漏洞挖据集成系统和方法,属于软件工程和信息安全领域。
【背景技术】
[0002]随着信息技术的快速发展和社会的不断进步,信息对于现代社会的发展越来越重要,由此产生的信息安全问题也更加的受到人们的重视。网络安全作为信息安全的重要组成部分,关系国家安全和社会稳定,并且其重要性随着全球信息化步伐的加快而日趋突出。
[0003]一直以来,软件安全漏洞是导致各种网络安全的主要根源。据国家计算机病毒应急处理中心调查分析,“未修补网络(系统)安全漏洞”是网络安全事件发生的最主要原因。漏洞的发现及利用不仅仅出现在常见的网络设备和操作系统中,它越来越多的出现在了新的应用领域。未知的安全漏洞是蠕虫、病毒等恶意代码的重要传播途径,随着漏洞的危害越来越严重,发展趋势的形式也是日益严峻。归根结底,就是漏洞存在并被攻击者恶意利用。软件由于在设计初期考虑不周导致的漏洞造成的问题仍然没有得到很好的解决,人们依然用着“亡羊补牢”的方法来度过每一次攻击,利用漏洞的攻击成为人们心中永远的痛。
[0004]保障网络系统安全的一个重要前提就是,快速全面地挖掘系统中的安全漏洞,消除系统的安全隐患。国内外出现大量的专业漏洞研宄组织,如国内外病毒防范公司、白帽子组织、军方研宄组织和政治组织等,还有大量的民间研宄组织和爱好者。正是借着所有这些同兴趣者的共同努力,出现了大量有效的漏洞挖掘技术和成熟工具。
[0005]目前主要的漏洞检测方法分为白盒测试、黑盒测试和灰盒测试。其中白盒测试是针对源程序进行静态漏洞检测,它能检测到代码中的每条路径和分支,但是检测到的缺陷可能在运行中不能触发。黑盒测试主要针对二进制程序,它是一种动态漏洞挖掘方法,它不需要了解程序内部细节,找到的漏洞都是在程序运行中可触发的,但是由于把程序看做一个黑盒子进行测试,测试过程有很大的盲目性。而灰盒测试结合了白盒测试和黑盒测试的优点,既考虑程序结构,又在动态运行中检测漏洞。目前大部分的软件不提供源程序,难以开展有效的静态分析,尤其是在采用进口软件等商业软件,且无法完全掌控软件开发的各个环节的情况下,对软件实现的安全性进行深入分析和严格评估是确保信息系统安全的重要手段,灰盒测试就显得尤为重要了。
[0006]在针对二进制程序的动态漏洞挖掘过程中,最常用的方法就是白盒测试和黑盒测试,白盒测试检测到的缺陷可能在运行中不能触发,黑盒测试则具有很大的盲目性。同时,测试过程中往往利用单一的一种方法,效率低而且针对性较差,而且不同的漏洞具有不同的模式,不能对所有的漏洞类型一概而论。
【发明内容】
[0007]本发明技术解决问题:克服现有技术的不足,本发明提供了一种基于模式的动态漏洞挖掘系统和方法,它是一种基于灰盒测试的方法,同时针对具体的漏洞模式具体设计系统,并集成多种漏洞挖据技术,有效消除或降低了漏洞挖据过程制约因素,提升漏洞挖掘的效率。
[0008]本发明的技术解决方案:这种针对二进制程序的动态漏洞挖据集成系统和方法将符号执行、动态污点分析和模糊测试三种漏洞挖掘方法结合起来,明确了不同漏洞挖掘技术及工具之间的交叉验证关系和相互数据支持能力,依据特定的漏洞模式,将漏洞挖掘的核心流程按照流水线的模式进行组织,在可控时空条件下保证流水片段之间的数据关联和流水片段的并行化处理,实现漏洞挖掘工具的深度集成,提升漏洞挖掘过程的规模增效能力。本系统主要在待测试的可执行二进制程序、动态污点分析模块、约束求解模块和用例选择模块之间进行信息传递,其中:
[0009]动态污点分析模块主要实现对二进制可执行文件的插粧操作,从而获得程序的控制流结构,利用符号执行技术,将得到的信息形成符号化的输出,之后将输出结果传递给约束求解模块,通过约束求解器的计算可以得到新的输入数据,而这些新的数据都是通过对约束求解树进行深度遍历得到的,因而大大提高了测试的路径覆盖率,最后通过用例选择模块对测试用例进行排序,将这些测试数据重新输入应用程序中,这个过程就是模糊测试的过程。
[0010]本发明涉及基于模式的动态漏洞挖据集成系统和方法,它基于漏洞模式设计,采用任务流水机制,针对二进制程序实现了漏洞挖掘技术及工具的深度集成,主要包括动态污点分析、符号执行和模糊测试三种技术及相关工具。系统的实现包含了动态污点分析模块、测试用例选择模块、约束求解模块和管理模块。首先把种子用例传输给应用程序,动态污点分析模块会对污点数据在程序中的传播进行跟踪,并将传播踪迹用符号化表示出来,即结合了动态污点分析技术和符号执行技术,得到符号化的污点传播路径,之后作为约束求解模块的输入,约束求解得到新的测试用例,并将测试用例重新传输给应用程序,继续进行后续操作,整个过程都是在管理模块的统一调度管理下进行的。本发明提高了针对二进制程序的动态漏洞挖据的自动化程度和效率,结合动态污点分析技术和符号执行技术指导生成测试用例,生成的测试数据准确度和效率很高,使得模糊测试的过程更加有针对性。
[0011]一种基于模式的动态漏洞挖据集成系统,其特征在于:依据具体的漏洞模式设计,并采用任务流水机制,集成了动态污点分析、符号执行和模糊测试三种技术;包括动态污点分析模块、约束求解模块、用例选择模块和管理模块;动态污点分析模块使用了动态污点分析技术和符号执行技术,即采用灰盒测试方法,在动态执行程序的过程中考虑了二进制程序的结构,管理模块不断保存新的测试用例,这些测试用例都是对种子测试用例进行变异得到的,将其传递给动态污点分析模块进行测试的过程即使用了模糊测试技术,实现了对二进制程序的自动化测试;在考虑几个模块的集成时,需要分析不同模块核心技术和工具之间的关联性,对不同技术和工具的中间成果进行集成利用,最终将三种动态漏洞挖据技术和相应的工具集成,形成集成系统;
[0012]动态污点分析模块:结合动态污点分析技术和符号执行技术,将被测试的可执行二进制程序作为此模块的参数,同时标记二进制程序的输入数据为污点数据;执行此模块的过程就是对二进制程序进行动态插粧的过程,通过动态监控二进制程序的执行过程,获得污点数据在二进制程序中的执行轨迹,同时通过控制漏洞模式的配置,依据具体的漏洞模式设计在污染传播的过程中需要标记的操作,从而标记出相应的危险操作,最终将其以符号化的形式输出,得到符号化的污点传播踪迹;另一方面,当目前操作的测试用例执行完成后,管理模块会从测试用例集中选取一个测试用例传递给此模块,继续执行上述操作;
[0013]约束求解模块:采用STP求解器进行约束求解操作,输入文件是管理模块利用污点分析模块得到的污点传播踪迹文件,包含了二进制程序内部结构和跳转分支的条件信息,然后提取STP求解所需要的约束条件集合,计算相对应的输入符号应满足的条件;管理模块利用得到的约束条件生成新的测试用例,并保存到测试用例集合中;
[0014]用例选择模块:取出管理模块中保存的约束求解模块中生成的新的测试用例,然后计算每个测试用例相对于之前未被覆盖的代码块的代码覆盖率,为每一个测试用例打分,得分高的测试用例优先执行,并送至管理模块;通过这个优先执行代码覆盖率高的测试用例能够提高测试的代码覆盖率;
[0015]管理模块:实现动态污点分析模块、约束求解模块和用例选择模块之间的交互,协调模块之间的工作,同时能够保存所有的测试用例,并将能够导致目标可执行二进制程序崩溃的测试用例保存下来,使得触发漏洞的过程能够重现,具体功能实现如下:
[0016](I)将测试用例传递给动态污点分析模块,动态污点分析模块执行完成后,将输出的符号化的污点踪迹信息传递回管理模块;
[0017](2)将符号化的污点踪迹信息传递给约束求解模块,约束求解模块将约束求解得到的约束条件的计算结果传递回管理模块,管理模块根据这些值生成新的测试用例,保存到测试用例集合中;
[