Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessConnect to OTS server within BLE range
-
DeliveryEnable OACP indications via CCC
-
ExploitWrite failing Calculate Checksum command
-
ExecutionError path pulls from empty buffer
-
ImpactDevice panics or leaks 4 bytes of stack
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V16 - Security Logging and Error Handling Reachable assertion handling
|
| Exploitation Conditions | The target device must run Zephyr's Bluetooth Object Transfer Service (OTS) server with the OACP characteristic exposed and be connectable/advertising; no pairing, encryption, or authentication is required (BT_GATT_PERM_WRITE / BT_GATT_PERM_READ|WRITE). The attacker must be within Bluetooth radio range (adjacent, not remote-over-internet). The trigger is a Calculate Checksum (BT_GATT_OTS_OACP_PROC_CHECKSUM_CALC) command that fails validation - e.g. issued with no object selected (returns INV_OBJ) or with invalid offset/len (returns INV_PARAM); because oacp_command_decode() handles the op code unconditionally (no CONFIG_BT_OTS_OACP_CHECKSUM_SUPPORT guard), even builds without checksum support are reachable via OPCODE_NOT_SUP. Limiting factors: the denial-of-service panic requires CONFIG_ASSERT to be enabled, while the 4-byte uninitialized-stack disclosure requires assertions to be disabled; adjacent-only vector limits reach to physically nearby attackers; and the disclosure is bounded to four bytes per request with no memory corruption. |
| Impact | This is a genuine but moderate-priority issue, not a top-tier emergency. The provided CVSS 3.1 vector (AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H, 7.1) is consistent with the description: exploitation requires only Bluetooth radio-range (adjacent) access, low complexity, and no authentication (PR:N), because the OACP characteristic and its CCC are declared BT_GATT_PERM_WRITE / BT_GATT_PERM_READ|WRITE with no pairing or encryption. The dominant impact is availability (A:H) via a remotely triggered kernel panic on CONFIG_ASSERT-enabled builds, plus low confidentiality (C:L) from four bytes of uninitialized stack disclosure on asserts-disabled builds. The vuln.today Decision label is 'this_week', which aligns with a real-but-not-critical adjacent-only flaw. No EPSS score was provided, so statistical exploitation probability cannot be weighed. KEV status is not indicated in the input, so there is no evidence of active exploitation - treat it as not currently KEV-listed. A detailed PoC/reproduction is described in the vendor GHSA advisory (runtime-reproduced crash on mps2/an385, Zephyr v4.3.0, with a 9-byte crashing input), raising practical risk above a theoretical finding, though the attack is bounded (adjacent vector, 4-byte disclosure per request, no memory corruption). The main limiter on real-world urgency is that it only affects devices actually running Zephyr's optional OTS server with the OACP characteristic exposed and connectable. |
| Exploit ScenarioDerived | An attacker within Bluetooth radio range connects to a device running Zephyr's OTS server, enables OACP indications, and sends a nine-byte Calculate Checksum command that fails validation (for example with no object selected). On an assertion-enabled build this trips net_buf_simple_pull_mem() and panics the device (denial of service); on an assertion-disabled build it returns four bytes of uninitialized stack memory in the indication, repeatable on every request. The vendor GHSA advisory documents a runtime-reproduced PoC for the panic. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 26, 2026
Bluetooth Object Transfer Service (OTS) servers in Zephyr (>= 3.3.0 through <= 4.4.2) mishandle failed Calculate Checksum responses: oacp_ind_send() appends a four-byte Checksum Value field based only on the requested op code, then calls net_buf_simple_pull_le32() on a zero-length stack buffer whenever validation failed. Any peer within radio range can abuse this with a nine-byte OACP write and no pairing, encryption or authentication, because the OACP characteristic and its CCC are exposed with unauthenticated write permissions. On CONFIG_ASSERT builds the zero-length pull trips the assertion in net_buf_simple_pull_mem() and panics the device (remote DoS); with assertions compiled out the same path copies four bytes of uninitialized stack memory into the indication sent to the peer, repeatable per request and bounded to four bytes with no memory corruption; the reporter's reproducer demonstrates the panic and no public exploit tooling beyond it is confirmed.
RemediationAI
Apply the upstream fix commit https://github.com/zephyrproject-rtos/zephyr/commit/36145a6f1164e2e0a18c8c83d5b1be6e7d3f6e23, which adds the condition oacp_status == BT_GATT_OTS_OACP_RES_SUCCESS to the checksum field append in oacp_ind_send(), or move to Zephyr 4.5.0 once released (the advisory's fixed version is a projection since the fix is merged on main but untagged); the fix is complete for this component, as olcp_ind_send() builds a fixed three-byte response and has no equivalent defect. Until patched, drop or avoid enabling the OTS server (CONFIG_BT_OTS) on devices that do not need object transfer, since restricting the characteristic's permissions would require source changes and CONFIG_BT_OTS_OACP_CHECKSUM_SUPPORT does not help because the op code is decoded unconditionally. Do not treat disabling CONFIG_ASSERT as a mitigation: it converts the remote panic into the four-byte uninitialized-stack disclosure rather than removing the defect. For deployments that must keep OTS running, limit which peers can connect to the GATT server (bonded-only policies can be layered at the application level, with the trade-off of excluding unpaired clients), and schedule the update for the current patch cycle.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Zephyr's Bluetooth OTS implementation exposes an Object Action Control Point (OACP) GATT characteristic over which peers issue procedures such as Calculate Checksum, answered via indications built in subsys/bluetooth/services/ots/ots_oacp.c. The response payload is a bare four-byte stack array declared with NET_BUF_SIMPLE_DEFINE(resp_param, sizeof(uint32_t)), which expands to an uninitialized array with len = 0; oacp_checksum_proc_validate() only calls net_buf_simple_add_le32() on its success path, so INV_OBJ, INV_PARAM, OBJ_LOCKED and OPER_FAILED all leave the buffer empty. Before the fix, oacp_ind_send() appended the Checksum Value field whenever oacp_proc.type was BT_GATT_OTS_OACP_PROC_CHECKSUM_CALC regardless of result code, so net_buf_simple_pull_le32() ran against a zero-length buffer. This maps to CWE-617 (reachable assertion): with CONFIG_ASSERT enabled, __ASSERT_NO_MSG(buf->len >= len) inside net_buf_simple_pull_mem() fires and panics the kernel. It also maps to CWE-908 (use of uninitialized resource): with assertions compiled out the boundary check is absent, the pull returns the pre-advance pointer into the untouched stack array, and four bytes of uninitialized stack memory are encoded into the indication. The write stays inside the seven-byte res indication buffer (OACP_OLCP_RES_MAX_SIZE == 7, uint8_t res[7]), so there is no memory corruption. oacp_command_decode() accepts BT_GATT_OTS_OACP_PROC_CHECKSUM_CALC unconditionally, without a CONFIG_BT_OTS_OACP_CHECKSUM_SUPPORT guard, so builds without checksum support also reach the defective path and fail with OPCODE_NOT_SUP.
Know when Zephyr gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H
Bluetooth radio-range gives AV:A; the OACP characteristic needs no pairing or auth so PR:N/AC:L/UI:N; A:H for the panic and C:L for the bounded 4-byte stack leak, with no integrity impact.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
The Object Transfer Service server builds its Object Action Control Point (OACP) response indication in oacp_ind_send() (subsys/bluetooth/services/ots/ots_oacp.c). Before this fix the four-byte Checksum Value field was appended whenever the requested op code was BT_GATT_OTS_OACP_PROC_CHECKSUM_CALC, regardless of the result code. The response payload is a bare, uninitialized four-byte stack buffer declared with NET_BUF_SIMPLE_DEFINE(resp_param, sizeof(uint32_t)) in bt_gatt_ots_oacp_write(), and it is filled only on the success path of oacp_checksum_proc_validate(). On every failure path the buffer is still empty, so net_buf_simple_pull_le32() was invoked on a zero-length buffer.
The OACP characteristic and its client characteristic configuration descriptor are declared with BT_GATT_PERM_WRITE and BT_GATT_PERM_READ | BT_GATT_PERM_WRITE, so no pairing, encryption, or authentication is required. Any peer within radio range that can connect to a device running the OTS server can enable OACP indications and write a nine-byte Calculate Checksum command that fails validation - for example by issuing it with no object selected, which returns BT_GATT_OTS_OACP_RES_INV_OBJ. Because oacp_command_decode() accepts the Calculate Checksum op code unconditionally (it is not guarded by CONFIG_BT_OTS_OACP_CHECKSUM_SUPPORT), builds without checksum support are reachable too: they answer BT_GATT_OTS_OACP_RES_OPCODE_NOT_SUP and take the same bad path.
On builds with CONFIG_ASSERT enabled, the zero-length pull trips the assertion inside net_buf_simple_pull_mem() and panics the device, giving a remotely triggered denial of service. On builds with assertions disabled there is no check: the pull returns the untouched stack array and four bytes of uninitialized stack memory are copied into the indication and transmitted to the peer, repeatable on every request. The disclosure is bounded to four bytes per request and the write stays inside the seven-byte res indication buffer, so there is no memory corruption; the impact is uninitialized-memory disclosure plus an availability loss in assertion-enabled configurations.
Technical POC Analysis
CWE-617 (Reachable Assertion), secondary CWE-908 (Use of Uninitialized Resource).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity vulnerability in Zephyr's Bluetooth Object Transfer Service (OTS) affects all versions from 3.3.0 through 4.4.2, enabling any nearby unauthenticated attacker to crash or leak stack memory from affected devices via a simple nine-byte Bluetooth write. This impacts the availability and confidentiality of Bluetooth-enabled products built on Zephyr, requiring immediate patching to prevent disruption and potential information disclosure.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),
An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on
Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit
Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS
Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner
Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability
Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable
DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul
zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(
Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul
The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte
Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c
EUVD-2026-109972
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB