CVE-2026-81039 in Zephyr信息

摘要

由 VulDB • 2026-10-26

蓝牙主机在 subsys/bluetooth/host/adv.c 的 le_adv_start_add_conn() 中,为每个启动的可连接广告集从固定的 acl_conns[] 池中预分配一个 bt_conn 对象(即“预留”)。当外围设备连接完成时,subsys/bluetooth/host/hci_core.c 中的 find_pending_connect() 仅使用身份标识和对等方地址进行查找,并采用定向到非定向的回退机制,且无法获知是哪个广告集实际终止。在 CONFIG_BT_EXT_ADV_MAX_ADV_SET > 1 的情况下,LE 增强型连接完成事件会被缓存,直到 LE 广告集终止事件识别出具体集合为止;此时该查找可能返回属于另一个仍在运行的广告集的预留对象。

此缺陷可通过空中接口被任何相邻设备利用。如果应用程序在同一身份标识上运行两个可连接的扩展广告集——一个为非定向,另一个为定向至对等方 P(这是常见的“在仍接受新中心设备的状态下向已配对的中心设备进行定向重连”模式)——则地址映射到 P 的远程发起者若通过非定向集连接,会导致定向集的预留被错误消耗。远程设备可自由选定发起者地址,且在链路建立时未进行身份验证,因此无需绑定、配对或预先存在的关系即可触发此误分配问题。

随后,非定向集自身的预留对象将被孤立:其 BT_ADV_ENABLED 标志已被清除,而 le_adv_stop_free_conn()(唯一将预留返回池中的路径)仅在广告集仍处于启用状态时才会执行,因此 bt_le_ext_adv_stop() 会提前返回,导致该对象从未被释放。每次发生此类情况都会永久消耗一个 CONFIG_BT_MAX_CONN 槽位,直到调用 bt_disable() 或重启设备为止。在应用程序模式为每次断开连接后重新启动定向广告集的情况下,攻击者可重复执行此序列直至池耗尽;此后可连接式广告将因 -ENOMEM 失败,且设备无法再接受新连接。作为副作用,定向集会在无预留对象的情况下继续广播,因此针对该集的合法连接会被 bt_hci_disconnect() 丢弃。影响仅限于可用性方面;不会导致内存损坏或信息泄露,且仅使用单个广告集的配置不受影响。

If you want to get best quality of vulnerability data, you may have to visit VulDB.

来源

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!