CVE-2026-31497Linux内核中的蓝牙驱动模块(btusb)存在一个安全漏洞。在处理SCO链路的USB备用设置时,驱动程序通过查找表将活动SCO链路数映射到备用设置。然而,代码未对索引进行边界检查,直接使用sco_num-1作为索引访问数组。当sco_num超过定义的表大小时,可能导致越界读取,进而引发系统稳定性问题或可用性影响。
该漏洞位于drivers/bluetooth/btusb.c文件的btusb_work函数中。当CVSD流量使用透明语音设置时,该函数使用一个包含三个条目的查找表alts[]来映射SCO链路数量与USB备用设置。问题在于,代码直接使用data->sco_num - 1作为数组下标,而data->sco_num的值来源于hci_conn_num(),可能大于3(表的最大条目数)。攻击者需要本地低权限,通过触发特定的蓝牙连接场景,使data->sco_num的值超过3。由于缺乏边界检查,程序将读取数组边界之外的内存。这种越界访问可能导致驱动程序选择错误的备用设置,引发内核崩溃或拒绝服务,从而影响系统可用性。