System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于仿真环境的车载蓝牙软件协议栈模糊测试方法技术_技高网
当前位置: 首页 > 专利查询>南京大学专利>正文

基于仿真环境的车载蓝牙软件协议栈模糊测试方法技术

技术编号:41784961 阅读:3 留言:0更新日期:2024-06-24 20:13
本发明专利技术公开一种基于仿真环境的车载蓝牙软件协议栈模糊测试方法,该方法包括:获取蓝牙协议规范文档,从中自动提取出蓝牙协议数据包格式信息,构建蓝牙协议数据规约模型;获取被测蓝牙软件协议栈二进制代码,构建运行所需的仿真环境,基于仿真环境,通过动态污点分析,得到被测蓝牙协议栈所接收的数据包类型;结合上述步骤构建的蓝牙协议数据规约模型与提取的被测蓝牙协议栈特征信息,以数据包的“请求‑应答对”作为反馈信息,同时利用动态污点追踪发掘其中的数据包关联信息,制导生成符合条件的数据包序列并执行。本发明专利技术通过动态污点追踪提取被测试蓝牙软件协议栈特征信息提升测试效率,同时通过构建仿真测试环境实现摆脱硬件依赖的模糊测试。

【技术实现步骤摘要】

本专利技术涉及软件工程领域,特别涉及一种基于仿真环境的车载蓝牙软件协议栈模糊测试方法


技术介绍

1、蓝牙是一种应用广泛的无线通信技术,能够实现设备在短距离内进行高速数据交换。这项技术最初是为了替代有线连接而设计的,近年来随着物联网技术的不断发展,蓝牙由于其便携性、低功耗等优势,被广泛应用于各类设备中,成为实现万物互联不可或缺的一环。蓝牙设备依靠于其上运行的蓝牙软件协议栈实现设备间互联功能。蓝牙软件协议栈是一系列协议的集合,用于实现蓝牙无线通信技术。这个协议栈定义了在蓝牙设备之间传输数据所需的多层协议和服务。其中主要的协议包括逻辑链路控制和适配协议(l2cap)、安全管理器协议(smp)、属性协议(att)、服务发现协议(sdp)等。蓝牙协议规范中同时规定了主机控制器接口(hci),提供了一个标准化的通信接口,用于连接上层软件和下层蓝牙硬件。

2、近年来蓝牙技术开始被应用于一些安全关键场景中,例如其中将蓝牙技术应用于汽车中。车载蓝牙软件协议栈使得司机和乘客能够通过无线方式连接他们的个人设备(如智能手机、平板电脑)到车辆系统,以提升驾驶和乘坐的安全和便利性。随着汽车技术的不断发展,车载蓝牙系统也在不断进步,以支持更多高级功能和提供更好的用户体验。

3、然而,蓝牙软件协议栈中漏洞频发。当蓝牙被应用于安全关键场景时,这类漏洞被攻击者利用能造成严重后果。先前在蓝牙软件协议栈中发现的如blueborne、sweyntooth等漏洞能够导致远程代码执行、设备崩溃等。

4、模糊测试的核心思想是产生大量的有效或半有效的测试输入,发送给正在运行的被测系统,通过检测系统是否发生崩溃以达到漏洞检测的目的。模糊测试由于其自动化程度高、误报低等优势被广泛应用于软件安全检测中。近年来学术界和工业界开始将模糊测试应用于蓝牙软件协议栈的漏洞检测中,但面临两方面挑战。首先,蓝牙协议规范极为复杂,包含众多功能模块,且版本更新频繁。不同的蓝牙软件协议栈实现所支持的功能模块、协议版本存在差异,现有工作无法有效利用具体被测蓝牙软件协议栈特征信息,造成测试的盲目性。其次,蓝牙软件协议栈运行于特定的硬件环境中,现有的模糊测试工作需要依赖于真实的蓝牙硬件。


技术实现思路

1、基于现有的针对蓝牙软件协议栈的模糊测试无法有效利用被测协议栈的特征信息,且测试依赖于真实的硬件环境,本专利技术提出了一种基于仿真环境的车载蓝牙软件协议栈模糊测试方法,可以提升测试效率同时摆脱对硬件环境的依赖,本专利技术通过以下技术方案来实现。

2、一种基于仿真环境的车载蓝牙软件协议栈模糊测试方法,其特征在于,该方法包括以下步骤:

3、s1蓝牙数据包格式规约提取;获取蓝牙协议规范文档,从中自动提取出蓝牙协议数据包格式信息,构建蓝牙协议数据规约模型;

4、s2被测蓝牙协议栈特征提取;获取被测蓝牙软件协议栈二进制代码,为所述蓝牙软件协议栈构建运行所需的仿真环境,基于仿真环境,通过动态污点分析,得到被测蓝牙协议栈所接受的数据包类型;

5、s3蓝牙协议栈测试;结合所述步骤s1中构建的蓝牙协议数据规约模型与所述步骤s2中提取的被测蓝牙协议栈特征信息,以数据包的“请求-应答对”作为反馈信息,同时利用动态污点追踪发掘其中的数据包关联信息,制导生成符合条件的数据包序列并执行。

6、上述的基于仿真环境的车载蓝牙软件协议栈模糊测试方法,其特征在于,所述步骤s2被测蓝牙协议栈特征提取具体包括以下步骤:

7、s21获取被测蓝牙协议栈二进制代码,为所述二进制代码构建运行所需的仿真测试环境;

8、s22在仿真环境中运行被测蓝牙软件协议栈,利用所述步骤1)中所构建的蓝牙协议数据规约模型,将所有合法类型的数据包分别发送给所述被测蓝牙软件协议栈,通过动态污点追踪分析协议栈内部对不同类型数据包的处理逻辑,过滤得到被测协议栈接受的数据包类型。

9、上述的基于仿真环境的车载蓝牙软件协议栈模糊测试方法,其特征在于,所述步骤s21构建仿真测试环境的具体步骤为:获取被测蓝牙软件协议二进制代码,在开源模拟器qemu中为其构建仿真运行环境,使得所述被测蓝牙软件协议栈可以与模糊器进行数据包交互。

10、上述的基于仿真环境的车载蓝牙软件协议栈模糊测试方法,其特征在于,所述步骤s3蓝牙协议测试具体包括以下步骤:

11、s31初始种子队列生成;结合所述步骤s1中构建的蓝牙协议数据规约模型和所述步骤s2中提取的被测蓝牙协议栈特征信息,生成符合条件的初始种子队列;

12、s32变异生成;从当前种子队列中获取种子测试用例,结合所述步骤s1中构建的蓝牙协议数据规约模型、所述步骤s2中提取的被测蓝牙协议栈特征信息以及后续分析获取的数据包关联信息,变异生成新的待测数据包序列;

13、s33测试执行与反馈信息收集;利用所述步骤s2中构建的蓝牙软件仿真测试环境,驱动被测蓝牙协议栈运行,将生成的新测试用例发送至被测协议栈执行,收集测试过程中覆盖的数据包“请求-应答对”信息、是否引发崩溃的信息,如测试未达到预定测试轮数,则将能够触发新的“请求-应答对”的测试用例加入种子队列,并对所述测试用例进行数据包关联性分析,之后开始新一轮测试执行;否则,将引发的崩溃和相应的测试用例作为测试报告输出;

14、s34数据包关联性分析;对于能够触发新“请求-应答对”的测试用例,对所述测试用例进行数据包关联性分析,分析被测协议栈处理该数据包序列时的指令执行路径,获取存在数据依赖、控制流依赖的数据包,获取数据包关联信息,用于辅助后续的测试用例生成;在所述步骤s32变异生成阶段基于已有数据包序列生成新数据包序列时,优先生成与当前数据包序列中数据包存在关联的新数据包。

15、本专利技术采用以上技术方案,具有以下有益效果:

16、本专利技术通过采用动态污点追踪提取被测试蓝牙软件协议栈特征信息的技术手段,提升了测试效率,同时通过构建仿真测试环境实现摆脱硬件依赖的模糊测试。

本文档来自技高网...

【技术保护点】

1.一种基于仿真环境的车载蓝牙软件协议栈模糊测试方法,其特征在于,该方法包括以下步骤:

2.根据权利要求1所述的基于仿真环境的车载蓝牙软件协议栈模糊测试方法,其特征在于,所述步骤S2被测蓝牙协议栈特征提取具体包括以下步骤:

3.根据权利要求1或2所述的基于仿真环境的车载蓝牙软件协议栈模糊测试方法,其特征在于,所述步骤S21构建仿真测试环境的具体步骤为:获取被测蓝牙软件协议二进制代码,在开源模拟器QEMU中为其构建仿真运行环境,使得所述被测蓝牙软件协议栈可以与模糊器进行数据包交互。

4.根据权利要求1所述的基于仿真环境的车载蓝牙软件协议栈模糊测试方法,其特征在于,所述步骤S3蓝牙协议测试具体包括以下步骤:

【技术特征摘要】

1.一种基于仿真环境的车载蓝牙软件协议栈模糊测试方法,其特征在于,该方法包括以下步骤:

2.根据权利要求1所述的基于仿真环境的车载蓝牙软件协议栈模糊测试方法,其特征在于,所述步骤s2被测蓝牙协议栈特征提取具体包括以下步骤:

3.根据权利要求1或2所述的基于仿真环境的车载蓝牙软件协议栈模糊测试方法,其...

【专利技术属性】
技术研发人员:王豫徐安孜王林章
申请(专利权)人:南京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1