随着网络空间安全进入纵深地带,核心战场从外部边界防护迁移到软件内部安全上,软件内部漏洞挖掘也将成为未来安全体系中最重要的环节。
企业挖掘漏洞的方式一般以人工+静态分析的代码审计工具。然而随着代码行的大幅增加,人工审核的方式将非常吃力,而SAST通过漏洞规则去做模式匹配,只能查找已知漏洞,误报率高,并且对复杂逻辑的代码场景以及未知缺陷无能为力。而模糊测试可通过实时监控被测对象的工作状态,发现被测对象潜在的安全漏洞,是一种高效保证软件质量的动态测试方法。
今天我们就以开源网安模糊测试(SFuzz)为例,来谈一谈模糊测试是如何高效挖掘漏洞、精确定位问题的。
高效挖掘
高效挖掘漏洞需要满足以下几个方面:测试“广”,测试范围涵盖多种场景,确保不遗漏;测试“深”,测试行为不止停留在表面,更需深度解析,保证质量;测试“准”,要对系统的不同状态采用不同的策略,减少干扰,降低误报。
测试“广”
SFuzz引擎算法中,融合了基于变异和生成两种方式生成测试用例。整理出一套完整的“协议规范内的通用语言”,以兼容各种不同的协议,使得整个模板解析部分更具有通用性,覆盖各种应用场景。SFuzz可以对环境变量和参数、Web应用程序、文件格式、网络协议、Web浏览器、嵌入式和系统内核等进行测试,研发团队无需大量人工编写测试用例、搭建硬件环境,极大地提升检测效率。
测试“深”
SFuzz根据模板引擎解析出数据结构和行为,搭配模糊化算法生成具体的模糊化数据,相比于完全随机的模糊,优秀的算法能进一步保障模糊化出来的数据质量,更容易测出潜在的安全缺陷。
测试“准”
SFuzz支持超过60种变异算法,实现对测试用例的智能化变异,动态调整测试调度策略,减少外部干扰,从而降低误报。
精准定位
很多检测工具只能将定位到文件夹或文件,开发人员进一步精准定位漏洞需要花费很多时间,效率低。而SFuzz采用随机化序列技术,可将缺陷精准定位到代码行,并重复生成用例,重构相同的测试序列,再现“错误现场”,开发人员可以深度了解漏洞情况,快速修复缺陷。
开源网安模糊测试平台(SFuzz)
开源网安模糊测试平台(SFuzz)是基于模糊测试技术自主研发的黑盒安全检测产品,专注于面向文件格式和网络协议的模糊测试,通过向目标程序输入基于模型智能生成的测试用例,高效检测出各种软件、硬件系统中的未知漏洞。SFuzz具有模块化、跨平台、自动化测试及高效可控等优点。