BLE(Bluetooth Low Energy,低功耗蓝牙)协议是蓝牙4.0规范的一部分,特点是低功耗、低延迟、低吞吐量。由于其省电的特征,BLE在过去10年被广泛应用于几乎所有带电池的设备中。但同时,研究人员也在其中发现了许多的安全漏洞,其中大部分的研究关注于BLE 协议的配对过程,而忽略了其他许多非常重要的部分。近日,普渡大学的研究人员发现蓝牙重连接过程中存在安全漏洞,数十亿使用蓝牙软件栈的智能手机、笔记本电脑和IoT设备受到影响。
BLESA攻击
来自普渡大学的研究人员对BLE协议的重连接过程安全性进行了分析,发现了一个BLESA (Bluetooth Low Energy Spoofing Attack)漏洞,漏洞影响所有运行BLE 协议的设备。
重连接的过程发生在2个BLE 设备(客户端和服务器)在配对过程中互相认证之后。比如,两个蓝牙设备的距离超出范围,之后再次进入范围内。一般来说,重新连接时,2个BLE 设备会检查对方在配对时协商的加密密钥,然后通过BLE 重新连接并继续交换数据。
研究人员发现官方BLE 规范中并没有对重新连接的过程进行清晰的描述。因此,BLE 软件实现时就引入了2个对称问题:
- 设备重新连接时的认证是可选的而非必须的。
- 如果用户设备没有强制IoT 设备对通信数据进行认证,那么认证可能就会被绕过。
这2个问题就为BLESA 攻击打开了大门,当附近的攻击者绕过了重连接的验证过程,并在没有正确信息的情况下发送伪造的数据给BLE 设备,就会引发人类操作人员和自动化过程产生错误的结果。PoC 视频如下所示:
https://www.youtube.com/embed/tO9tUl2yfFc
研究人员发现,虽然BLE 规范中说得不够明确,但并不是所有的BLE 实现都受到该问题的影响。研究人员分析了不同操作系统上多个支持BLE 通信的软件栈,发现BlueZ (基于Linux的 IoT设备), Fluoride (安卓)和iOS BLE 栈都受到BLESA 攻击的影响,但Windows 设备上的BLE 栈不受到该攻击的影响。
今年6月,苹果公司对该漏洞分配了CVE编号 CVE-2020-9770,并修复了该漏洞。研究人员在测试的安卓BLE实现中发现,运行安卓10的Google Pixel XL 仍然受到该攻击的影响。对基于Linux的IoT 设备,BlueZ开发团队称将修改代码使用正确实现BLE 重连接过程的代码。
补丁
与之前的蓝牙漏洞类似,对所有受影响的设备打补丁对系统管理员来说简直是不可能的。其中,部分使用BLE 的物联网设备可能永远无法更新。
攻击者还可以利用设备上的DoS 漏洞让蓝牙连接断开,然后触发重连接操作,然后发起BLESA 攻击。确保BLE 设备不掉线是不可能的。据之前BLE 使用的统计数据,使用有漏洞的BLE 软件栈的设备超过10亿。
更多技术细节参见研究人员发表在USENIX WOOT 2020大会上的学术文章 BLESA: Spoofing Attacks against Reconnections in Bluetooth Low Energy,下载地址:
https://www.usenix.org/system/files/woot20-paper-wu-updated.pdf
演讲视频参见:https://www.youtube.com/embed/wIWZaSZsRc8