Sceawere

Vulnerability Detail

CVE-2026-13213UPDATED Verified Sceawere Triage Sources: NVD / CISA KEV

Zephyr HAS GATT Server NULL Pointer Dereference Denial of Service

Vulnerability Metadata

Severity
Medium
Score / CVSS
5.3
Creation Date
4h ago
Vendor
zephyrproject
Product
zephyr
Attack Type
memory-safety
Vector String
CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Attack Complexity
HIGH

Narrative and Response

Description

The Hearing Access Service (HAS) GATT server in subsys/bluetooth/audio/has.c installs a connection-callback set unconditionally via BT_CONN_CB_DEFINE, so security_changed() runs for every connection that establishes security even before the application has called bt_has_register(). The service attribute pointers hearing_aid_features_attr, preset_control_point_attr, and active_preset_index_attr remain NULL until bt_has_register() resolves them and sets has.registered. With CONFIG_BT_SETTINGS, settings_set_cb() restores each bonded client's persisted context at boot and unconditionally sets context->flags to BONDED_CLIENT_INIT_FLAGS (non-zero). When a previously bonded peer reconnects and re-establishes security during the startup window before bt_has_register() has been called, security_changed() sees the non-zero flags and schedules notify_work_handler, which calls bt_gatt_is_subscribed() with a still-NULL attribute pointer. That triggers an assertion (__ASSERT(attr, ...) in bt_gatt_is_subscribed()), or a NULL dereference of attr->uuid when assertions are compiled out. The result is a remotely triggerable (Bluetooth, adjacent) crash of the HAS peripheral. Exploitation requires the peer to have previously bonded with the device and to reconnect within the boot-time race window before the application registers the service; a peer that reconnects persistently can prolong the outage. Impact is denial of service only, with no memory corruption or information disclosure. The fix adds an early if (!has.registered) { return; } guard in security_changed(), so no notification work is scheduled until the GATT service is registered and its attribute pointers are valid.

Executive Summary

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Executive Summary Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

Technical Details

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Detailed Technical Analysis Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

Mitigations

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Remediation & Mitigations Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

References

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Intelligence References Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

Additional Metadata

{
  "score": "5.3",
  "pubDate": "2026-08-24T18:16:59.450Z",
  "pubdate": "2026-08-24T18:16:59.450Z",
  "executiveSummary": "A denial of service vulnerability exists within the Hearing Access Service (HAS) GATT server implementation in subsys/bluetooth/audio/has.c.\nThe vulnerability is triggered by a race condition during the device boot window, where an uninitialized service state interacts with connection security callbacks.\nThe impact is a remote, adjacent-network crash of the HAS peripheral, leading to a Denial of Service (DoS) condition with no memory corruption or information disclosure capabilities.\nAffected systems include products utilizing the Zephyr Bluetooth audio subsystem with CONFIG_BT_SETTINGS enabled.\nAttacker capabilities require an adjacent Bluetooth connection from a peer that has previously bonded with the target device.\nExploitation requires the peer to reconnect during the specific boot-time window before the application calls bt_has_register(), and persistent reconnection attempts can continuously prolong the outage.",
  "technicalDetails": "The vulnerability resides in subsys/bluetooth/audio/has.c within the Hearing Access Service (HAS) GATT server component of Zephyr.\nThe root cause stems from the unconditional installation of a connection-callback via BT_CONN_CB_DEFINE, which causes the security_changed() function to execute for every connection establishing security, even prior to the application invoking bt_has_register().\nService attribute pointers such as hearing_aid_features_attr, preset_control_point_attr, and active_preset_index_attr remain initialized to NULL until bt_has_register() successfully resolves them and sets has.registered to true.\nWhen CONFIG_BT_SETTINGS is enabled, settings_set_cb() restores persisted bonded client contexts at boot and unconditionally sets context->flags to a non-zero value defined by BONDED_CLIENT_INIT_FLAGS.\nThe attack flow proceeds as follows: 1) The peripheral boots up. 2) A previously bonded peer immediately reconnects and re-establishes security during the startup race window before the application registers the HAS service. 3) The security_changed() callback evaluates the connection, observes the non-zero flags restored from the bonded context, and schedules notify_work_handler(). 4) The handler invokes bt_gatt_is_subscribed() passing a still-NULL attribute pointer.\nThis condition triggers a fatal assertion failure (__ASSERT(attr, ...)) in bt_gatt_is_subscribed(), or results in a direct NULL pointer dereference of attr->uuid when assertions are compiled out, directly crashing the peripheral.\nAuthentication and privilege requirements are minimal from an attacker perspective, requiring only a previously established Bluetooth bond with the peripheral.\nNetwork exposure is limited to the adjacent Bluetooth radio range.\nPost-exploitation impact is strictly restricted to denial of service, as persistent reconnection attempts by the bonded peer can maintain the peripheral in a continuous crash loop."
}
CVE-2026-13213: Zephyr HAS GATT Server NULL Pointer Dereference Denial of Service (MEDIUM Severity, CVSS: 5.3) - Sceawere