Skip to main content

Zephyr RTOS CVE-2026-2411

| EUVDEUVD-2026-51869 MEDIUM
Incorrect Authorization (CWE-863)
2026-08-01 zephyr
6.5
CVSS 3.1 · Vendor: zephyr
Share

Severity by source

Vendor (zephyr) PRIMARY
6.5 MEDIUM
AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI
6.5 MEDIUM

AV:A because Bluetooth radio proximity is required; PR:N because the remote peer connects and triggers the flaw without any credentials; C:H for full disclosure of protected characteristic values; no integrity or availability impact.

3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:A/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

Attack Vector
Adjacent
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

2
Source Code Evidence Fetched
Aug 01, 2026 - 13:32 vuln.today
Analysis Generated
Aug 01, 2026 - 13:32 vuln.today

DescriptionCVE.org

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.

AnalysisAI

Bluetooth GATT notification and indication paths in Zephyr RTOS 2.6.0 through 4.4.x skip the application-configured encryption, authentication, and LESC security requirements for characteristic values when the application follows the documented idiom of passing the Characteristic Declaration attribute to the notify/indicate APIs. A remote Bluetooth peer within radio range can connect without pairing and trigger the server to emit protected characteristic values over an unsecured link by writing the Client Characteristic Configuration descriptor, achieving an access-control bypass and information disclosure. No public exploit is identified at time of analysis; exploitation requires adjacent network access and specific application configuration.

Technical ContextAI

Zephyr RTOS implements the Generic Attribute Profile (GATT) per the Bluetooth Core Specification in subsys/bluetooth/host/gatt.c (CPE: cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:*). Each GATT characteristic is stored as two consecutive entries in the attribute table: a Characteristic Declaration (UUID BT_UUID_GATT_CHRC) whose permissions are hard-coded to BT_GATT_PERM_READ, immediately followed by the Characteristic Value attribute that carries the application-specified security flags such as BT_GATT_PERM_READ_ENCRYPT, BT_GATT_PERM_READ_AUTHEN, or the LESC variant. The bt_gatt_notify_cb(), bt_gatt_indicate(), and gatt_notify_multiple_verify_params() functions each call bt_gatt_check_perm() against params->attr to enforce link security before sending data. When params->attr references the declaration (the documented and common idiom), the check evaluates the declaration's unconditional read permission rather than the value's security requirement, silently bypassing the intended access control. The Notify-Multiple path had an additional defect: the permission mask omitted the LE Secure Connections bit. Root cause is CWE-863 (Incorrect Authorization): the authorization decision operates on the wrong attribute object.

RemediationAI

Upgrade to Zephyr 4.5.0 or later, which incorporates the upstream fix from commit c3386f92fe81bd10dc23e6a115e6a80a7d863546 (https://github.com/zephyrproject-rtos/zephyr/commit/c3386f92fe81bd10dc23e6a115e6a80a7d863546). The fix introduces bt_gatt_attr_resolve_value(), which maps any Characteristic Declaration attribute to the immediately following Characteristic Value attribute before bt_gatt_check_perm() is invoked in gatt_notify_cb(), gatt_indicate(), and gatt_notify_multiple_verify_params(), and also expands the Notify-Multiple permission mask to BT_GATT_PERM_READ_ENCRYPT_MASK to enforce LESC requirements. For applications unable to upgrade immediately, two workarounds are available: first, modify application code to pass the Characteristic Value attribute pointer directly to bt_gatt_notify_cb() and bt_gatt_indicate() rather than the declaration pointer, which avoids the mis-checked path entirely; second, require pairing or bonding before the CCC descriptor itself is writable, preventing unauthenticated peers from enabling notifications in the first place. The second workaround has the trade-off of restricting CCC access to paired devices only, which may affect usability in open-advertising scenarios. See the advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-4w3r-v9q9-4462.

More in Zephyr

View all
CVE-2023-4260 CRITICAL POC
10.0 Sep 27

Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),

CVE-2023-5055 CRITICAL POC
9.8 Nov 21

Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit

CVE-2023-4257 CRITICAL POC
9.8 Oct 13

Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS

CVE-2023-3725 CRITICAL POC
9.8 Oct 06

Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner

CVE-2021-3323 CRITICAL POC
9.8 Oct 12

Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability

CVE-2021-3625 CRITICAL POC
9.8 Oct 05

Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable

CVE-2021-3319 CRITICAL POC
9.8 Oct 05

DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul

CVE-2018-1000800 CRITICAL POC
9.8 Sep 06

zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(

CVE-2023-4264 CRITICAL POC
9.6 Sep 27

Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul

CVE-2026-1678 CRITICAL POC
9.4 Mar 05

Buffer overflow in Zephyr RTOS dns_unpack_name() function causing OOB writes. PoC available.

CVE-2024-1638 CRITICAL POC
9.1 Feb 19

The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte

CVE-2023-5753 HIGH POC
8.8 Oct 25

Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c

Share

CVE-2026-2411 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy