Look up another CVE · open CVE-2026-53198 in the interactive tracker
CVE-2026-53198
ksmbd: fix use-after-free of a deferred file_lock on double SMB2_CANCEL
Published 2026-06-25 (4 months ago) by the Linux kernel CNA. Subsystem fs/smb. Debian urgency: not yet assigned.
What to do, per Debian release
Debian's own status for CVE-2026-53198 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
| Release | Status | Version | What this means |
|---|---|---|---|
| Debian 12bookworm | fixedDLA-4665-1 · 2026-07-03 · text | 6.1.176-1 | Update the kernel and reboot. DLA-4665-1 shipped the fix on 2026-07-03, in 6.1.176-1. A running kernel keeps the old code until the machine restarts. |
| Debian 13trixie | fixed | 6.12.94-1 | Update the kernel and reboot. Fixed in 6.12.94-1. A running kernel keeps the old code until the machine restarts. |
| Debian 14forky | fixed | 7.0.13-1 | Update the kernel and reboot. Fixed in 7.0.13-1. A running kernel keeps the old code until the machine restarts. |
| Debian unstablesid | fixed | 7.0.13-1 | Update the kernel and reboot. Fixed in 7.0.13-1. A running kernel keeps the old code until the machine restarts. |
The vulnerability
What the bug is
A deferred byte-range lock (an SMB2_LOCK that blocks) registers an async work on conn->async_requests via setup_async_work(), with cancel_fn = smb2_remove_blocked_lock and cancel_argv[0] pointing at the struct file_lock. When the request is cancelled, the worker frees the file_lock with locks_free_lock() and takes the cancelled early-exit, which "goto out"s and never reaches release_async_work() -- the only site that unlinks the work from conn->async_requests and clears cancel_fn/cancel_argv. The work therefore stays matchable on async_requests with a live cancel_fn pointing at the freed file_lock, until connection teardown finally runs release_async_work(). smb2_cancel() fires cancel_fn unconditionally with no state guard, so a second SMB2_CANCEL for the same AsyncId, arriving in that window, re-runs smb2_remove_blocked_lock() on the freed file_lock -- a slab use-after-free: BUG: KASAN: slab-use-after-free in __locks_delete_block __locks_delete_block locks_delete_block ksmbd_vfs_posix_lock_unblock smb2_remove_blocked_lock smb2_cancel <- 2nd SMB2_CANCEL fires cancel_fn handle_ksmbd_work Allocated by ...: locks_alloc_lock <- smb2_lock Freed by ...: locks_free_lock <- smb2_lock (cancelled branch) ... cache file_lock_cache of size 192 Reproduced on mainline with KASAN by an authenticated SMB client. Skip a work whose state is already KSMBD_WORK_CANCELLED so its cancel callback cannot be fired a second time.
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.
fs/smb/server/smb2pdu.c
- What this is
- KERNEL SMB3 SERVER (KSMBD)MAINTAINERS section matched on fs/smb/server/ · linux-cifs@vger.kernel.org · Maintained
- Kernel module
- ksmbd
Check it on the machine
grep -wE 'CONFIG_SMBFS|CONFIG_SMB_SERVER' /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 ksmbdPrints 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 as a loadable module. Every release below compiles it as a module on every flavour, so whether the code is in the running kernel depends on whether that module is loaded.
- bookworm, trixie, forky, sidm
- m
- a loadable module on every flavour - check lsmod, can be blacklisted
- Build switches
- CONFIG_SMBFS, CONFIG_SMB_SERVER
- Reads as
- all on means the file is compiled; any one off means it is not.
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-06-25 (4 months ago)source
- CVSS
- 8.8 high
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:Hsource recompute it - Attack vector
- network (AV:N)source
- EPSS
- 0.45%, higher than 37.3% of all CVEssource
- CISA KEV
- not listedthe KEV catalogue
- Debian urgency
- not yet assignedsource
- Subsystem
- fs/smb
Upstream fixes
The versions the CNA records as introducing and fixing this, and the commit for each. source
| Introduced | Fixed in | Commit |
|---|---|---|
| 5.15 | 6.1.176 | b7063c7426ea |
| 5.15 | 6.6.143 | 0da2e073f9cb |
| 5.15 | 6.12.94 | 89ae9df09d2c |
| 5.15 | 6.18.36 | 14d2eee0193a |
| 5.15 | 7.0.13 | 2b2eda2821cf |
| 5.15 | 7.1 | f580d27e8928 |
Debian advisories
| Advisory | Date | Shipped to | Debian |
|---|---|---|---|
| DLA-4671-1 | 2026-07-05 | bullseye 6.1.176-1~deb11u1 | tracker |
| DLA-4665-1 | 2026-07-03 | bookworm 6.1.176-1 | tracker |
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:NAttack vector, network
- ksmbd is an in-kernel SMB server reachable over the network via SMB2/SMB3 requests, typically on TCP port 445. The vulnerable path is driven by SMB2_LOCK and repeated SMB2_CANCEL messages from a remote SMB client.
- AC:LAttack complexity, low
- The attacker can create the deferred byte-range lock by holding a conflicting lock and then sending repeated SMB2_CANCEL requests for the same AsyncId. The race/window is attacker-driven and repeatable, so there are no meaningful conditions outside attacker control.
- PR:LPrivileges required, low
- The SMB2_LOCK path requires a valid SMB2 session, tree connection, and open file handle, and the fix commit states it was reproduced by an authenticated SMB client. No kernel or administrative privilege is required, only ordinary SMB access.
- UI:NUser interaction, none
- No victim user action is required after the attacker has SMB access. The attacker sends the lock and cancel requests directly to the server.
- S:UScope, unchanged
- The vulnerability corrupts memory within the same kernel security authority that processes the SMB request. It does not cross a separate sandbox, hypervisor, or device security boundary.
- C:HConfidentiality impact, high
- This is a slab use-after-free of struct file_lock from file_lock_cache, and the stale callback reuses the freed object in generic file-locking code. Under the required high-severity assumption for UAFs, this can support kernel memory disclosure.
- I:HIntegrity impact, high
- The stale file_lock is passed into list and waitqueue manipulation paths such as locks_delete_block and locks_wake_up, giving a plausible kernel memory corruption primitive after heap reuse. Under the required high-severity assumption for UAFs, integrity impact is high.
- A:HAvailability impact, high
- The commit includes a KASAN slab-use-after-free report in the ksmbd worker path, and re-triggering the bug can crash or destabilize the kernel. Kernel oops/panic availability impact is high.