烟草味道|快速理解Android中的三个蓝牙漏洞
两个内存泄漏和一个数组索引越界
漏洞简介
- Issue 74882215: Bluetooth L2CAP L2CAP_CMD_CONN_REQ Remote Memory Disclosure(蓝牙L2CAP L2CAP_CMD_CONN_REQ远程内存泄漏)
- Issue 74889513: Bluetooth L2CAP L2CAP_CMD_DISC_REQ Remote Memory Disclosure(蓝牙L2CAP L2CAP_CMD_DISC_REQ远程内存泄漏)
- Issue 74917004: Bluetooth SMP smp_sm_event() OOB Array Indexing(蓝牙SMP smp_sm_event()OOB数组索引)
简要通过将巧尽心思构造的L2CAP数据包发送到目标设备 , 蓝牙范围内的远程攻击者可以利用android蓝牙堆栈中的漏洞来泄露属于com.android.bluetooth守护程序堆的2个字节(一个uint16_t数据) 。
前置介绍L2CAPL2CAP(Logical Link Control and Adaptation Protocol) , 即逻辑链路控制和适配协议
【蓝牙架构中如图所示】
L2CAP是蓝牙协议栈中的一个协议 。
功能包括 为更高层的协议传输数据、在单个链路上复用多个应用程序 。
L2CAP是基于信道的 , 并且控制命令在预定义的L2CAP_SIGNALLING_CID(0x01)信道上发送 。
漏洞详情漏洞在于使用 STREAM_TO_UINT16从而不检查攻击者控制的数据包中是否剩余了足够的数据 。 如果第二次使用 STREAM_TO_UINT16时 , 数据包中没有剩余字节 , 那么将越界读取 rcid
结果:泄漏数据包后相邻的两个字节(rcid)
L2CAP传入的数据由l2c_rcv_acl_data()函数[ platform / system / bt / stack / l2cap / l2c_main.cc ]处理 。
如果传入的L2CAP数据包指定L2CAP_SIGNALLING_CID作为其目标通道 , 则l2c_rcv_acl_data()调用process_l2cap_cmd()函数来处理L2CAP控制命令 。
以上过程如下所示:
L2CAP_CMD_CONN_REQ控制命令在process_L2CAP_CMD()函数中是这样处理的:
case L2CAP_CMD_CONN_REQ:STREAM_TO_UINT16(con_info.psm, p);STREAM_TO_UINT16(rcid, p);p_rcb = l2cu_find_rcb_by_psm(con_info.psm);if (p_rcb == NULL) {L2CAP_TRACE_WARNING("L2CAP - rcvd conn req for unknown PSM: %d",con_info.psm);l2cu_reject_connection(p_lcb, rcid, id, L2CAP_CONN_NO_PSM);break;} else {[...]
代码使用了两次STREAM_TO_UINT16宏[ platform / system / bt / stack / include / bt_types.h ] ,从L2CAP数据包(上面的变量p , 就是数据包中的数据)中一共读取2个uint16_t值(读入后分别放入了con_info.psm和rcid中) 。#define STREAM_TO_UINT16(u16, p)\{\(u16) = ((uint16_t)(*(p)) + (((uint16_t)(*((p) + 1))) << 8)); \(p) += 2;\}
漏洞在于使用STREAM_TO_UINT16宏而不检查攻击者控制的数据包中是否剩余了足够的数据 。 如果第二次使用STREAM_TO_UINT16时 , 数据包中没有剩余字节 , 那么将越界读取rcid(也可能越界读取con_info.psm , 只是后面不会泄露出来) , 更确切地说 , 从堆上与数据包相邻的任何数据 。 之后 , 如果l2cu_find_rcb_by_psm()返回NULL , 并且因此到达了if分支 , 则调用l2cu_reject_connection() [ stack / l2cap / l2c_utils.cc ]将向远程对等方发送rcid , 从而有效地从堆中泄漏了2个字节:
推荐阅读
- 上海市嘉定区人民政府网站|【走向我们的小康生活】日揽300件的“快递一哥”,为了快速送货,他手绘了一张地图
- 上海嘉定|嘉定这8个受理点和受理中心,可申请居住证快速办理(附问答)
- 小郑杰西卡|上演快速瘦身大法,服了,22岁“北境女王”索菲产女后首次亮相
- 烹饪|泡发香菇时加一勺它,泡发的香菇味道更鲜,3分钟香菇全部泡发
- 关节骨头|上班久坐,休息刷手机,不小心含胸驼背,怎样快速唤醒挺拔身姿?
- 综艺节目|严敏新综艺开播,还是那个熟悉的味道,《极限挑战》真的不该放他
- 美军|美媒:中国空军快速发展,五角大楼称美军面临巨大“威胁”
- 环球时评|香港一巴士司机快速行驶贴近执勤警员被截停,因危险驾驶罪被捕
- 青岛警方通报!东西快速路抢道引冲突,出租车司机捅伤网约车司机逃离
- 广东省烟草局局长刘依平表示将安全工作尽在掌握中,推动安全生产管理 - 向“大安全”迈进