ZeroHour

CVE-2026-89630

mass

Out-of-bounds read in Linux kernel CIFS/SMB client oplock break parsing

CVSS 3.1
9.1 critical
EPSS
Published
()
Modified
AI analysis

A regression in the Linux kernel's SMB client nullified a critical bounds check in is_valid_oplock_break(), the function that validates asynchronous oplock-break messages received from an SMB server. Commit 83bfbd0bb902 ("cifs: Remove the RFC1002 header from smb_hdr") changed how the message length is computed, leaving the check's length expression identically zero and causing an unsigned underflow, so that no DataOffset value is ever rejected — silently re-opening the read overflow originally fixed by commit 097f5863b1a0. A malicious or compromised SMB server, or an attacker who can inject unauthenticated SMB traffic, can send a crafted oplock break that drives the client to read kernel memory out of bounds, potentially leaking kernel memory contents or crashing the machine. Any system running a kernel that contains the regressing commit and mounts CIFS/SMB shares is affected; exploitation requires connecting to an attacker-influenced server rather than a network listener. No public proof of concept is known and the flaw is not on the CISA KEV list, but the bug is a straightforward memory-safety regression in a common code path that any hostile server can trigger.

What to do: Upgrade to a kernel that includes the fix commit "smb: client: restore the data_offset bound in is_valid_oplock_break()" as soon as your distribution ships it. In the interim, only mount CIFS/SMB shares from trusted servers and enforce SMB3 with signing and encryption (e.g., vers=3.x and seal/ seal mount options) to prevent injected or forged oplock-break messages. Check logs for kernel oopses or panics in the CIFS demultiplex path as a possible indicator of probing.

Affected
Linux kernel (CIFS/SMB client, is_valid_oplock_break)
Estimated exposure
masshundreds of millions of devices ship affected kernels, with a practically exploitable subset of millions (systems performing CIFS/SMB mounts) — The CIFS client is built into mainstream Linux distributions running on vast numbers of desktops, servers, and appliances, but the vulnerable code path only executes on systems that establish SMB sessions to an attacker-controlled or…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: smb: client: restore the data_offset bound in is_valid_oplock_break() 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.

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

In the news

No ingested article mentions this CVE yet.