CVE-2026-53256
Severity CVSS v4.0:
Pending analysis
Type:
CWE-416
Use After Free
Publication date:
25/06/2026
Last modified:
08/07/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
Bluetooth: RFCOMM: hold listener socket in rfcomm_connect_ind()<br />
<br />
rfcomm_get_sock_by_channel() scans rfcomm_sk_list under the list lock,<br />
but returns the selected listener after dropping that lock without<br />
taking a reference. rfcomm_connect_ind() then locks the listener,<br />
queues a child socket on it, and may notify it after unlocking it.<br />
<br />
The buggy scenario involves two paths, with each column showing the<br />
order within that path:<br />
<br />
rfcomm_connect_ind(): listener close:<br />
1. Find parent in 1. close() enters<br />
rfcomm_get_sock_by_channel() rfcomm_sock_release().<br />
2. Drop rfcomm_sk_list.lock 2. rfcomm_sock_shutdown()<br />
without pinning parent. closes the listener.<br />
3. Call lock_sock(parent) and 3. rfcomm_sock_kill()<br />
bt_accept_enqueue(parent, unlinks and puts parent.<br />
sk, true).<br />
4. Read parent flags and may 4. parent can be freed.<br />
call sk_state_change().<br />
<br />
If close wins the race, parent can be freed before<br />
rfcomm_connect_ind() reaches lock_sock(), bt_accept_enqueue(), or the<br />
deferred-setup callback.<br />
<br />
Take a reference on the listener before leaving rfcomm_sk_list.lock.<br />
After lock_sock() succeeds, recheck that it is still in BT_LISTEN<br />
before queueing a child, cache the deferred-setup bit while the parent<br />
is locked, and drop the reference after the last parent use.<br />
<br />
KASAN reported a slab-use-after-free in lock_sock_nested() from<br />
rfcomm_connect_ind(), with the freeing stack going through<br />
rfcomm_sock_kill() and rfcomm_sock_release().
Impact
Base Score 3.x
8.00
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 2.6.12.1 (including) | 5.10.259 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.210 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.176 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.143 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.12.94 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.18.36 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 (including) | 7.0.13 (excluding) |
| cpe:2.3:o:linux:linux_kernel:2.6.12:-:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:2.6.12:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:2.6.12:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:2.6.12:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:2.6.12:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc3:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/1f73f92f66251065a5f39b09a47cf05ea14d3107
- https://git.kernel.org/stable/c/43c441edacf953b39517a44f5e5e10a93618b226
- https://git.kernel.org/stable/c/6f4462d12133106460d7c046b95aad2491e3fddf
- https://git.kernel.org/stable/c/8802413ce63175fb522a2bd609fb043a3550c720
- https://git.kernel.org/stable/c/a07d741c077d4e34b16458241a94d29039386553
- https://git.kernel.org/stable/c/b0e33e409715c617e2a20f46f99aa5403a14dfda
- https://git.kernel.org/stable/c/de31973ef00e5aa55496f84cf6a44bb157a34e02
- https://git.kernel.org/stable/c/f5ec76bdbeb80f75ad0be204371afffee0f8fac8



