在前期内容中我们了解了模糊测试是如何发现漏洞的,本期我们将以开源网安模糊测试平台(SFuzz)在车联网行业的实践为例,针对车载以太网DOIP协议详细阐释在实际过程的漏洞发掘过程。
在开始之前我们先来了解几个名词。
车载以太网
用于连接汽车内各种电气设备的一种物理网络。在传统以太网协议基础上,改变了物理接口的电气特性,并结合车载网络需求定制了一些新标准。车载以太网主要涉及OSI的1、2层技术,同时车载以太网同时支持TSN/TTE、TCP/IP、DOIP、SOME/IP等多种协议或应用形式。
DOIP
随机种子
计算机所产生的随机数是通过一串很长的序列数模拟随机数,故称为伪随机数,在实际应用这些随机数时,这些随机数一般都能具有真实随机数的所有概率性质和统计性质,因此可以产生许许多多的序列伪随机数,一个序列的第一个随机数对应一个数,这个数称为种子数。
了解以上名词后我们来看看车企是如何使用SFuzz发现车联网系统中的漏洞的。
环境信息
测试工具:SFuzz V3.0
操作系统:Ubuntu 18.4
被测件:某型号DOIP设备(客户设备,不便透露具体信息)
测试套件:DOIP协议测试套件
测试过程
安装部署
-
准备一台计算机,系统可以是Linux、Windows、Mac,该企业使用Ubuntu 18.4系统计算机
-
下载SFuzz V3.0安装包,按照安装手册进行部署安装,并导入DOIP协议测试套件
-
使用工程机RJ45接口直连被测件,使用ping + IP(被测件IP)确定被测件可以正常通信。
测试执行
登录SFuzz平台,选择“协议模糊测试“功能进行测试用例创建,配置对应的监视器,用于监控测试用例运行情况。本次测试使用TCP监视器。
通过SFuzz平台测试界面,发现当测试进行到第60次迭代时,平台返回了漏洞警报,我们注意到被测件的日志中出现了崩溃提示。同时,我们使用的TCP监视器也监视到了端口关闭,开始持续上报缺陷信息。从控制台日志可以看到错误提示:
terminate called after throwing an instance of std;;bad alloc!
what():std: :bad alloc
Aborted
漏洞验证
分析总结
通过多次验证上述测试过程,发现在向被测件的DOIP协议服务传入特定的变异数据包时,会发生崩溃现象。我们可以判断这是一个真实的未被识别的漏洞,而开源网安模糊测试平台SFuzz能够帮助使用者发现测试目标的潜在问题,高效检测出未知漏洞,极大提升系统安全性。
推荐阅读
原文始发于微信公众号(开源网安):模糊测试面面观 | 车载以太网协议DOIP模糊测试实践案例分享