KernelScan.io

HIGH Introduced in 6.0

bluetooth ISOListener UAF

CVE-2026-80914

CVSS 8.8 / 10.0 NVD

CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

KernelScan AI7.1HIGH

01

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: ISO: fix use-after-free of listener socket in iso_conn_ready iso_conn_ready() looks up the BIS listener socket with iso_get_sock(), which takes a reference, and then, without re-checking its state, creates a child socket from it: parent = iso_get_sock(hdev, ...); if (!parent) return; lock_sock(parent); sk = iso_sock_alloc(sock_net(parent), NULL, BTPROTO_ISO, ...); ... iso_chan_add(conn, sk, parent); ... release_sock(parent); sock_put(parent); If the listener socket is closed concurrently, between iso_get_sock() and lock_sock(), the reference taken by iso_get_sock() may be the last one: the close path drops the link-list reference, and once iso_conn_ready() drops its own reference at the end of the function the socket is freed. The child socket, however, is already linked to the freed parent, and a later disconnect of the child runs iso_chan_del() -> bt_accept_unlink(), which dereferences the dangling parent pointer into the freed accept queue (a use-after-free). The same dangling pointer is also dereferenced through parent->***() in iso_chan_del(). Fix it the same way the connected (non-BIS) path was fixed in commit 0d255e63fcf3 ("Bluetooth: ISO: hold sk properly in iso_conn_ready"): after taking the socket lock, re-check that the parent is still a listening, alive socket, and bail out otherwise.

02

Engine v0.6.0

Risk summary

A user who can manipulate Bluetooth ISO sockets on the target can exploit a race against an incoming connection from a nearby Bluetooth device to trigger a use-after-free in the kernel. Successful exploitation may lead to arbitrary code execution or a system crash. Systems without Bluetooth enabled or that restrict Bluetooth socket access are not affected.

Affectednet/bluetooth/iso.c (Bluetooth ISO)

Vulnerability analysis

When a Bluetooth ISO broadcast connection arrives, the kernel identifies the listening socket but does not confirm it is still active before creating a child socket from it. If the listener is closed by another thread in that brief window, the listener memory is freed while the child still holds a pointer back to it. Later, when the child disconnects, the kernel uses that dangling pointer and accesses freed memory, causing corruption. The fix adds a check to verify the listener is still open and listening before creating the child; if not, the setup is aborted. A user who can open and close Bluetooth ISO sockets on the target, and who can arrange for a nearby Bluetooth device to connect at the right moment, can trigger this flaw.

03

BranchIntroducedFixed inPatch commit
6.126.06.12.1092387cd06a2c0
6.186.06.18.5049fd7116f76b
7.26.07.2.403288b7447c9
mainline6.07.3-rc1560bef609fa5