Skip to main content
← Vulnerabilities

Out-of-bounds read in Bluetooth Host periodic advertising report reassembly due to unvalidated report length

4.3MediumCNA
Exploited
No known exploitation
Fix
Fixed in 4.3.2, 4.5.0
Who is exposed
Not reported

Do first: Upgrade to a fixed version: 4.3.2, 4.5.0.

Published
Last modified
Reference
Last checked
4/100 · provisional
None on Exploit-DB, Metasploit or GitHub

Summary

Zephyr's Bluetooth Host stack has an out-of-bounds read in periodic advertising report handling that an attacker on an adjacent network can trigger without logging in or taking any user action. The attacker can read nearby memory, including stale contents of earlier HCI events, and have it delivered to advertising data listeners as if it were genuine advertising data.

Written by anthropic/claude-haiku-5.5 from the sources below. Verify against them.

Read the original description

bt_hci_le_per_adv_report_common() in subsys/bluetooth/host/scan.c handles the HCI_LE_Periodic_Advertising_Report (and _v2) event. It verified that the fixed event header was present and that the controller-declared Data_Length fits the tailroom of the periodic-sync reassembly buffer, but never checked that the event actually carried as many data bytes as evt->length claims. Both reassembly paths — DATA_STATUS_PARTIAL, and DATA_STATUS_COMPLETE while a chain is already in progress — then called net_buf_simple_add_mem(&per_adv_sync->reassembly, buf->data, evt->length), copying up to 255 bytes starting past the end of the event's real payload.

The Data_Length field originates in the HCI controller, so the flaw is reachable in host-only/split builds where the controller is a separate part reached over H4 UART, SPI, USB or an inter-core IPC transport: a malicious, compromised or buggy controller (or an attacker able to inject on that link) can send a report declaring a length larger than the event payload. The generic event dispatcher in subsys/bluetooth/host/hci_core.c only enforces a per-event minimum length and never cross-checks the subevent's internal length field, so nothing else catches it. Builds using Zephyr's own in-image controller are not affected, because the controller always emits a length matching the bytes it appends.

Exploitation additionally requires CONFIG_BT_PER_ADV_SYNC with CONFIG_BT_PER_ADV_SYNC_BUF_SIZE > 0 (the option defaults to 0, which compiles the reassembly block out; LE Audio broadcast-sink and Public Broadcast Profile applications that reassemble fragmented periodic advertising data set it), and an established periodic advertising sync.

The consequence is an out-of-bounds read of adjacent HCI RX-pool memory — including stale contents of previously received HCI events — which is copied into the reassembly buffer and then delivered to every registered bt_le_per_adv_sync_cb.recv listener as if it were received advertising data, so the disclosed memory becomes application-visible and may be forwarded off-device. The write side remains in bounds because the tailroom check uses the same length value, so there is no memory corruption; impact is limited to information disclosure and undefined behaviour on the over-read. The fix drops any report whose declared length exceeds the remaining event payload, matching the guard already present in the extended and legacy advertising report handlers.

cve.now Index

4Pcve.now Index 4 of 100 · methodology v3 · provisional
  • Exploitation?/40Unknown. No CISA SSVC exploitation rating yet
  • Exposure?/25Unknown. No advisory context yet
  • Reach?/20Unknown. No tracked technology or package matched
  • Severity4.3/10CVSS 4.3
  • No patch0/5No signal

What would change the score

  • Would score about 59 if added to CISA KEV
  • Would score about 54 if CISA's SSVC rates exploitation active
  • Would score about 26 if advisories confirm default setups are exposed

What to do

  • Upgrade to a fixed version: 4.3.2, 4.5.0.

Check your systems with an agent

Paste this into a coding or ops agent. It checks your systems read-only and reports a table per asset.

Check whether my systems are affected by CVE-2026-90832 (Out-of-bounds read in Bluetooth Host periodic advertising report reassembly due to unvalidated report length), using the cve.now data below.

Rules: work read-only. Do not run exploit code, proof-of-concept scripts or scanners that send attack payloads, and do not change any configuration, package, image or deployment. Report findings only.

What cve.now has for CVE-2026-90832 (entry last updated 2026-11-10):
Affected:
- zephyrproject zephyr: from 3.0.0, fixed in 4.3.2; from 4.4.0, fixed in 4.5.0
Fixed versions: 4.3.2, 4.5.0.
Setup: unknown whether the bug needs a non-default feature or setting. Check the advisory.
CISA KEV: CVE-2026-90832 is not listed as of cve.now's last read.
This KEV status is for CVE-2026-90832 only. If you also check another CVE, look up its own KEV status; never assume it from this one.

How to check:
- Installed software: check what is actually running, not what a repo declares. Read the version from each host, container image and Kubernetes node (the binary's version output, the OS package database, image layers), and check whether the conditions above hold there. Distribution packages may carry a backported fix under an older version number; confirm against the distribution's own advisory.

Verify against the linked advisories before concluding, and cite the date you read each one:
- https://github.com/zephyrproject-rtos/zephyr/commit/e9c3252c244b094b9caf6f426ffb77c509e58a9f
- https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-2q4q-gv2c-997j
Do not conclude an asset is unaffected unless you checked it and the evidence covers both its version and the conditions above. If you could not check something, mark it unknown and say what is missing.

Report a table with one row per asset and these columns: Asset | Version or build | Status (affected, fixed, not applicable, unknown) | Compensating controls | Exposure (internet-facing, internal, none) | Evidence | Next action.

Entry: https://cve.now/CVE-2026-90832
For follow-up questions, use the cve.now MCP server at https://mcp.cve.now/mcp (no authentication), for example get_vulnerability with id CVE-2026-90832.

Timeline

  1. CVE published
  2. First seen by cve.now

Affected versions

  • zephyr

    From 3.0.0 · fixed in 4.3.2; From 4.4.0 · fixed in 4.5.0

Evidence 4

Vendor advisory · 1

Establishes: Affected and fixed versions.

  1. Advisory

CVE record · 2

Establishes: The identifier and description.

  1. Record
  2. Record

Other links · 1

  1. Patch

Corrections

None so far.

Something wrong on this page? Report an error. Every fix is listed here.

Questions about CVE-2026-90832

Is CVE-2026-90832 being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.Source: cve.now feed data

Which versions are affected by CVE-2026-90832?

zephyr: from 3.0.0 before 4.3.2; from 4.4.0 before 4.5.0.Source: cve.now feed data

How do I fix CVE-2026-90832?

Upgrade to a fixed version: 4.3.2, 4.5.0.Source: cve.now feed data