CVE-2026-9263: Out-of-bounds read in Bluetooth Controller ISOAL framed RX reassembly leaks adjacent memory into host HCI ISO packets
The Zephyr Bluetooth controller ISO Adaptation Layer (subsys/bluetooth/controller/llsw/isoal.c) fails to validate the length field of a framed ISO PDU start segment. Per the Bluetooth specification a start segment (sc=0) always carries a 3-byte timeoffset, so its segment-header len must be at least PDUISOSEGTIMEOFFSETSIZE (3). isoalchecksegheader() accepted start segments with len < 3 as valid, and isoalrxframedconsume() then computed length = seghdr->len - 3 in a uint8t, underflowing to 253-255 when len is 0-2. That oversized length is passed to isoalrxappendtosdu(), whose copy is clamped only against the destination SDU buffer size, not the source PDU length, so up to ~255 bytes of controller memory beyond the received PDU are copied (via sinksduwritehci()/netbufaddmem) into an HCI ISO data packet and delivered to the host. The PDU and its segment headers are entirely attacker-controlled and arrive over the air, reachable through both the CIS and BIS-sync HCI data paths (hcidriver.c) and the vendor data path (ulliso.c), so a remote CIS peer or a broadcaster the device is synced to can trigger an out-of-bounds read causing information disclosure to the host and potential denial of service (faults or malformed oversized HCI ISO packets). The flaw affects all Zephyr releases since framed ISO reception was introduced in v3.0.0. The fix rejects sc=0 segments with len < 3 in isoalchecksegheader() and adds a guard before the subtraction in isoalrxframedconsume().
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Update isoal_check_seg_header() to validate framed ISO start segment headers by rejecting sc=0 when the segment-header length (seg_hdr->len) is less than 3 (PDU_ISO_SEG_TIMEOFFSET_SIZE).
Zephyr Bluetooth controller ISOAL (subsys/bluetooth/controller/ll_sw/isoal.c) isoal_check_seg_header() framed ISO PDU start segment validation = Reject sc=0 segments with seg_hdr->len < 3 (PDU_ISO_SEG_TIMEOFFSET_SIZE) - Configuration
Update isoal_rx_framed_consume() to add a guard before computing length = seg_hdr->len - 3 so that underflow cannot occur when seg_hdr->len is 0-2.
Zephyr Bluetooth controller ISOAL (subsys/bluetooth/controller/ll_sw/isoal.c) isoal_rx_framed_consume() length guard = Add guard before subtracting 3 from seg_hdr->len (avoid uint8_t underflow)
Event History
Frequently Asked Questions
What is the severity of CVE-2026-9263?
The severity of CVE-2026-9263 is medium with a score of 6.5.
What type of vulnerability is CVE-2026-9263?
CVE-2026-9263 is characterized as an out-of-bounds read in the Bluetooth Controller ISOAL.
How do I fix CVE-2026-9263?
To fix CVE-2026-9263, update the Zephyr Bluetooth controller ISO Adaptation Layer to the latest patched version addressing this vulnerability.
What systems are affected by CVE-2026-9263?
CVE-2026-9263 affects systems using the Zephyr Bluetooth controller ISO Adaptation Layer (ISOAL).
What are the potential impacts of CVE-2026-9263?
The potential impact of CVE-2026-9263 includes leakage of adjacent memory into host HCI ISO packets due to improper validation of the length field.