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

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

CVE-2026-89630

smb: client: restore the data_offset bound in is_valid_oplock_break()

9.1 EPSS 0.5% AV:N

Published 2026-09-11 (37 days ago) by the Linux kernel CNA. Subsystem fs/smb. Debian urgency: unimportant.

What to do, per Debian release

Debian's own status for CVE-2026-89630 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 12bookwormnot affected6.1.190-1Nothing to do. bookworm never shipped the vulnerable code.
Debian 13trixienot affected6.12.113-1Nothing to do. trixie never shipped the vulnerable code.
Debian 14forkyfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

Commit 83bfbd0bb902 ("cifs: Remove the RFC1002 header from smb_hdr") changed the quantity this bound is measured against. It used to be srv->total_read minus the 4-byte RFC1002 preamble that total_read then included, so it was the SMB message length. The same commit stopped counting the preamble, and the mechanical substitution to srv->total_read - srv->pdu_size left an expression that is identically zero: standard_receive3() reads MID_HEADER_SIZE() bytes and then exactly pdu_length - MID_HEADER_SIZE() more, adding both to total_read. len is therefore 0, the subtraction below it wraps, and no __u32 DataOffset can exceed the result, so the check from commit 097f5863b1a0 ("cifs: read overflow in is_valid_oplock_break()") no longer rejects anything. Use total_read, which is now the message length on its own.

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/client/smb1misc.c

What this is
COMMON INTERNET FILE SYSTEM CLIENT (CIFS and SMB3)MAINTAINERS section matched on fs/smb/client/ · linux-cifs@vger.kernel.org · Supported
Kernel module
cifs

Check it on the machine

grep -wE 'CONFIG_CIFS|CONFIG_CIFS_ALLOW_INSECURE_LEGACY|CONFIG_SMBFS' /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 cifs

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 with an answer 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. The build rule could not be established for 2 releases, so nothing is claimed about those.

  • bookworm, trixie?
  • forky, sidm
?
not established - no Makefile entry for the affected file
m
a loadable module on every flavour - check lsmod, can be blacklisted

Where a release above reads "not established", no build rule for the affected file was found in that release's kernel tree. That is a gap in this lookup, not a finding that the code is absent.

Build switches
CONFIG_CIFS, CONFIG_CIFS_ALLOW_INSECURE_LEGACY, CONFIG_SMBFS
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-09-11 (37 days ago)source
CVSS
9.1 critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:Hsource recompute it
Attack vector
network (AV:N)source
EPSS
0.54%, higher than 44.1% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
unimportantsource
Subsystem
fs/smb

Upstream fixes

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

IntroducedFixed inCommit
6.197.2.45b16a1967a01
6.197.3ba22f575de9d
6.18.5600

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 flaw is in the in-kernel SMB1 client demultiplex path: a remote peer sends an unsolicited SMB_COM_NT_TRANSACT response over TCP/445 and cifs_demultiplex_thread() calls is_valid_oplock_break() on unmatched frames, so a malicious or compromised SMB server (or MITM) reaches it via network protocol data.
AC:LAttack complexity, low
The attacker fully controls Command, Flags, ByteCount, and DataOffset in a single unsolicited frame; the broken bound wraps so any DataOffset is accepted and the resulting heap over-read is deterministic, with no race or condition the attacker cannot influence once the client is on the SMB1 connection.
PR:NPrivileges required, none
A matching MID, session setup, or tree connect is not required: after negotiate, an unmatched NT_TRANSACT+RESPONSE frame is treated as an oplock/dnotify break before authentication, so the malicious server needs no credentials or privileges on the client host.
UI:NUser interaction, none
On a persistent SMB1 mount (cifsroot, automount, or an already-mounted legacy NAS share) the cifsd thread processes unsolicited frames after the existing connection or reconnect, so no additional victim action is required at attack time.
S:UScope, unchanged
The out-of-bounds/use-after-free read occurs in kernel heap used by the CIFS client on the same host kernel security authority and does not cross a VM, IOMMU, or sandbox boundary.
C:HConfidentiality impact, high
Attacker-controlled DataOffset displaces file_notify_information into adjacent or freed cifs_small_rq slab objects (KASAN use-after-free read), and printing FileName with %s can walk unbounded kernel memory, so the disclosure is not limited to a few bounded bytes.
I:NIntegrity impact, none
The displaced pointer is only read (Action and FileName for a debug print); the bug does not write through that pointer or otherwise provide a kernel memory-modification or control-flow primitive.
A:HAvailability impact, high
The KASAN-confirmed slab use-after-free and unmapped over-read run in the cifsd demultiplex thread and can oops or panic the kernel, and a malicious peer can repeat the unsolicited frame to retrigger the crash.