CVE-2026-99009: Bluetooth: RFCOMM: connect the session socket without rfcomm_mutex
Noroxi assessment
Priority: Monitor (action score 0/100)
- The sources we track (CISA KEV, Exploit-DB, Metasploit, Nuclei, GitHub) show no public exploit code or exploitation in the wild.
- Probability of exploitation in the next 30 days: 0.16% (FIRST EPSS).
- Fixed version: Linux Linux 4dc3d5a004b8fd59f3c905631dbb18cb601b1b41, 5.11, 5.16.
- Mentioned 1 time in Turkish national cyber security advisories (siberguvenlik.gov.tr).
Low priority for now. Upgrade to Linux Linux 4dc3d5a004b8fd59f3c905631dbb18cb601b1b41, 5.11, 5.16 or later.
Generated automatically from the record's data: CVSS (NVD and CNA), CISA KEV and SSVC, FIRST EPSS, exploit sources, fixed versions. How we calculate it
Primary sources: NVD · CVE.org · FIRST EPSS
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: RFCOMM: connect the session socket without rfcomm_mutex An RFCOMM connect() issued while a BR/EDR link is being authenticated makes lockdep report a circular dependency, and the reported cycle is a real AB/BA between rfcomm_mutex and hdev->lock. rfcomm_security_cfm() is called from the HCI event path, which already holds hdev->lock: hci_rx_work() hci_event_packet() hci_cc_read_enc_key_size() [hdev->lock] hci_encrypt_cfm() [hci_cb_list_lock] rfcomm_security_cfm() [rfcomm_mutex] while an RFCOMM connect() from userspace takes the same two locks the other way round: rfcomm_sock_connect() rfcomm_dlc_open() [rfcomm_mutex] __rfcomm_dlc_open() rfcomm_session_create() kernel_connect() l2cap_sock_connect() l2cap_chan_connect() [hdev->lock] WARNING: possible circular locking dependency detected kworker/u131:1/1128 is trying to acquire lock: rfcomm_mutex, at: rfcomm_security_cfm+0x31/0x3e0 [rfcomm] but task is already holding lock: hci_cb_list_lock, at: hci_cc_read_enc_key_size+0x1d2/0xcc0 Chain exists of: rfcomm_mutex --> &hdev->lock --> hci_cb_list_lock hci_auth_complete_evt() and hci_encrypt_change_evt() reach the callback the same way. Both orders have to be seen in the same boot, which is why a BR/EDR connection alone is not enough to show it: a session set up by the remote side is created by rfcomm_accept_connection() in krfcommd, which calls kernel_accept() and never takes hdev->lock under rfcomm_mutex. Connecting a device that authenticates and encrypts the link and then calling connect() on an RFCOMM socket towards any address - the connect does not have to succeed, the order is recorded before the page timeout - reports it every time. Only the session socket has to be connected with the lock held, and it does not: nothing else can see the socket before it is put on the session list. So connect it first and take rfcomm_mutex afterwards, which removes the rfcomm_mutex -> hdev->lock order for good, rather than keeping the HCI event path out of rfcomm_mutex. rfcomm_session_create() becomes rfcomm_session_connect(), which returns the connected socket without touching the session list, and rfcomm_dlc_open() adds the session once it holds the lock again. If another opener added a session for the same pair while this socket was connecting, that session is used and this socket is dropped. __rfcomm_dlc_open() now takes the session it should use, and its state check runs after the lock is re-acquired, so a DLC that was opened or closed in the meantime is still handled. Over an existing ACL link the connection can complete before the session reaches the list, and the wakeup from the socket callback is then lost, so krfcommd is woken once the session is visible. Connecting without the lock opens a window in which the socket can be closed. The DLC is not on a session yet, so rfcomm_dlc_close() finds nothing to do and returns without touching it, and rfcomm_dlc_open() would then attach a DLC whose owner is gone. rfcomm_dlc_close() now marks such a DLC with RFCOMM_CLOSED, and rfcomm_dlc_open() checks the mark once it holds rfcomm_mutex again and drops the socket instead of attaching the DLC. The mark is cleared when an open starts, so a DLC that is reused is not affected. This covers both callers of rfcomm_dlc_open(), the socket and the tty layer.
- Published
- Oct 23, 2026
- Updated
- Oct 23, 2026
- EPSS
- 0.1% · 6th percentile
- CWE
- —
Report tools
Action score
0
Monitor
Low priority for now.
- CVSS
- 0 / 40 · —
- CISA KEV
- 0 / 30 · Not listed
- EPSS
- 0 / 30 · 0.1%
Get told when this record changes
- Not in KEV: no record of exploitation in the wild
- No public exploit code on record
- A fix has been released
If any of these changes, we'll tell you in the daily email digest.
Running WordPress? Scan your site free with WP Lens
Noroxi analysis
What does it mean in your environment?
The assessment above is generated automatically from the record's data; it doesn't know your environment. Our team verifies on your systems whether this vulnerability is actually exploitable and which mitigation is enough.
We use this product, ask for helpAffected systems
Is your version affected?
Pick the product and type the version you run. It's compared with this record's version ranges in your browser; the version isn't sent anywhere.
—
Versions reported by the vendor
Affected version ranges reported by the assigning authority (Linux). Independent of NVD's CPE analysis and usually ahead of it.
Linux Linux
- 62ce8b33eb238cf18c15207332fbdc26d858f592, 3873f3449701b3dc98cba577923be6493598e7a1, 7ded3264106418c6456ccceaafd9fda596ce12c3affected
- 82425b14f0fb22e46cfddc56d6465570f5ed0ce6 and later · before 4dc3d5a004b8fd59f3c905631dbb18cb601b1b41affected · git
- 1b7841ffad08e911e8c4b9470f3fa08423568940 and later · before d2206e8c78be69d21d4f5343c3e99fbaeef41cbbaffected · git
- 946d76db77ee5f922968ce558629ae47b381e3fc and later · before cc7732b8549ecb6f02457edeb8db1f6d255e381caffected · git
- fbf7961964a6e93360179f64712320ae9a1e9577 and later · before f492de11b325446b0b11bc2eb86e1f546eaa61b6affected · git
- 759c185d0bbdb131357408f50b8735e04ed3caff and later · before ac022970e9fb0a5f7e7d1f6c8e104c1ed924dd1caffected · git
- 5.10.270 and later · before 5.11affected · semver
- 5.15.221 and later · before 5.16affected · semver
- 6.1.188 and later · before 6.2affected · semver
- 6.6.157 and later · before 6.6.160affected · semver
Package-level exposure
OSV and GitHub Advisory data: ecosystem, package and range. SBOM matching uses this table.
| Ecosystem | Package | Affected range | Fix |
|---|---|---|---|
| Debian:12 | linux | from 0 | — |
| Debian:14 | linux | before 7.2.11-1 | 7.2.11-1 |
Same product
linux: all recordsOther highest-scoring records for the same primary product.
- CVE-2026-74705udp: fix potential use-after-free in tunnel segmentation40Plan
- CVE-2026-74612veth: fix skb length accounting after XDP frag adjustment40Plan
- CVE-2026-74475vxlan: use neigh_ha_snapshot() in route_shortcircuit()40Plan
Published before and after this one in the same product
- ← EarlierCVE-2026-99007Oct 23, 2026 · drm/fb-helper: defer setup when fbdev_probe() fails, not just on -EAGAIN0Monitor
- ← EarlierCVE-2026-99008Oct 23, 2026 · Bluetooth: RFCOMM: Fix NULL tty_dev dereference in rfcomm_dev_shutdown0Monitor
- Later →CVE-2026-99010Oct 23, 2026 · Bluetooth: RFCOMM: free the skb when the DLC has no owner0Monitor
Remediation
Which version to upgrade to
Fix versions compiled from the vendor, package registries and Microsoft. Verify the vendor's note before upgrading.
| Product / package | Fixed version | Source |
|---|---|---|
| Linux Linux | 4dc3d5a004b8fd59f3c905631dbb18cb601b1b41 | Vendor (CNA) |
| Linux Linux | 5.11 | Vendor (CNA) |
| Linux Linux | 5.16 | Vendor (CNA) |
| Linux Linux | 6.12.114 | Vendor (CNA) |
| Linux Linux | 6.18.58 | Vendor (CNA) |
| Linux Linux | 6.2 | Vendor (CNA) |
| Linux Linux | 6.6.160 | Vendor (CNA) |
| Linux Linux | 7.2.11 | Vendor (CNA) |
| Linux Linux | ac022970e9fb0a5f7e7d1f6c8e104c1ed924dd1c | Vendor (CNA) |
| Linux Linux | cc7732b8549ecb6f02457edeb8db1f6d255e381c | Vendor (CNA) |
| Linux Linux | d2206e8c78be69d21d4f5343c3e99fbaeef41cbb | Vendor (CNA) |
| Linux Linux | f492de11b325446b0b11bc2eb86e1f546eaa61b6 | Vendor (CNA) |
| debian:linux | 7.2.11-1 · Debian:14 | Package registry (OSV) |
Exploit status
No known public exploit
No public exploit has been observed yet. That doesn't mean you're safe, only that the bar is a little higher.
Research context
For pentesters and researchers: attack profile, score disagreement, timeline, patch commits, credits, variant and chain candidates, bug bounty scope. All derived from existing data; no exploit code.
Timeline
From publication to today: proof of concept, Metasploit module, CISA KEV and fix record. Dates are as reported by the sources.
- Published
- Fix recordedsame day
- TodayOct 28, 2026+5 d
FIRST EPSS daily score; only changes of 0.01 or more are recorded (step chart).
Patch and commit links
Commit, PR and diff links among the references. A starting point for patch-diffing and variant hunting; fixes, not exploits.
No commit or PR link among the references.
Credits
All researchersFinders, reporters and analysts named in the CNA record. Click a name for that researcher’s other records.
No credits in the CNA record.
Variant candidates
Same product, same weakness class, within 18 months. If the patch missed the root cause, the sibling bug is here.
No nightly-computed relations.
Chain candidates
An authentication bypass and a privilege-requiring bug in the same product, published close together: combined they may become an unauthenticated path.
—
Bug bounty scope
No known public program.
Source: bounty-targets-data (public HackerOne, Bugcrowd, Intigriti, YesWeHack listings).
National notice (Türkiye Cybersecurity Directorate / USOM)
Official security notices citing this record; remediation advice is on the agency's page.
- TR-26-1390 · Oct 26, 2026(Linux Kernel Güvenlik Bildirimi)
Technical details
No CVSS vector for this record, so attack conditions can't be derived.
Weakness class (CWE)
—
Attack context
MITRE CAPEC attack patterns and ATT&CK techniques for this weakness class (CWE). A starting point for detection rules and threat hunting.
MITRE has no CAPEC/ATT&CK mapping for this CWE.
Change log
- Exploit maturity— → none
- Fix✗ → ✓
For records you follow, these changes also arrive as notifications. →
References
Show all references (4 more)Show less
Vendor advisories and official records. Exploit/PoC links are deliberately left out.