影响模糊测试效果的一些关键因素有:
测试点:由于模糊测试是通过数据通道的,所以测试点一般会选择数据通道的入口点或者可信边界点,如网络端口和协议,外部传人文件和文件类型,RPC请求端口。
样本选择:模糊测试的效果与覆盖能力,与样本选择的好坏极其相关,实施模糊测试必须依据上面的测试流程,分析和选择覆盖面广,便于测试的多个样本来保证测试的效果。
数据关联性:由于模糊测试对数据的变异依赖于安全经验,对数据含义并不了解,所以如果一个样本是数据关联的,模糊测试由于无法同步这种关联,导致生成的样本都成为无效样本,在程序预处理之前就判断为不合格不再继续,这样就达不到测试的效果。数据存在关联性的软件和程序并不适合采用模糊测试,现在有一些替代的技术,如智禽%模糊测试,允许用户描述数据结构的关联性,以辅助生成符合关联规则的测试样本。
自动化框架:实现无人值守自动化测试和记录,是提高黑盒安全测试禽邑力的关键。黑盒安全测试依靠大量的异常样本来进行测试,靠机器替代部分人力来发现安全问题,实现无人值守自动化测试和记录就是必须的组件。几乎所有的黑盒安全测试都支持自动化框架,以及行为录入回放的功能,以便更好的实施自动化测试。
异常监控与异常恢复:发现异常的能力是发现漏洞的前提。目前大多数黑盒安全测试工具只支持对程序崩溃异常的发现,其实这是远远不够的,很多异常并不直接表现为程序的崩溃,如VISTA/WIN7下的堆溢出,受GS保护的堆栈溢出,资源消耗型拒绝服务等。好的黑盒模糊测试工具需要对更多地异常进行监控。此外,为保障安全测试的效果和自动化过程,除了对于发现的异常进行现场保护记录外, 还需要恢复异常状态以进行后续的测试,并保证准人工分析异常原因,判断是否为潜在的安全漏洞,如果是安全漏洞,就需要进一步分析其危害性、影响范围、修复建议,以及临时防范措施。 由于可能产生大量的异常报告,通过一些辅助分析工具,如同源异常归并等,可以有效的节省人工分析的成本。