Description
Zephyr's Bluetooth host declares a GATT characteristic as two consecutive attributes: a Characteristic Declaration whose permission is hard-coded to BT_GATT_PERM_READ, and a Characteristic Value attribute that carries the application-specified security permissions (e.g. BT_GATT_PERM_READ_ENCRYPT / READ_AUTHEN / READ_LESC). The public notify and indicate APIs explicitly accept either attribute, and passing the declaration is the documented, common idiom. Before sending each notification or indication, the host re-checks link security with bt_gatt_check_perm() against params->attr in gatt_notify(), gatt_indicate(), and gatt_notify_multiple_verify_params() (subsys/bluetooth/host/gatt.c).

When the application passed the Characteristic Declaration attribute, the host correctly redirected the value handle but left params->attr pointing at the declaration, so the security check evaluated the declaration's permissions (no security required) instead of the value's. As a result the encryption/authentication/LESC requirement configured on the characteristic value was skipped. The Notify-Multiple path additionally used a mask that omitted the LE Secure Connections requirement.

A remote peer triggers the disclosure by connecting (optionally without pairing or encryption) and writing the Client Characteristic Configuration descriptor to enable notifications or indications, causing the server to emit the protected value over a link that has not reached the required security level. The impact is information disclosure / access-control bypass for characteristic values the application intended to expose only over a secured link; exposure depends on the application declaring encrypt/authen-required notify/indicate characteristics and on the CCC being writable at a lower security tier. There is no memory-safety or availability impact.

The fix adds bt_gatt_attr_resolve_value(), which maps a declaration attribute to the following value attribute before the permission check, and switches the Notify-Multiple path to the full BT_GATT_PERM_READ_ENCRYPT_MASK so the LESC requirement is also enforced.
Published: 2026-08-01
Score: 6.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Zephyr’s Bluetooth host incorrectly enforces the permissions of a characteristic declaration instead of the characteristic value during GATT notify or indicate operations. Because the declaration is always readable with no security requirement, an attacker can obtain the protected characteristic value over an unencrypted or unauthenticated link. This leads to information disclosure and violates the intended access control restrictions set by the application. The flaw is a CWE-863 authorization issue and does not involve memory corruption or denial of service.

Affected Systems

The vulnerability exists in the Zephyr real‑time operating system’s Bluetooth host stack. Any Zephyr build that includes the Bluetooth host API prior to the patch (commit c3386f92fe81bd10dc23e6a115e6a80a7d863546) is affected. Devices using Zephyr’s Bluetooth implementation for GATT services that expose encrypted or authenticated characteristics are at risk.

Risk and Exploitability

The CVSS score is 6.5, indicating a medium severity weakness. The EPSS score is not available and the entry is not listed in the CISA KEV catalog. An attacker can exploit the flaw by simply connecting to the target device over Bluetooth, writing the Client Characteristic Configuration descriptor to enable notifications or indications, and receiving the characteristic value without having established an encrypted or authenticated link. No privileged access or special conditions are required, making the exploitation straightforward for remote attackers on the same RF range.

Generated by OpenCVE AI on August 2, 2026 at 03:20 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Zephyr to a version that incorporates the commit c3386f92fe81bd10dc23e6a115e6a80a7d863546 or later, which fixes the permission check for GATT notifications and indications.
  • Verify that all GATT characteristic values that require encryption, authentication, or LE Secure Connections have the corresponding BT_GATT_PERM_READ_ENCRYPT, BT_GATT_PERM_READ_AUTHEN, or BT_GATT_PERM_READ_LESC permissions set on the value attribute, and that the CCC descriptors are configured with matching security requirements.
  • Rebuild and redeploy the application with the updated Bluetooth host stack, then perform a security assessment (e.g., test the UART, BLE communication, or remote notification flows) to confirm that encrypted/authenticated links are now enforced before sending sensitive characteristic values.

Generated by OpenCVE AI on August 2, 2026 at 03:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

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

Type Values Removed Values Added
Metrics ssvc

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


Sat, 01 Aug 2026 15:15:00 +0000

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

Sat, 01 Aug 2026 12:30:00 +0000

Type Values Removed Values Added
Description Zephyr's Bluetooth host declares a GATT characteristic as two consecutive attributes: a Characteristic Declaration whose permission is hard-coded to BT_GATT_PERM_READ, and a Characteristic Value attribute that carries the application-specified security permissions (e.g. BT_GATT_PERM_READ_ENCRYPT / READ_AUTHEN / READ_LESC). The public notify and indicate APIs explicitly accept either attribute, and passing the declaration is the documented, common idiom. Before sending each notification or indication, the host re-checks link security with bt_gatt_check_perm() against params->attr in gatt_notify(), gatt_indicate(), and gatt_notify_multiple_verify_params() (subsys/bluetooth/host/gatt.c). When the application passed the Characteristic Declaration attribute, the host correctly redirected the value handle but left params->attr pointing at the declaration, so the security check evaluated the declaration's permissions (no security required) instead of the value's. As a result the encryption/authentication/LESC requirement configured on the characteristic value was skipped. The Notify-Multiple path additionally used a mask that omitted the LE Secure Connections requirement. A remote peer triggers the disclosure by connecting (optionally without pairing or encryption) and writing the Client Characteristic Configuration descriptor to enable notifications or indications, causing the server to emit the protected value over a link that has not reached the required security level. The impact is information disclosure / access-control bypass for characteristic values the application intended to expose only over a secured link; exposure depends on the application declaring encrypt/authen-required notify/indicate characteristics and on the CCC being writable at a lower security tier. There is no memory-safety or availability impact. The fix adds bt_gatt_attr_resolve_value(), which maps a declaration attribute to the following value attribute before the permission check, and switches the Notify-Multiple path to the full BT_GATT_PERM_READ_ENCRYPT_MASK so the LESC requirement is also enforced.
Title Bluetooth GATT notify/indicate enforces the wrong attribute's permissions, bypassing encryption/authentication requirements on characteristic values
Weaknesses CWE-863
References
Metrics cvssV3_1

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


Subscriptions

Zephyrproject Zephyr
cve-icon MITRE

Status: PUBLISHED

Assigner: zephyr

Published:

Updated: 2026-08-03T17:51:29.086Z

Reserved: 2026-02-12T16:12:13.715Z

Link: CVE-2026-2411

cve-icon Vulnrichment

Updated: 2026-08-03T17:51:25.953Z

cve-icon NVD

Status : Analyzed

Published: 2026-08-01T13:16:57.160

Modified: 2026-08-07T18:38:49.957

Link: CVE-2026-2411

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-02T03:30:14Z

Weaknesses