CVE-2026-5589

Out-of-bounds write caused by an integer underflow in the Bluetooth Mesh subsystem.

Published Jun 4, 2026 CVSS 3.1 · 6.3 Medium EPSS < 1% KEV · Not listed
Description
An integer underflow in bt_mesh_sol_recv() in the Bluetooth Mesh solicitation handling (subsys/bluetooth/mesh/solicitation.c) leads to an out-of-bounds write. When CONFIG_BT_MESH_OD_PRIV_PROXY_SRV is enabled, the function parses solicitation PDUs from raw BLE advertising payloads. The AD parsing loop reads an attacker-controlled length byte (reported_len) and computes reported_len - 3 without checking that reported_len >= 3. When reported_len is less than 3, the subtraction is performed in signed int arithmetic and yields a negative value that bypasses the length guard and is then implicitly converted to a very large size_t when passed to net_buf_simple_pull_mem(). In builds without assertions, this wraps the buffer length and advances the data pointer far out of bounds, so subsequent reads dereference invalid memory. A nearby BLE device can trigger this with a non-connectable advertisement carrying a UUID16 AD structure and a crafted length byte, with no pairing or prior association required, potentially leading to denial of service or arbitrary code execution.

Analysis

AI-generated

Technical impact

An integer underflow in bt_mesh_sol_recv() causes an out‑of‑bounds write during solicitation PDU parsing. The underflow allows an attacker to craft a length byte smaller than three, leading the code to compute a negative value that wraps into an enormous size_t when passed to net_buf_simple_pull_mem(). This causes the buffer pointer to advance beyond the allocated memory, resulting in invalid memory accesses that can be exploited for denial of service or arbitrary code execution. The vulnerability can be triggered by sending a non‑connectable BLE advertisement containing a crafted UUID16 AD structure, with no pairing or prior association required.

Affected Systems

Zephyr Project's Zephyr RTOS, specifically the Bluetooth Mesh sub‑system when CONFIG_BT_MESH_OD_PRIV_PROXY_SRV is enabled. No specific version ranges are listed in the advisory; the issue applies to any build including that configuration.

Risk and Exploitability

The CVSS score is 6.3, indicating moderate severity; the EPSS score is less than 1%, implying a very low exploitation likelihood. The vulnerability is publicly known and exploited only via BLE advertisements, which are easily transmitted by any nearby BLE device. Because the attack does not require credentials or prior configuration, an attacker can affect any device running the affected Zephyr code. The lack of a KEV listing suggests current exploitation may not yet be widespread, but the theoretical impact warrants immediate attention.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to the latest Zephyr RTOS release that includes the bt_mesh solicitation underflow fix.
  • Disable the CONFIG_BT_MESH_OD_PRIV_PROXY_SRV setting if the privacy‑proxy service is not required.
  • Apply kernel or network filters to block anomalous BLE advertisements that include suspicious length fields.
  • Rebuild Zephyr with assertions enabled to catch the underflow during development and testing.

Generated by OpenCVE AI on June 5, 2026 at 20:47 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics cvssV3_1

{'score': 6.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L'}

ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Zephyrproject-rtos
Zephyrproject-rtos zephyr
Vendors & Products Zephyrproject-rtos
Zephyrproject-rtos zephyr
Type Values Removed Values Added
Description An integer underflow in bt_mesh_sol_recv() in the Bluetooth Mesh solicitation handling (subsys/bluetooth/mesh/solicitation.c) leads to an out-of-bounds write. When CONFIG_BT_MESH_OD_PRIV_PROXY_SRV is enabled, the function parses solicitation PDUs from raw BLE advertising payloads. The AD parsing loop reads an attacker-controlled length byte (reported_len) and computes reported_len - 3 without checking that reported_len >= 3. When reported_len is less than 3, the subtraction is performed in signed int arithmetic and yields a negative value that bypasses the length guard and is then implicitly converted to a very large size_t when passed to net_buf_simple_pull_mem(). In builds without assertions, this wraps the buffer length and advances the data pointer far out of bounds, so subsequent reads dereference invalid memory. A nearby BLE device can trigger this with a non-connectable advertisement carrying a UUID16 AD structure and a crafted length byte, with no pairing or prior association required, potentially leading to denial of service or arbitrary code execution.
Title Out-of-bounds write caused by an integer underflow in the Bluetooth Mesh subsystem.
Weaknesses CWE-787
References
Weaknesses

Sources

Status
PUBLISHED
Assigner
zephyr
Published
Updated
Oct 15, 2026, 10:10 PM
Reserved
Apr 5, 2026, 2:52 AM
Status
Analyzed
Published
Jun 4, 2026, 8:16 PM
Modified
Oct 15, 2026, 11:17 PM