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

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

CVE-2026-72422

ksmbd: fix use-after-free of conn->preauth_info in concurrent SMB2 NEGOTIATE

9.8 EPSS 0.7% AV:N

Published 2026-08-15 (2 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-72422 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 12bookwormfixed6.1.180-1Update the kernel and reboot. Fixed in 6.1.180-1. A running kernel keeps the old code until the machine restarts.
Debian 13trixiefixed6.12.100-1Update the kernel and reboot. Fixed in 6.12.100-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.1.5-1Update the kernel and reboot. Fixed in 7.1.5-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.1.5-1Update the kernel and reboot. Fixed in 7.1.5-1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

conn->preauth_info is shared connection state (struct preauth_integrity_info, kmalloc-96) that is allocated and freed by the SMB2 NEGOTIATE handler and read by the response send path. smb2_handle_negotiate() allocates conn->preauth_info, and on a deassemble_neg_contexts() failure kfrees it and sets it to NULL. Both the allocation and the free/NULL happen under ksmbd_conn_lock(conn) (the connection srv_mutex), which is held across the whole handler body. The response send path smb3_preauth_hash_rsp(), called from the send: block of __handle_ksmbd_work(), reads conn->preauth_info and dereferences conn->preauth_info->Preauth_HashValue (via ksmbd_gen_preauth_integrity_hash()) without taking conn_lock. When a client drives two SMB2 NEGOTIATE requests on the same connection, one worker can free conn->preauth_info on the failing-negotiate path while a concurrent send-path worker is reading it, producing a slab use-after-free read (KASAN-confirmed). The send-path read tested conn->preauth_info for NULL but raced with the free that occurs between the NULL check and the dereference, so the NULL guard alone does not close the window. Serialize the NEGOTIATE-branch read in smb3_preauth_hash_rsp() under ksmbd_conn_lock(conn) and re-check conn->preauth_info inside the lock. Because the negotiate handler holds conn_lock across its kfree + NULL assignment, a reader that also takes conn_lock either runs fully before the allocation or fully after the NULL store, and can never observe the freed-but-not-yet-NULLed pointer. ksmbd_gen_preauth_integrity_hash() takes no locks itself (it only computes a SHA-512 over the buffer), so no lock-ordering inversion is introduced, and conn_lock is a sleepable mutex which is safe on this send path (it already performs network I/O).

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 ksmbd

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 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-08-15 (2 months ago)source
CVSS
9.8 critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hsource recompute it
Attack vector
network (AV:N)source
EPSS
0.72%, higher than 52.9% 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

IntroducedFixed inCommit
5.15.615.15.212c7bef84740d1
6.06.1.178d0a469122e7b
6.06.6.1457470511d085a
6.06.12.9716a1ecf39c21
6.06.18.4077bb0bbfcc4e
6.07.1.51c89da3baa2b
6.07.20c054227479e
5.18.1800
5.19.200

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
The bug is in ksmbd's SMB2 NEGOTIATE handler reachable by any remote client over TCP port 445 without local access; exploitation requires only crafted SMB 3.1.1 negotiate packets on an established network connection.
AC:LAttack complexity, low
The attacker controls both sides of the race by pipelining two SMB2 NEGOTIATE requests on the same connection, with one crafted to fail deassemble_neg_contexts() and free preauth_info while the other is in the response send path; KASAN-confirmed UAF with no uncontrollable timing.
PR:NPrivileges required, none
SMB2 NEGOTIATE is processed before any authentication or session establishment; smb2_check_user_session explicitly exempts NEGOTIATE from session validation, so an unauthenticated remote attacker can reach the vulnerable code path.
UI:NUser interaction, none
Exploitation requires only network packets sent by the attacker to an exposed ksmbd instance; no victim user action such as mounting a share or opening a file is needed.
S:UScope, unchanged
Successful exploitation compromises kernel memory on the SMB server host itself; this is standard in-kernel memory corruption without crossing a VM, container, or IOMMU security boundary to a separate authority.
C:HConfidentiality impact, high
KASAN-confirmed slab use-after-free read of conn->preauth_info (kmalloc-96) via Preauth_HashValue and Preauth_HashId dereference; UAF on attacker-influenced freed heap memory enables arbitrary kernel memory disclosure through heap grooming.
I:HIntegrity impact, high
The UAF corrupts kernel heap state on a network-facing pre-auth path; freed preauth_integrity_info objects can be reallocated via heap spraying to obtain arbitrary write or control-flow hijack primitives beyond the immediate hash-buffer access.
A:HAvailability impact, high
Concurrent UAF read of freed conn->preauth_info during smb3_preauth_hash_rsp() causes kernel oops or panic (KASAN-confirmed); even without full exploitation the race reliably triggers high-severity denial of service on the server.