Description
Zephyr's Bluetooth Mesh subnet key management leaks one PSA Crypto key slot on every subnet-key teardown. In subsys/bluetooth/mesh/subnet.c, net_keys_create() imports the Private Beacon Key into a PSA key slot under CONFIG_BT_MESH_PRIV_BEACONS (enabled by default), but subnet_keys_destroy() guarded the matching psa_destroy_key() with CONFIG_BT_MESH_V1d1. That Kconfig symbol was removed when explicit Mesh 1.0.1 support was dropped, so the destroy branch became permanently dead code and the import is never balanced by a destroy.

The imbalanced teardown is reached every time subnet keys are destroyed: deleting a subnet (Config Server NetKey Delete), completing a Key Refresh Procedure (which retires the old key set), and resetting/re-provisioning the node. The over-the-air triggers are processed only under the node's device key, so they are exercisable by the provisioner or network administrator that owns the node, reachable over the Bluetooth Mesh network.

With the default CONFIG_MBEDTLS_PSA_KEY_SLOT_COUNT of 16, repeated add/delete or key-refresh cycles exhaust the shared PSA key-slot pool after roughly a dozen rounds. Once exhausted, bt_mesh_private_beacon_key() and thus subnet creation fail: the node can no longer add subnets or complete key refresh, and other PSA crypto consumers on the device may be starved, until the device is rebooted. The fix aligns the destroy guard with the import guard (CONFIG_BT_MESH_PRIV_BEACONS) so each slot is freed.
Published: 2026-08-02
Score: 2.4 Low
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Zephyr’s Bluetooth Mesh implementation fails to free a PSA crypto key slot each time a subnet key is destroyed. The missing cleanup occurs because the configuration guard that paired the import with psa_destroy_key was removed, leaving the slot allocated forever. After a small number of add/delete or key‑refresh cycles—typically about a dozen with the default 16‑slot pool—the slot pool is saturated, causing new subnet creation, key refresh, and other PSA crypto consumers to fail until the device is rebooted. The flaw results in a denial‑of‑service that can be triggered by any authorized provisioner or network administrator sending over‑the‑air commands to delete a subnet or complete a key refresh.

Affected Systems

The vulnerability affects Zephyr RTOS builds that include the buggy mesh subnet code. It appears in any build that uses the default CONFIG_MBEDTLS_PSA_KEY_SLOT_COUNT of 16 and has CONFIG_BT_MESH_PRIV_BEACONS enabled while CONFIG_BT_MESH_V1d1 is absent. Any Zephyr RTOS project compiled after the removal of CONFIG_BT_MESH_V1d1, specifically following the commit that introduces this defect, is vulnerable.

Risk and Exploitability

The CVSS score of 2.4 classifies the issue as low severity, and the EPSS score is unavailable. It is not listed in the CISA KEV catalog. The risk level is moderate for devices that frequently delete subnets or perform key‑refresh cycles. An attacker with legitimate over‑the‑air access—i.e., a provisioner or network administrator—can exercise the exploit by issuing standard subnet deletion or key‑refresh commands, exhausting the key‑slot pool and rendering the node inoperable until reboot. The flaw does not directly expose confidentiality or integrity but can disrupt critical mesh services by causing denial of service.

Generated by OpenCVE AI on August 4, 2026 at 11:06 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Zephyr to a revision that includes the patch aligning psa_destroy_key with the import guard (commit f573da9).
  • If an upgrade cannot be performed immediately, reconfigure the build to disable CONFIG_BT_MESH_PRIV_BEACONS so no PSA key slot is allocated for private beacons.
  • Continuously monitor PSA key‑slot usage and reset or reboot the node when the slot count approaches exhaustion.
  • Avoid unnecessary subnet deletions or key‑refresh cycles until the device has been patched.

Generated by OpenCVE AI on August 4, 2026 at 11:06 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 03 Aug 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

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


Sun, 02 Aug 2026 16:15:00 +0000

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

Sun, 02 Aug 2026 14:45:00 +0000

Type Values Removed Values Added
Description Zephyr's Bluetooth Mesh subnet key management leaks one PSA Crypto key slot on every subnet-key teardown. In subsys/bluetooth/mesh/subnet.c, net_keys_create() imports the Private Beacon Key into a PSA key slot under CONFIG_BT_MESH_PRIV_BEACONS (enabled by default), but subnet_keys_destroy() guarded the matching psa_destroy_key() with CONFIG_BT_MESH_V1d1. That Kconfig symbol was removed when explicit Mesh 1.0.1 support was dropped, so the destroy branch became permanently dead code and the import is never balanced by a destroy. The imbalanced teardown is reached every time subnet keys are destroyed: deleting a subnet (Config Server NetKey Delete), completing a Key Refresh Procedure (which retires the old key set), and resetting/re-provisioning the node. The over-the-air triggers are processed only under the node's device key, so they are exercisable by the provisioner or network administrator that owns the node, reachable over the Bluetooth Mesh network. With the default CONFIG_MBEDTLS_PSA_KEY_SLOT_COUNT of 16, repeated add/delete or key-refresh cycles exhaust the shared PSA key-slot pool after roughly a dozen rounds. Once exhausted, bt_mesh_private_beacon_key() and thus subnet creation fail: the node can no longer add subnets or complete key refresh, and other PSA crypto consumers on the device may be starved, until the device is rebooted. The fix aligns the destroy guard with the import guard (CONFIG_BT_MESH_PRIV_BEACONS) so each slot is freed.
Title PSA key-slot leak in Bluetooth Mesh subnet deletion leading to resource-exhaustion DoS
Weaknesses CWE-401
References
Metrics cvssV3_1

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


Subscriptions

Zephyrproject Zephyr
cve-icon MITRE

Status: PUBLISHED

Assigner: zephyr

Published:

Updated: 2026-08-03T14:57:06.431Z

Reserved: 2026-06-03T15:44:07.840Z

Link: CVE-2026-10774

cve-icon Vulnrichment

Updated: 2026-08-03T14:57:00.891Z

cve-icon NVD

Status : Analyzed

Published: 2026-08-02T15:16:33.793

Modified: 2026-08-10T14:32:30.517

Link: CVE-2026-10774

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-04T11:15:06Z

Weaknesses
  • CWE-401

    Missing Release of Memory after Effective Lifetime