data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-53358 in the interactive tracker

CVE-2026-53358

Bluetooth: L2CAP: use chan timer to close channels in cleanup_listen()

8.8 EPSS 0.2% AV:A

Published 2026-07-02 (4 months ago) by the Linux kernel CNA. Subsystem net/bluetooth. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-53358 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormvulnerable6.1.190-1No fix published anywhere yet, neither in Debian nor upstream for the series bookworm tracks. Watch the Debian tracker page for this CVE. Advisories for bookworm have historically landed a median of 23 days after publication.
Debian 13trixiefixed6.12.94-1Update the kernel and reboot. Fixed in 6.12.94-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.0.12-1Update the kernel and reboot. Fixed in 7.0.12-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.0.12-1Update the kernel and reboot. Fixed in 7.0.12-1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

l2cap_chan_close() removes the channel from conn->chan_l, which must be done under conn->lock. cleanup_listen() runs under the parent sk_lock, so acquiring conn->lock would invert the established conn->lock -> chan->lock -> sk_lock order. Instead of calling l2cap_chan_close() directly, schedule l2cap_chan_timeout with delay 0 to close the channel asynchronously. The timeout handler already acquires conn->lock and chan->lock in the correct order. The timer is only armed when chan->conn is still set: if it is already NULL, l2cap_conn_del() has already processed this channel (l2cap_chan_del + l2cap_sock_teardown_cb + l2cap_sock_close_cb), so there is nothing left to do. If l2cap_conn_del() races in after the timer is armed, __clear_chan_timer() inside l2cap_chan_del() cancels it; if the timer has already fired, the handler returns harmlessly because chan->conn was cleared.

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

net/bluetooth/l2cap_sock.c

What this is
BLUETOOTH SUBSYSTEMMAINTAINERS section matched on net/bluetooth/ · linux-bluetooth@vger.kernel.org · Supported
Kernel module
bluetooth

Check it on the machine

grep -w CONFIG_BT /boot/config-$(uname -r)

Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.

lsmod | grep -w bluetooth

Prints a line if that module is loaded right now, and nothing if it is not. One that is not loaded can still be loaded later by anything that needs it.

Show whether Debian builds this, per release

Debian builds this, but not on every flavour. At least one release below builds the code on some of its kernel flavours and not on others, so the answer depends on the architecture and flavour installed.

  • bookwormMnot built on amd64/cloud-amd64, arm64/cloud-arm64
  • trixie, forky, sidMnot built on amd64/cloud-amd64, arm64/cloud-arm64, s390x/s390x
M
a module where it is built at all; some flavours do not build it
Build switch
CONFIG_BT

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages

Signals

Published
2026-07-02 (4 months ago)source
CVSS
8.8 high
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hsource recompute it
Attack vector
adjacent network (AV:A)source
EPSS
0.23%, higher than 12.8% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
net/bluetooth

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
3.45.10.2593634cbdc2eb4
3.45.15.210e1c100e2d61b
3.46.1.176deb8493a8fa5
3.46.6.14389dec9204171
3.46.12.9350dfec218808
3.46.18.35859d3ace791e
3.47.0.127555fd885a06
3.47.18c8e620467a7

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:AAttack vector, adjacent network
The vulnerable L2CAP child channels are created and torn down through Bluetooth BR/EDR or LE signaling from a nearby peer, so the remote reachability is adjacent. Bluetooth is not generally Internet-routable, but phones, embedded devices, and kiosks commonly expose this surface to nearby attackers.
AC:LAttack complexity, low
The bug is a race, but the attacker can repeatedly create queued L2CAP children and trigger disconnect/cleanup timing; related reports show the listen/close versus HCI-disconnect race reproducing reliably. Under the required rule, the attacker-controlled repeatable race is scored Low complexity.
PR:NPrivileges required, none
A nearby Bluetooth peer can reach L2CAP connection setup before application authentication, including low-security/SDP-style services, without an OS account on the target. If a local service lifecycle participates in cleanup, that is target state rather than attacker privilege.
UI:NUser interaction, none
No victim user action such as opening a file or accepting a prompt is required once Bluetooth and a listening L2CAP service are present. The attacker can drive the Bluetooth connection and disconnect attempts directly.
S:UScope, unchanged
The corruption occurs inside the Linux kernel Bluetooth stack and impacts the same kernel security authority. There is no VM escape, IOMMU bypass, or cross-authority boundary change indicated.
C:HConfidentiality impact, high
The old path called l2cap_chan_close() without conn->lock, allowing unlocked removal from conn->chan_l and races with l2cap_conn_del() over sock/l2cap_chan lifetime. This is kernel memory corruption/UAF-adjacent behavior, which is defensibly exploitable for high confidentiality impact.
I:HIntegrity impact, high
The race can corrupt kernel list/refcount state around l2cap_chan and sock teardown, giving a plausible route to use-after-free style heap manipulation. Kernel memory corruption is scored as high integrity impact under the provided guidance.
A:HAvailability impact, high
At minimum, racing channel cleanup and connection deletion can cause list corruption, double teardown, UAF, KASAN splats, oops, or panic. A repeatable kernel crash is high availability impact.