PT-2026-121990
CVE-2026-99013
·
Published
2026-10-23
·
Updated
2026-10-23
Description by
CVSS 3.1
7.8
HighMetricsAV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: ISO: Reject concurrent BIS listener setup
iso sock listen() drops the socket lock before calling iso listen bis()
to preserve the hdev->lock ordering. Two concurrent listen() calls on
the same broadcast socket can therefore both observe BT BOUND. Caller
A can attach connA and release the locks, then caller B can acquire
them and attach connB before A publishes BT LISTEN.
iso chan add() checks whether connB already has a socket, but not
whether the socket already has a connection. The second attachment
overwrites iso pi(sk)->conn, leaking the connA reference and leaving
connA->sk intact. Socket teardown follows connB, so later events on
connA can cause a stale socket access.
Recheck BT BOUND and require iso pi(sk)->conn to be NULL after taking
both the HCI device and socket locks in iso listen bis(). The connection
check also covers the interval between attachment and publication of
BT LISTEN. Reject a competing setup with -EBADFD through the existing
unlock path before allocating another connection.
A recorded KASAN report from an instrumented kernel shows:
BUG: KASAN: slab-use-after-free in iso sock hold+0x119/0x1f0
Call Trace:
iso sock hold+0x119/0x1f0
iso conn del+0xe4/0x270
hci disconn complete evt+0x351/0x8c0
hci event packet+0x71b/0xb20
hci rx work+0x293/0x730
Allocated by task 93:
sk prot alloc+0x113/0x220
sk alloc+0x2b/0x6d0
bt sock alloc+0x29/0x370
iso sock alloc.constprop.0+0x19/0x300
iso sock create+0x94/0x100
Freed by task 93:
kfree+0x121/0x3c0
sk destruct+0x42b/0x540
iso sock release+0x29d/0x340
sock release+0xa1/0x260
sock close+0x10/0x20
Found an issue in the description? Have something to add? Feel free to write us 👾