跳到主内容
返回博客IoT安全

BLE蓝牙低功耗协议各层安全测试方法详解

2026/4/4·29 阅读·
BLE蓝牙安全IoT安全无线安全协议测试模糊测试

全面解析BLE蓝牙低功耗协议栈各层(物理层、链路层、L2CAP、ATT/GATT、SMP、应用层)的安全测试方法与常见漏洞,涵盖嗅探抓包、模糊测试、中间人攻击、配对劫持等关键测试场景。

前言

蓝牙低功耗(Bluetooth Low Energy, BLE)广泛应用于智能穿戴、智能家居、医疗健康、工业控制等领域。由于BLE设备通常资源受限且安全实现参差不齐,协议栈各层均可能存在安全风险。

本文将按照BLE协议栈从底层到上层的结构,逐层分析安全测试方法与常见漏洞,帮助安全测试人员系统性地评估BLE设备的安全性。

BLE协议栈概览

BLE协议栈自下而上分为以下层次:

层次 功能 安全关注点
物理层(PHY) 射频通信、信道跳频 信号嗅探、干扰攻击
链路层(Link Layer) 连接管理、数据包收发 连接劫持、模糊测试
L2CAP 逻辑信道复用、分片重组 畸形包攻击、缓冲区溢出
ATT/GATT 属性协议、服务发现 未授权读写、信息泄露
SMP 安全管理、配对加密 配对劫持、密钥协商降级
GAP 设备发现、广播管理 广播数据泄露、追踪
应用层 业务逻辑 认证绕过、重放攻击、OTA劫持

一、物理层(PHY)安全测试

1.1 测试目标

物理层负责BLE的射频通信,工作在2.4GHz ISM频段,使用37个数据信道和3个广播信道。测试重点在于评估无线信号是否可被截获和干扰。

1.2 测试方法

广播信道嗅探

使用设备对BLE的3个广播信道(37/38/39)进行被动监听,捕获设备的广播数据包:

  • 配置设备监听广播信道
  • 记录目标设备的广播包内容
  • 分析广播数据中是否包含敏感信息(设备名称、服务UUID、厂商自定义数据)

测试要点:

  • 检查广播包是否泄露设备型号、固件版本、序列号等信息
  • 观察广播地址是否为静态公开地址(未使用随机地址)
  • 分析厂商自定义广播数据(Manufacturer Specific Data)中是否含明文敏感数据

数据信道嗅探

使用设备捕获已建立连接的数据通信:

  • 使用设备跟踪连接建立过程,获取Access Address和跳频参数
  • 同步跳频序列,解码数据信道上的通信内容
  • 分析传输数据是否加密

常见发现:

  • 部分设备在连接后传输明文数据,未启用链路层加密
  • 某些设备的跳频参数可被预测

射频干扰测试

评估设备在受到射频干扰时的行为:

  • 使用设备对2.4GHz频段发送干扰信号
  • 观察目标设备的连接稳定性和恢复能力
  • 记录设备在干扰环境下是否降级到不安全的通信模式

1.3 常见漏洞

  • 广播数据信息泄露:设备广播中包含可用于识别用户或设备状态的信息
  • 静态MAC地址:未使用BLE隐私功能(LE Privacy),导致设备可被持续追踪
  • 明文通信:连接建立后未启用加密,数据以明文传输

二、链路层(Link Layer)安全测试

2.1 测试目标

链路层负责BLE连接的建立、维护和数据包的收发。测试重点在于连接管理机制的安全性和数据包处理的健壮性。

2.2 测试方法

连接参数探测

建立与目标设备的连接,分析连接参数:

  • 使用设备发起连接请求
  • 记录连接间隔(Connection Interval)、从机延迟(Slave Latency)、超时时间
  • 尝试请求参数更新,观察设备是否接受异常参数值

链路层模糊测试

向目标设备发送畸形链路层数据包:

  • 构造异常的连接请求包(非法Access Address、畸形CRC)
  • 发送超长或截断的LL Control PDU
  • 测试异常的LL_VERSION_IND、LL_FEATURE_REQ等控制包

重点测试的LL PDU类型:

LL_CONNECTION_UPDATE_REQ — 异常连接参数
LL_CHANNEL_MAP_REQ — 非法信道映射
LL_TERMINATE_IND — 恶意断连
LL_LENGTH_REQ — 超大MTU请求
LL_PHY_REQ — 不支持的PHY参数

连接劫持测试

尝试注入或劫持已有的BLE连接:

  • 使用设备嗅探目标连接的参数(Access Address、CRC Init、Hop Interval等)
  • 在合适的时机注入伪造的数据包
  • 评估是否可以接管已有连接

2.3 常见漏洞

  • 连接参数异常处理不当:接受非法参数导致设备崩溃或重启
  • LL PDU解析缺陷:畸形控制包导致缓冲区溢出或拒绝服务
  • 缺乏连接认证:链路层无法区分合法与非法的连接请求

三、L2CAP层安全测试

3.1 测试目标

L2CAP(逻辑链路控制与适配协议)负责上层协议的复用、数据分片与重组。BLE中L2CAP使用固定信道和基于信用的流控信道。

3.2 测试方法

L2CAP信令模糊测试

发送畸形的L2CAP信令包:

  • 构造异常的连接参数更新请求(L2CAP_CONNECTION_PARAMETER_UPDATE_REQ)
  • 发送非法的CID(Channel ID)值
  • 测试信令PDU中长度字段与实际数据不匹配的情况

分片重组测试

测试L2CAP分片重组机制的健壮性:

  • 发送分片序列中缺失中间片段的数据
  • 发送超过最大PDU长度的分片数据
  • 在分片传输过程中插入异常控制包
  • 同时发送多个交叉的分片序列

Credit-Based Flow Control 测试

针对LE Credit Based Flow Control模式:

  • 请求建立超过设备处理能力的L2CAP连接数
  • 发送超出已分配信用值的数据包
  • 测试信用值为0时继续发送数据的设备行为

3.3 常见漏洞

  • 分片重组缓冲区溢出:超长数据或异常分片导致内存破坏
  • 信令处理拒绝服务:畸形信令包导致协议栈崩溃
  • 信用值管理缺陷:资源耗尽型拒绝服务

四、ATT/GATT层安全测试

4.1 测试目标

ATT(属性协议)和GATT(通用属性配置文件)定义了BLE设备的服务和特征值读写机制。这是BLE应用数据交互的核心层,也是安全问题最集中的层次。

4.2 测试方法

服务与特征值枚举

全面枚举目标设备的GATT服务树:

  • 使用设备连接目标并执行服务发现
  • 遍历所有Service、Characteristic和Descriptor
  • 记录每个特征值的属性(Read/Write/Notify/Indicate)及权限要求

需特别关注的标准服务:

服务UUID 名称 风险点
0x1800 Generic Access 设备名称可写?
0x180A Device Information 固件版本、硬件信息泄露
0x180F Battery Service 电量信息泄露
0x1801 Generic Attribute Service Changed特征
厂商自定义 Private Service 通常是攻击面最大的服务

未授权访问测试

测试特征值在未配对/未认证状态下的访问权限:

  • 在未配对状态下尝试读取所有特征值
  • 在未配对状态下尝试写入所有可写特征值
  • 使用设备订阅所有支持Notify/Indicate的特征值
  • 检查是否有敏感数据在未加密连接上传输

常见测试用例:

  1. 读取Device Information特征值 → 获取固件版本
  2. 写入控制类特征值 → 未授权控制设备
  3. 订阅通知特征值 → 被动接收设备敏感数据
  4. 读取自定义特征值 → 获取配置信息或用户数据

ATT协议模糊测试

发送畸形ATT PDU测试协议栈健壮性:

  • 构造超长的Write Request(超过ATT_MTU)
  • 发送无效Handle值的Read/Write请求
  • 发送格式错误的Execute Write Request
  • 测试Prepare Write Queue的边界情况(大量Prepare Write后Execute)

特征值写入注入

对可写特征值进行边界值和异常值测试:

  • 写入超长数据(超过特征值声明的最大长度)
  • 写入格式不符合预期的数据(如数字字段写入字母)
  • 写入特殊字符或控制字符
  • 快速连续写入大量数据(压力测试)

4.3 常见漏洞

  • 未授权访问敏感特征值:关键功能特征值未设置适当的权限要求
  • GATT信息泄露:设备信息服务暴露过多内部信息
  • 写入验证缺失:特征值写入缺乏输入验证,导致设备异常
  • ATT协议栈崩溃:畸形ATT包导致协议栈拒绝服务

五、SMP层安全测试

5.1 测试目标

SMP(安全管理协议)负责BLE的配对、密钥分发和加密建立。SMP的安全性直接决定了整个BLE通信的机密性和完整性。

5.2 测试方法

配对方式评估

分析设备支持的配对方式和安全级别:

  • 使用设备发起配对请求,分析Pairing Request/Response中的参数
  • 记录IO Capability、OOB Flag、Bonding Flag、MITM Flag
  • 确定设备使用的配对方法(Just Works/Passkey/Numeric Comparison/OOB)

配对安全级别对照:

配对方式 MITM防护 窃听防护 安全等级
Just Works (Legacy)
Just Works (SC)
Passkey (Legacy)
Passkey (SC)
Numeric Comparison
OOB

配对降级攻击

尝试将设备的配对方式降级到不安全的模式:

  • 在Pairing Request中声明IO Capability为NoInputNoOutput,强制Just Works配对
  • 设置Security Connections标志为0,强制使用Legacy Pairing
  • 测试设备是否接受降级的配对参数

Legacy Pairing被动窃听

针对使用Legacy Pairing的设备:

  • 使用设备捕获完整的配对过程
  • 尝试暴力破解Temporary Key(TK)
  • Just Works模式下TK固定为0,可直接推导出STK并解密后续通信
  • Passkey模式下TK为6位数字(0-999999),可在短时间内暴力破解

Secure Connections测试

针对使用LE Secure Connections的设备:

  • 验证设备是否正确实现了ECDH密钥交换
  • 检查设备是否接受无效的公钥(CVE-2018-5383类漏洞)
  • 测试设备对Key Size协商的处理(KNOB攻击变体)

密钥管理测试

评估密钥的存储和管理:

  • 检查LTK、IRK、CSRK的分发过程
  • 测试设备对密钥尺寸协商的最小值限制
  • 尝试使用失效的旧密钥重新建立加密连接

5.3 常见漏洞

  • 强制Just Works配对:设备未强制要求MITM保护的配对方式
  • Legacy Pairing降级:设备允许降级到不安全的Legacy Pairing
  • 密钥协商降级(KNOB攻击):接受过短的加密密钥(低于16字节)
  • 公钥验证缺失:未验证对端ECDH公钥的有效性
  • 密钥存储不安全:LTK以明文存储在设备固件或文件系统中

六、GAP层安全测试

6.1 测试目标

GAP(通用访问配置文件)定义了设备的发现和连接流程。测试重点在于设备隐私保护和广播行为的安全性。

6.2 测试方法

设备追踪测试

评估设备的地址隐私保护:

  • 长时间监听设备广播,记录MAC地址变化情况
  • 如果使用随机地址,分析地址轮换周期
  • 检查是否使用Resolvable Private Address(RPA)

广播数据分析

深度分析广播数据的安全性:

  • 解析所有AD Structure字段
  • 检查扫描响应(Scan Response)数据中的额外信息
  • 分析广播数据在不同状态下的变化(是否可用于推断设备状态)

设备克隆测试

尝试克隆目标BLE设备:

  • 记录目标设备的广播数据和GATT服务结构
  • 使用设备创建具有相同广播数据的仿冒设备
  • 测试客户端应用是否能区分真实设备和克隆设备

6.3 常见漏洞

  • 静态蓝牙地址:设备使用固定公开地址,可被持续追踪
  • 广播数据隐私泄露:广播中包含可关联到特定用户的信息
  • 设备克隆风险:客户端仅依赖广播数据识别设备,易被仿冒

七、应用层安全测试

7.1 测试目标

应用层是BLE协议栈之上的业务逻辑层,包括设备控制协议、固件更新(OTA/DFU)、数据同步等。

7.2 测试方法

应用层协议逆向

分析BLE通信中的应用层协议:

  • 使用设备抓取正常业务场景下的BLE通信数据
  • 分析GATT特征值中传输的数据格式和含义
  • 同时抓取手机APP的网络流量,进行关联分析
  • 尝试逆向应用层协议的数据结构和命令集

认证与授权测试

测试应用层的访问控制:

  • 不通过正常APP认证流程,直接向设备发送控制命令
  • 测试是否存在硬编码的认证密钥
  • 使用设备重放之前抓取的命令包
  • 尝试越权访问其他用户的设备

重放攻击测试

验证设备对重放攻击的防御:

  • 使用设备捕获一次合法的命令交互
  • 在新的连接中重放捕获的命令包
  • 检查设备是否使用了随机数、时间戳或序列号等抗重放机制

OTA/DFU固件更新测试

如果设备支持无线固件更新:

  • 分析DFU服务的GATT特征值和交互流程
  • 检查固件包是否经过签名验证
  • 尝试上传未签名或篡改的固件包
  • 测试是否可以回退到存在已知漏洞的旧版固件
  • 检查DFU模式下设备的认证要求

数据安全测试

评估设备存储和传输数据的安全性:

  • 检查设备传输的用户数据是否进行了应用层加密(不仅依赖BLE链路层加密)
  • 分析配套APP的本地存储,检查是否明文保存蓝牙密钥或用户数据
  • 测试设备恢复出厂设置后是否清除所有用户数据和配对信息

7.3 常见漏洞

  • 缺乏应用层认证:仅依赖BLE配对作为认证手段
  • 重放攻击:命令包无防重放保护
  • OTA未验证签名:可上传恶意固件
  • 固件回退攻击:可降级到有漏洞的旧版本
  • 明文传输敏感数据:仅依赖链路层加密,一旦密钥泄露则全部暴露

八、测试流程建议

基于以上各层分析,建议按以下流程进行BLE安全测试:

第一阶段:信息收集

  1. 被动嗅探广播数据,识别设备信息
  2. 连接设备,完成GATT服务枚举
  3. 分析配套APP的通信行为

第二阶段:安全评估

  1. 评估配对方式和加密强度
  2. 测试特征值的访问权限
  3. 执行未授权操作测试

第三阶段:深度测试

  1. 执行协议各层模糊测试
  2. 尝试配对降级和中间人攻击
  3. 应用层协议逆向和重放测试
  4. OTA/DFU安全评估

第四阶段:报告输出

  1. 汇总各层发现的漏洞
  2. 按风险等级分类(参考CVSS评分)
  3. 提供修复建议和加固方案

总结

BLE安全测试需要从协议栈的每一层进行系统性评估。实践中,ATT/GATT层的未授权访问SMP层的配对安全问题是最常见的漏洞类型,而应用层的认证缺陷往往影响最为严重。

安全测试人员应根据设备的实际应用场景,合理分配各层测试的深度和优先级,确保测试的全面性和有效性。


本文由拾忆安全团队原创,转载请注明来源。