{"id":81288,"date":"2026-06-30T19:59:12","date_gmt":"2026-06-30T16:29:12","guid":{"rendered":"https:\/\/afaghhosting.net\/blog\/cve-2026-10654-rfcomm-session-disconnect-race-leaks-session-l2cap-and-denies-further-rfcomm-service-in-zephyr-bluetooth-classic\/"},"modified":"2026-06-30T19:59:12","modified_gmt":"2026-06-30T16:29:12","slug":"cve-2026-10654-rfcomm-session-disconnect-race-leaks-session-l2cap-and-denies-further-rfcomm-service-in-zephyr-bluetooth-classic","status":"publish","type":"post","link":"https:\/\/afaghhosting.net\/blog\/cve-2026-10654-rfcomm-session-disconnect-race-leaks-session-l2cap-and-denies-further-rfcomm-service-in-zephyr-bluetooth-classic\/","title":{"rendered":"CVE-2026-10654 &#8211; RFCOMM session-disconnect race leaks session\/L2CAP and denies further RFCOMM service in Zephyr Bluetooth Classic"},"content":{"rendered":"<p>CVE ID :CVE-2026-10654<\/p>\n<p>  Published : June 30, 2026, 4:29 p.m. | 1\u00a0hour, 17\u00a0minutes ago<\/p>\n<p>  Description :A race condition in the Zephyr Bluetooth Classic RFCOMM host stack (subsys\/bluetooth\/host\/classic\/rfcomm.c) mishandles a simultaneous bidirectional session disconnect. When the local device has initiated a session teardown (state BT_RFCOMM_STATE_DISCONNECTING, DISC sent, RTX timer armed) and the connected peer concurrently sends its own DISC frame for dlci 0, rfcomm_handle_disc() invokes rfcomm_session_disconnected(), which unconditionally forced the session to BT_RFCOMM_STATE_DISCONNECTED without ever calling bt_l2cap_chan_disconnect().<\/p>\n<p>Because the recovery timer was also cancelled and a later UA is ignored in the DISCONNECTED state, the session becomes permanently wedged: the underlying L2CAP channel is never released and the session slot in the fixed bt_rfcomm_pool[CONFIG_BT_MAX_CONN] array is never reclaimed (its conn pointer stays set).<\/p>\n<p>Subsequent bt_rfcomm_dlc_connect() calls on that connection fail with -EINVAL due to the invalid session state, so RFCOMM service is denied for that peer, and repeated occurrences can exhaust the session pool. The DISC frame is peer-controlled over the air, but exploitation requires the peer&#8217;s DISC to collide with a local-initiated disconnect (a high-complexity timing race). Impact is availability\/resource-leak only; there is no memory-safety, confidentiality, or integrity consequence. The defect shipped in released versions (present in v4.4.0 and earlier).<\/p>\n<p>The fix only transitions to DISCONNECTED when the session is not already in DISCONNECTING, preserving the proper L2CAP teardown path.<\/p>\n<p>  Severity: 3.1 | LOW<\/p>\n<p>  Visit the link for more details, such as CVSS details, affected products, timeline, and more&#8230;\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CVE ID :CVE-2026-10654 Published : June 30, 2026, 4:29 p.m. | 1\u00a0hour, 17\u00a0minutes ago Description :A race condition in the Zephyr Bluetooth Classic RFCOMM host stack (subsys\/bluetooth\/host\/classic\/rfcomm.c) mishandles a simultaneous bidirectional session disconnect. When the local device has initiated a session teardown (state BT_RFCOMM_STATE_DISCONNECTING, DISC sent, RTX timer armed) and the connected peer concurrently sends &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-81288","post","type-post","status-publish","format-standard","hentry","category-vulnerability"],"_links":{"self":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/81288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/comments?post=81288"}],"version-history":[{"count":0,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/81288\/revisions"}],"wp:attachment":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/media?parent=81288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/categories?post=81288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/tags?post=81288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}