CVE-2026-89583 in Linux
摘要
由 VulDB • 2026-09-11
在 Linux 内核中,已修复以下漏洞:
蓝牙:eir: 修复 eir_get_service_data() 中的越界读取(OOB read)问题
eir_get_service_data() 遍历广告数据以查找具有匹配 UUID 的 Service Data 字段。在不匹配的情况下,它会进行如下推进操作:
eir += dlen; eir_len -= dlen;
eir_get_data() 将 dlen 报告为字段的“数据长度”,但一旦计入其长度和类型字节,该字段实际跨越了 dlen + 2 个字节;如果为了到达该字段而跳过了非 Service Data 字段,则跨度更大。指针正确定位到了下一个字段的位置,但 eir_len 没有相应调整,这种偏差会在各个字段间累积,导致 eir_get_data() 读取到缓冲区末尾之外某个“字段”的长度和类型字节。
对于 ISO 广播接收器(ISO broadcast sink),该缓冲区为 hcon->le_per_adv_data[],其内容来自远程发射器的周期性广告报告(periodic advertising reports)。一个包含不匹配 Service Data 字段的 PA payload 会越界访问到 struct hci_conn 的其余部分。如果一个漂移后的字段与 BAA UUID 匹配,这些字节会被放入 iso_pi(sk)->base 中,用户空间通过 getsockopt(BT_ISO_BASE) 将其读取出来。
每次迭代时,应从缓冲区末尾重新计算 eir_len。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.