CVE-2026-5589: Out-of-bounds write caused by an integer underflow in the Bluetooth Mesh subsystem.
An integer underflow in btmeshsolrecv() in the Bluetooth Mesh solicitation handling (subsys/bluetooth/mesh/solicitation.c) leads to an out-of-bounds write. When CONFIGBTMESHODPRIVPROXYSRV is enabled, the function parses solicitation PDUs from raw BLE advertising payloads. The AD parsing loop reads an attacker-controlled length byte (reportedlen) and computes reportedlen - 3 without checking that reportedlen >= 3. When reportedlen 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 sizet when passed to netbufsimplepullmem(). 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.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2026-5589?
CVE-2026-5589 has a risk rating of 76, indicating it is a significant vulnerability.
How do I fix CVE-2026-5589?
To fix CVE-2026-5589, ensure that CONFIG_BT_MESH_OD_PRIV_PROXY_SRV is correctly configured or consider updating to the latest version of the Zephyr Project.
What systems are affected by CVE-2026-5589?
CVE-2026-5589 affects the Zephyr Bluetooth Mesh subsystem in the Zephyr Project.
What causes CVE-2026-5589?
CVE-2026-5589 is caused by an integer underflow leading to an out-of-bounds write in the bt_mesh_sol_recv() function.
When was CVE-2026-5589 published?
CVE-2026-5589 was published on June 4, 2026.