Zephyr: Out-of-bounds write in LE Audio Broadcast Sink BASE metadata handling
Summary
The LE Audio Broadcast Sink in Zephyr copies subgroup metadata from a received Basic Audio Announcement (BASE) into the Broadcast Audio Scan Service receive state without bounds checks on the subgroup count or metadata length. A nearby attacker can send or impersonate a crafted periodic advertising BASE that the device syncs to, causing memory corruption in adjacent Bluetooth audio state and potentially code execution in the Bluetooth receive thread, with no pairing or connection required. Information disclosure through the BASS notification to a connected Broadcast Assistant is also possible.
Affected
- Zephyr 3.6.0 to 4.4.2
- Only builds with the LE Audio broadcast sink enabled (CONFIG_BT_BAP_BROADCAST_SINK) are affected
- Default configurations are not affected according to the CNA
Fixed in
- Zephyr 4.5.0 (fix commit 5738f61f4128bb38508bab57342b1f7bf218d127)
- Backports for v4.4, v4.3 and v3.7 exist; exact patch release numbers for these branches are unknown.
Workaround
Unknown.
- If broadcast audio reception is not needed, disabling the broadcast sink build option removes the vulnerable code path (own assessment, not vendor-confirmed).
Exploitation
- VulDB reports that no exploit is available.
- CISA SSVC assessment: exploitation none, automatable no, technical impact total.
- No public proof of concept found.
Our recommendation
- Identify devices built on Zephyr 3.6.0 to 4.4.2 that use LE Audio broadcast reception, ideally by asking device vendors.
- Ask vendors for firmware updates based on Zephyr 4.5.0 or a backported release.
- Until patched, limit exposure to Bluetooth audio features that are not needed and monitor vendor advisories.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- Zephyr GHSA-4qwc-2qfq-w2fj advisory github.com
- Zephyr fix commit 5738f61 github.com
- Zephyr vulnerabilities page docs.zephyrproject.org
- Zephyr 4.3.2 release notes github.com
- OSV CVE-2026-19570 osv.dev
- VulDB 415740 vuldb.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 31 Oct 2026, 21:03.
Original description (NVD)
The LE Audio Broadcast Sink in subsys/bluetooth/audio/bap_broadcast_sink.c copies subgroup metadata from a received Basic Audio Announcement (BASE) into the static Broadcast Audio Scan Service parameter structure mod_src_param without any bounds check. In base_subgroup_meta_cb() the destination element was selected as mod_src_param.subgroups[mod_src_param.num_subgroups] with no test against ARRAY_SIZE(mod_src_param.subgroups) (sized by CONFIG_BT_BAP_BASS_MAX_SUBGROUPS, default 1), and the metadata was copied with memcpy() using the raw on-air length returned by bt_bap_base_get_subgroup_codec_meta() into a metadata array sized by CONFIG_BT_AUDIO_CODEC_CFG_MAX_METADATA_SIZE (default 4). The BASE validator bt_bap_base_get_base_from_ad() only checks structural consistency and permits up to ~24 subgroups and metadata LTVs of ~240 octets. The defect is reached from the periodic advertising receive callback: pa_recv() → bt_data_parse() → pa_decode_base() → update_recv_state_base() → bt_bap_base_foreach_subgroup() → base_subgroup_meta_cb(). Every broadcast sink registers a scan-delegator receive state at creation (bt_bap_broadcast_sink_create() calls broadcast_sink_add_src()), and CONFIG_BT_BAP_BROADCAST_SINK depends on CONFIG_BT_BAP_SCAN_DELEGATOR, so the path is active in every broadcast-sink build once the device is periodic-advertising-synced. An attacker in radio range who operates a broadcast source the device syncs to — or who impersonates the advertiser address and SID of one already in use, periodic advertising data being unauthenticated — can change the BASE at will; each new BASE is re-parsed. A crafted BASE therefore writes attacker-chosen bytes past the end of a fixed static object in .bss: up to roughly 236 bytes for an oversized metadata LTV, plus whole struct bt_bap_bass_subgroup records for each subgroup beyond CONFIG_BT_BAP_BASS_MAX_SUBGROUPS. This is memory corruption of adjacent Bluetooth-audio state reachable with no pairing, bonding or GATT connection, with a potential for remote code execution in the Bluetooth RX thread; in addition, the unvalidated metadata_len is forwarded to bt_bap_scan_delegator_mod_src(), which neither clamps it nor rejects it, leading to a further copy into the receive state and to out-of-bounds memory being disclosed in the BASS receive-state notification sent to a connected Broadcast Assistant. The fix rejects a BASE carrying more subgroups than the receive state can hold (discarding the update entirely) and omits metadata that does not fit rather than copying it, and additionally honours the previously-ignored error return of the subgroup decode pass.
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
