解决方案需求
数字化转型正在成为社会发展的新常态,智能AI技术、大数据和5G网络新技术将推动社会各行各业迈入数字新基建的新时代,构建一套完美的解决方案方能扬帆领航。
了解更多了解更多

FUZZING模糊测试的技术原理

作者:容域科技 发布时间:2022-12-05
模糊测试是一种发现软件漏洞非常有效的技术,通过它可以提高软件的安全性和健壮性,也是软件开发生命周期SDLC框架的重要组成部分。它的工作原理是通过提供大量畸形数据输入给被测程序,触发程序的崩溃或异常执行状态。通常情况下,它的工作流程包含如下6步:
步骤一:识别目标系统在对模糊测试工具或技术做出选择时,我们需要先确定被测对象,了解被测对象的类型,比如被测目标是客户端程序还是服务端程序,二进制还是源代码被测对象是否出现过漏洞等,了解清楚之后我们才可以有效地给出准确的测试计划。
步骤二:识别输入大部分可被利用的安全漏洞都是由于应用程序没有对用户的输入进行校验或没有对非法输入进行处理而造成的。是否能找到所有的输入向量 (Input vector) 是模糊测试能否成功的关键。寻找输入向量的原则是:向目标应用发送的任何东西,例如头 (Headers)、文件名 (File Name)、环境变量 (Environment variables),注册表键 (Registry keys),以及其他信息,都可能是潜在的模糊测试变量。
步骤三:生成模糊数据一旦识别出输入向量,就可以生成模糊测试数据。可依据测试对象的特征,制定相应的模糊测试数据生成策略。通常,可通过生成或变异己有的数据,利用程序动态运行时产生的临时数据,动态生成数据。
步骤四:使用模糊数据执行测试执行过程可能包括发送数据包给目标应用程序、打开一个文件或发起一个目标进程。同样,这个过程中的自动化也是至关重要的。没有自动化,便无法执行真正的模糊测试。
步骤五:监控系统行为在模糊测试的过程中,我们要实时监控故障或异常,及时发现问题,这是模糊测试过程中一个至关重要的环节。试想一下,对程序进行模糊测试的过程中,当执行某个测试用例目标程序发生异常时,倘若没有异常监视模块,测试人员或许根本不知道目标程序发生了异常,更无法找出触发异常的样本及相关信息,整个测试过程将会毫无意义。由于模糊测试过程周期较长,当测试用例的数目较多时,通过人工的方式监视目标软件是非常低效的,所以目前异常监视往往采用自动化的方式来实现,其中常用的异常监视技术依据原理分为两种:基于调试的方法和基于插桩的方法。基于调试的方法意在调试模式下启动目标软件,通过操作系统平台提供的调试API,开发有针对性的异常监测模块。此方法实现异常监视难度虽大,但更高效。相较于基于调试的方法,基于插桩的方法虽性能有所降低,但功能却异常强大。插桩技术是指在保证原有程序逻辑完整性的基础上,在程序中插入探针,通过探针采集代码中的信息(方法本身、方法参数值、返回值等)并在特定的位置插入代码段,从而收集程序运行时的动态上下文信息。目前常用的插桩方法分为静态代码插桩(源代码、中间码、二进制)和二进制代码动态插桩。
步骤六:记录缺陷,确定可利用性一旦确定被测目标存在故障,则需要确定所发现的bug是否可复现,重现故障最常用的手段就是重放检测,即调用数据包重放工具将转储的网络数据包进行重放。重现成功后,还需进一步判断该bug是否可被利用。
模糊测试是提高系统质量与安全水平,降低潜在风险的重要手段,现如今模糊测试技术已广泛应用于工业互联网、智能车企、能源等众多行业。FUZZING模糊测试系统可以针对智能车企的蓝牙、WiFi等协议进行安全检测,协议覆盖广,检测粒度细;无垠代码模糊测试系统针对源码安全检测,依托遗传变异算法、覆盖引导等技术,融合自身引擎创新,可以对目标程序进行更精准的安全测试。
 
 

全部方案

数字新基建
等保云灾备