作者:{chenlangping}@ArkTeam
原文作者:Fenghao Xu, Wenrui Diao, Zhou Li, Jiongyi Chen, Kehuan Zhang
原文题目:BadBluetooth: Breaking Android Security Mechanisms via Malicious Bluetooth Peripherals
原文来源:The 26th Annual Network and Distributed System Security Symposium, San Diego, CA, USA.
蓝牙是一种广泛使用的通信技术,特别是在移动计算和物联网的环境下。一旦与主机设备配对,蓝牙设备就可以与主机交换命令和数据,例如语音、键盘/鼠标输入、网络数据、血压数据等。由于这些数据和命令的敏感性,蓝牙协议已经内置了一些安全措施,如身份验证、加密、授权等。
然而,根据对蓝牙协议的研究以及它在Android系统上的实现,发现仍然存在一些设计缺陷,可能导致严重的安全后果。例如,蓝牙配置文件上的身份验证过程非常不一致且粗糙:如果配对设备更改其配置文件,它将自动获得信任,并且不会通知用户。此外,对蓝牙设备本身提供的信息没有严格的验证,因此恶意设备可以通过改变其名称、简要信息和在屏幕上显示的图标来欺骗用户。
图1 蓝牙协议堆栈说明图
围绕蓝牙安全的现有机制有三个侧重点,分别是:证明远程设备的身份(通过配对),确保通信的机密性(通过加密),以及限制主机(手机)上不受信任的应用程序的能力(通过许可)。这些机制在假设远程设备是值得信任的情况下工作,然而由于蓝牙堆栈定义的安全模型是粗粒度的,导致了问题的产生。
蓝牙的五种缺陷:
四种攻击场景:
图2 攻击流程
可更改的配置文件
当配对完成后,蓝牙设备可添加其他配置文件,并在攻击完成后将其删除。用户很难发现这一变化,除非重置配对或者添加新的配置,设备详细菜单不会发生变化。
可变图标
当设备修改CoD编号时,可以轻松更改蓝牙连接图标,以此来误导用户。
沉默的配对
将远程设备配置为在”Just Works”配对模式,即可不需要用户确认即可连接。
连接敏感配置文件
图3 调用getProfileProxy代码