Description
In Zephyr's Bluetooth Mesh PB-ADV provisioning bearer (subsys/bluetooth/mesh/pb_adv.c), prov_msg_recv() rescheduled the provisioning protocol watchdog timer unconditionally at the top of the function, before the FCS check and before the ADV_LINK_INVALID check. Once a provisioning attempt fails, prov_failed() sets ADV_LINK_INVALID and the only recovery path is the protocol timer firing (protocol_timeout -> prov_link_close -> close_link -> reset_adv_link and re-enabling of scanning and the unprovisioned device beacon).

A remote, unauthenticated attacker on the BLE advertising channel can first induce a provisioning failure (e.g. with a malformed generic-provisioning PDU) and then transmit any FCS-valid PB-ADV transaction PDU on the same link ID more often than once per protocol timeout (60 s, or 120 s for OOB input/output). Because each such packet reset the timer even on an invalidated link, protocol_timeout never fired, the dead link was never torn down, and the device remained pinned in an un-provisionable state with its unprovisioned beacon disabled and new Link Open requests rejected.

PB-ADV PDUs are processed without authentication and the FCS is a keyless CRC, so no pairing or prior trust is required and the attacker chooses the link ID itself. The impact is a persistent denial of provisioning/re-provisioning service; there is no memory-safety, confidentiality, or integrity impact.

The vulnerable code shipped in releases through v4.4.1. The fix moves the timer reschedule to after the ADV_LINK_INVALID check (and the FCS check before the reset) so an invalidated link can no longer be kept alive by incoming packets.
Published: 2026-07-21
Score: 4.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The flaw resides in Zephyr’s Bluetooth Mesh PB‑ADV provisioning bearer; prov_msg_recv() resets the provisioning watchdog timer before verifying if the link has been invalidated. When a provisioning attempt fails, prov_failed() marks the link as invalid, but each subsequent packet still restarts the timer, preventing the timeout that would normally close the link. As a result, the device remains locked in an un‑provisionable state: its unprovisioned beacon is turned off and all new provisioning requests are denied. No memory corruption, data leak, or integrity breach occurs; the sole effect is a persistent denial of the provisioning/re‑provisioning service, which is equivalent to a device‑level DoS.

Affected Systems

Zephyr RTOS versions up to and including 4.4.1 are vulnerable. Any Zephyr deployment that has Bluetooth Mesh enabled and the PB‑ADV provisioning bearer active is at risk. The vulnerability does not affect systems that do not use the Bluetooth Mesh PB‑ADV bearer.

Risk and Exploitability

The CVSS score of 4.3 indicates moderate severity, while the EPSS score of less than 1% and absence from CISA KEV suggest a low likelihood of widespread exploitation. An attacker only needs to transmit crafted PB‑ADV PDUs over the BLE advertising channel; by sending packets more frequently than the 60‑second (or 120‑second for OOB) timeout, the attacker keeps the invalidated link alive indefinitely. The attack vector requires no prior pairing or trust and relies on the lack of authentication for PB‑ADV PDUs. The issue persists until a provisioning timeout fires, which will close the link once the vendor’s fix is applied.

Generated by OpenCVE AI on July 30, 2026 at 16:11 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update Zephyr to a release that includes the fix, such as any version after 4.4.1 (e.g., the current latest release).
  • If an update cannot be performed immediately, disable the Bluetooth Mesh PB‑ADV provisioning bearer or disable Bluetooth Mesh entirely to avoid entering a dead link state.
  • Ensure that the provisioning watchdog timer only fires after a link has been marked valid; optionally add logic to drop any PB‑ADV PDUs received on an invalidated link until a timeout occurs.

Generated by OpenCVE AI on July 30, 2026 at 16:11 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 22 Jul 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

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


Wed, 22 Jul 2026 20:00:00 +0000

Type Values Removed Values Added
First Time appeared Zephyrproject
Zephyrproject zephyr
Vendors & Products Zephyrproject
Zephyrproject zephyr

Tue, 21 Jul 2026 21:45:00 +0000

Type Values Removed Values Added
Description In Zephyr's Bluetooth Mesh PB-ADV provisioning bearer (subsys/bluetooth/mesh/pb_adv.c), prov_msg_recv() rescheduled the provisioning protocol watchdog timer unconditionally at the top of the function, before the FCS check and before the ADV_LINK_INVALID check. Once a provisioning attempt fails, prov_failed() sets ADV_LINK_INVALID and the only recovery path is the protocol timer firing (protocol_timeout -> prov_link_close -> close_link -> reset_adv_link and re-enabling of scanning and the unprovisioned device beacon). A remote, unauthenticated attacker on the BLE advertising channel can first induce a provisioning failure (e.g. with a malformed generic-provisioning PDU) and then transmit any FCS-valid PB-ADV transaction PDU on the same link ID more often than once per protocol timeout (60 s, or 120 s for OOB input/output). Because each such packet reset the timer even on an invalidated link, protocol_timeout never fired, the dead link was never torn down, and the device remained pinned in an un-provisionable state with its unprovisioned beacon disabled and new Link Open requests rejected. PB-ADV PDUs are processed without authentication and the FCS is a keyless CRC, so no pairing or prior trust is required and the attacker chooses the link ID itself. The impact is a persistent denial of provisioning/re-provisioning service; there is no memory-safety, confidentiality, or integrity impact. The vulnerable code shipped in releases through v4.4.1. The fix moves the timer reschedule to after the ADV_LINK_INVALID check (and the FCS check before the reset) so an invalidated link can no longer be kept alive by incoming packets.
Title Bluetooth Mesh PB-ADV: invalidated provisioning link kept alive indefinitely, blocking (re)provisioning (DoS)
Weaknesses CWE-400
References
Metrics cvssV3_1

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


Subscriptions

Zephyrproject Zephyr
cve-icon MITRE

Status: PUBLISHED

Assigner: zephyr

Published:

Updated: 2026-07-22T19:37:01.018Z

Reserved: 2026-06-02T15:26:04.929Z

Link: CVE-2026-10675

cve-icon Vulnrichment

Updated: 2026-07-22T19:32:14.919Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-30T16:15:04Z

Weaknesses
  • CWE-400

    Uncontrolled Resource Consumption