模糊测试是什么
模糊测试的核心思想是自动或半自动生成特殊测试数据并发送给被测对象,实时监控被测对象的工作状态(崩溃、断言失败、服务中断等),并发现被测对象潜在的安全漏洞,如缓冲区溢出、死锁等,是安全测试和渗透测试的重要手段之一。
模糊测试的特点:
自动化。模糊测试是一种自动化技术,依靠计算机软件自动执行,测试效率远高于人工测试。
随机性。本质是依赖随机函数生成随机测试用例,随机性意味着不重复、不可预测,可能有意想不到的输入和结果。
大数定律。根据概率论里面的“大数定律”,只要我们重复的次数够多、随机性够强,那些概率极低的偶然事件就必然会出现。
与其他安全测试技术的对比
静态分析是指在不运行软件的前提下进行的一种分析技术。易集成到开发过程中,自动化程度较高,但缺少运行时的动态信息,无法对潜在漏洞进行确认,误报率较高。
动态分析是一种通过动态加载运行目标软件,监测程序堆栈信息、内存使用情况、变量值等状态信息及程序输出来验证或发现软件漏洞的技术。动态分析具有极高的准确率,涉及技术也较为复杂,对分析人员要求较高,自动化程度不高,有较大的局限性。
模糊测试并不需要对目标程序源代码或二进制程序进行分析。通过向待测试目标软件输入一些半随机的数据并执行程序,监控程序的运行状况,同时记录并进一步分析目标程序发生的异常来发现潜在的漏洞。优点是误报率低,缺点是难以对复杂的攻击手段进行检测,比如访问控制、组合攻击等。
发展历程
在1988—2004年之间诞生的模糊测试方法大多是黑盒模糊测试,其中比较重要的是Protos以及Peach。
2007年,受益于动态符号执行和测试数据生成技术的进步,诞生了Sage模糊测试方法,该方法是使用符号执行的白盒模糊测试方法。
2008年,为了对输入数据高度结构化的目标进行模糊检测,诞生了jsfunfuzz,成为之后对输入数据高度结构化目标进行模糊测试的重要指导思想
沿着继续改进白盒模糊测试的方向,在2009年出现了Vganesh。使用污点分析技术替代了开销巨大的符号执行技术。
使用少量目标内部信息进行模糊测试的思想带来了灰盒模糊测试,该方向最重要成果是在2013年出现的AFL模糊测试工具。AFL通过使用进化算法以及精心构造的突变策略,获得了很好的模糊测试效果,发现了大量漏洞,也因此被研究人员所关注,从2013年至今诞生了大量衍生性工作。
上述说明了模糊测试发展过程中比较重要的几个时间点,期间进行了开创性或者影响深远的工作,还预测了未来模糊测试可能取得突破的方向。依据是:程序分析技术是与模糊测试结合最为紧密的领域,因此下一个对模糊测试产生重大影响的时间节点很可能来自两者的结合领域。另外,机器学习在图像和自然语言处理等领域大放异彩,与模糊测试结合后很可能在未来给模糊测试带来性能上的巨大提升。
学术界的研究
模糊测试相关研究工作,一方面集中在提升模糊测试漏洞检测能力,另一方面集中在拓宽模糊测试应用范围。为了提升模糊测试检测能力,业界引入了诸如符号执行、污点分析等程序分析技术,提升了模糊测试在覆盖率等评估指标上的表现,进而获得了更好的漏洞检测效果。为了拓宽模糊测试的应用范围,模糊测试目前已被应用到了诸如物联网、内核安全等领域中,并为满足相应应用领域的特殊要求,诞生了不同的研究成果。
通过检索2010-2020年的网络与系统安全国际四大顶级会议 ,发现2018年以后的成果数量在急速增加,因此基于这些文献,分析与归纳模糊测试的研究现状与方向有重要现实意义。
国外商业化产品
研发背景
安全漏洞是安全研究的生命线,而安全漏洞层出不穷的问题一直困扰着安全研究人员。研究人员很早应用模糊测试检测软件问题,效果惊人。模糊测试被大型软件公司作为寻找软件安全漏洞的关键技术引入到安全开发生命周期(SDL),如微软于2005年3月发布的SDL文档已经明确使用模糊测试工具寻找安全漏洞,并称“效果非常鼓舞人心”。
近年来车联网、物联网、工业互联网以及5G等的快速发展,安全测试被提出了更多更高的要求。加上美国技术封锁,“国产化替代”、解决“卡脖子”技术的国产科技企业越来越多,而在整个国产替代话题内,芯片成为了全民关心的焦点,从整个IT行业的产业链来看,除了芯片之外,还要解决软件方面的“国产替代”,特别是软件安全领域。
另外,随着软件安全开发生命周期的普及,安全测试慢慢变成了QA中的必要环节,大型开发中心对模糊测试平台无论是功能还是性能要求更高。企业级的商业模糊测试平台逐步会变成所有大型安全开发中心的必要配置。
开源网安模糊测试平台(SFuzz)
开源网安模糊测试平台(SFuzz)是国内首批自主研发的基于模糊测试技术的黑盒安全检测产品,拥有多个相关发明专利。专注面向文件格式和网络协议的模糊测试,具有模块化、跨平台、自动化测试及高效可控等优点,广泛应用于航空、航天、医疗、物联网、计算机、工业控制系统等领域。
开源网安模糊测试平台通过对协议的分析,编写模型文件,再结合变异算法策略,生成包含异常数据的测试用例,输入到被测对象中,观察其运行状态。从而帮助安全测试团队发现包括二进制程序、网络与物联网协议、嵌入式设备等目标潜在的安全漏洞。
整体架构
开源网安模糊测试平台采用管理平台和执行器分离策略。平台主要由两部分组成:平台管理端、测试代理。其中平台管理端是B/S架构,基于Web的可视化界面更易于用户操作,项目管理、测试配置等均在Web界面完成。测试代理采用的是C/S架构,负责与被测对象连接,实现将包含特殊数据的报文输入到被测对象,比如蓝牙音箱、WIFI热点等。
客户案例
中汽研
中汽研,立足电子电控、噪声&振动、节能&减排、主被动安全、新型工程院底盘五大技术方向等十余个性能领域。围绕产品研发技术服务、工具链提供、产品链提供、“卡脖子” 技术联合攻关等业务形态,持续稳步发展,得到行业内高度认可。
开源网安提供的车联网协议模糊测试模块,帮助中汽研检测汽车中诸如蓝牙音箱,Wi-Fi接收器等设备潜在的安全漏洞。减少了安全检测时间消耗和成本投入,提高了安全检测准确率,从而构建安全可信的产品。
博鼎实华
博鼎实华(北京)技术有限公司成立于2019年7月,是由泰尔信通(北京)投资管理有限公司全额出资的国有企业。公司由中国信息通信研究院中国泰尔实验室通过部分资源优化、业务整合而成立,是中国信通院全资院属企业。
开源网安提供了网络协议模糊测试支持,包括IP、ICMP、TCP及UDP等,对供应商网络基站等设备进行检测,以确保被测对象的健壮性达到要求。
海丰国际
海丰国际控股有限公司是一家总部位于香港的亚洲区领先的航运物流企业,业务领域涉及集装箱班轮运输、船舶管理、船舶经纪、国际货运代理、拼箱、项目物流、物流配送、报关、仓储、集装箱堆场、码头、船代、散杂货等领域。
开源网安通过对应用运行的网络服务系统和硬件设备运用各种模糊测试分析方法,最大程度发现开发和接收软件系统中所潜藏的安全隐患,从而减少甚至避免了可能在真实运行环境中受到黑客攻击,达到了信息安全的最终目的。