模糊测试面面观 | 揭示真实世界中的漏洞发现过程

当今高度互联的数字世界中,利用软件安全漏洞入侵和纂改系统是黑客一种最常见的手段。为了提高软件的安全性,安全研究人员需要不断探索新的漏洞发现方法和技术。

在展示实践案例之前,我们先来看看漏洞是如何被发现的,漏洞发掘方法有很多种,以下是常见的几种。

01  反向工程

通过对已有的应用程序或系统进行反向工程分析,可以深入了解其内部机制和操作方式。这可能包括进行静态或动态分析、分析二进制文件、解析协议、了解组件之间的交互等。通过反向工程,可以挖掘出系统潜在的安全漏洞。

02  静态代码分析

静态代码分析是一种通过分析源代码或已编译的程序的二进制代码来发现潜在的漏洞。它可以检测代码中的逻辑错误、缓冲区溢出、空指针解引用等常见的安全问题。静态代码分析可以手动进行,也可以使用自动化工具来辅助进行。

03  动态分析

动态分析是一种通过运行目标系统并观察其行为来发现漏洞的方法。它可以涉及手动测试、代码注入、监视系统调用等技术。动态分析可以帮助检测运行时漏洞、内存错误、安全配置问题等。

04  Fuzzing(模糊测试)

模糊测试是一种自动化的漏洞挖掘技术,通过向目标系统输入不正确、非预期或随机的数据来引发系统潜在的安全问题。通过对应用程序、协议或操作系统的不同输入点进行持续的模糊测试,就可以发现系统潜在的漏洞。

下面,我们通过开源网安模糊测试工具(SFuzz)的真实案例,去深入了解漏洞发现的过程。

开源网安模糊测试平台(SFuzz)是自主研发的基于模糊测试技术的安全检测产品,包含协议模糊测试、Web API模糊测试、代码模糊测试三大功能模块,覆盖黑盒和灰盒测试技术,高效检测出各种软件、硬件系统中的潜在的安全漏洞。

某厂商漏洞挖掘过程实践案例

测试目标

对某厂商的工控设备进行Modbus TCP协议模糊测试,以挖掘出该设备潜在的安全漏洞。

测试过程

步骤一:解析协议,生成数据包

SFuzz测试引擎的模型解析器,对Modbus TCP协议进行解析,生成报文数据包(即种子输入)再通过近60种变异算法,随机抽取报文的的字段进行变异,形成无效、非预期或随机的数据。

步骤二:监控数据,排查异常

将经过变异器处理的数据,通过Modbus TCP协议通信协议,发送到工控设备系统,利用监视器监控其行为和响应,例如是否出现崩溃、内存泄漏、系统崩溃或其他异常情况。

步骤三:分析异常,分类评估

分析模糊测试期间触发的异常情况和错误,包括崩溃、DoS、漏洞暴露等,再将这些结果将根据严重性和可能性进行分类和评估。

步骤四:反馈报告,及时修复

将模糊测试的结果记录在报告中,提供给设备制造商或相关安全团队。报告应包含发现的漏洞、异常情况和建议的修复措施。设备制造商可以根据报告修复问题并改进设备的安全性。

测试建议

因为模糊测试是一种高风险的测试技术,可能导致工控设备故障或系统不稳定,在进行模糊测试时,建议在测试环境中进行模糊测试,避免对生产环境或关键系统产生破坏。另外还应确保备份设备和系统数据,以免数据丢失。

以上是对工控控制协议模糊测试的简单案例,实际的模糊测试过程可能更加复杂和详细,需要根据具体的工控系统和协议进行调整和扩展。

模糊测试可以有效挖掘出软件系统中的安全漏洞,能够帮助开发团队排查出程序中潜在的安全问题,并辅助修复和验证,从而提高应用程序的安全性和可靠性。随着技术的发展,模糊测试加入了人工智能和机器学习,在输入生成技术、覆盖率分析、智能化技术、应用领域扩展以及自动化和集成方面有了显著的发展。这些进步使得模糊测试工具更加强大、高效,在发现软件和系统中的漏洞方面发挥着重要的作用。

猜你喜欢

转载自blog.csdn.net/weixin_55163056/article/details/132824224