KernelScan.io

HIGH

bluetooth BIG OOB

CVE-2026-46138

CVSS 8.1 / 10.0 NVD

CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H

KernelScan AI6.3MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_event: Fix OOB read and infinite loop in hci_le_create_big_complete_evt hci_le_create_big_complete_evt() iterates over BT_BOUND connections for a BIG handle using a while loop, accessing ev->bis_handle[i++] on each iteration. However, there is no check that i stays within ev->num_bis before the array access. When a controller sends a LE_Create_BIG_Complete event with fewer bis_handle entries than there are BT_BOUND connections for that BIG, or with num_bis=0, the loop reads beyond the valid bis_handle[] flex array into adjacent heap memory. Since the out-of-bounds values typically exceed HCI_CONN_HANDLE_MAX (0x0EFF), hci_conn_set_handle() rejects them and the connection remains in BT_BOUND state. The same connection is then found again by hci_conn_hash_lookup_big_state(), creating an infinite loop with hci_dev_lock held. Fix this by terminating the BIG if in case not all BIS could be setup properly.

02

Engine v0.2.0

Risk summary

Adjacent attackers within Bluetooth range can trigger an out-of-bounds read and infinite loop in the kernel's Bluetooth HCI event handler during Broadcast Isochronous Group (BIG) setup. The out-of-bounds read leaks adjacent heap memory, and the infinite loop—occurring while hci_dev_lock is held—causes a system hang requiring a reboot.

Affectednet/bluetooth/hci_event.c (Bluetooth HCI)

Vulnerability analysis

The vulnerability occurs in hci_le_create_big_complete_evt() when processing LE_Create_BIG_Complete events from Bluetooth controllers. The function iterates through BT_BOUND connections using ev->bis_handle[i++] without validating that i stays within ev->num_bis bounds. When a controller sends a malformed event with fewer bis_handle entries than expected BT_BOUND connections, or with num_bis=0, the code reads beyond the valid flex array into adjacent heap memory. Because the out-of-bounds values typically exceed HCI_CONN_HANDLE_MAX, hci_conn_set_handle() fails and leaves connections in BT_BOUND state. hci_conn_hash_lookup_big_state() then repeatedly finds the same unhandled connection while holding hci_dev_lock, creating an infinite loop. The fix adds bounds checking and terminates the BIG if not all BIS connections can be properly established.

03

BranchFixed inPatch commit
6.126.12.8877981a507aa0
6.186.18.30665da0baaf03
6.56.56cb7f67bc28d
6.66.6.14022559ad7654f
7.07.0.75ddb80142611
mainline7.1-rc3