Skip to main content

Linux ksmbd CVE-2026-31706

| EUVDEUVD-2026-26515 HIGH
2026-05-01 416baaa9-dc9f-4396-8d5f-8c081fb06d67
8.8
CVSS 3.1 · Vendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate to ksmbd share
  2. Delivery
    Create parent directory via SMB2
  3. Exploit
    Tamper security.NTACL xattr on backing filesystem
  4. Execution
    Trigger SMB2 CREATE of child object
  5. Persist
    smb_inherit_dacl() allocates oversized uninitialized heap buffer
  6. Impact
    Leak kernel heap contents or achieve memory corruption

Vulnerability Assessment

Exploitation Conditions

Requires authenticated SMB access (PR:L) to a ksmbd-served share explicitly configured with 'vfs objects = acl_xattr' in smb.conf-not enabled by default. Attacker must also possess the ability to modify extended attributes on the backing filesystem, achieved through either: (a) concurrent local filesystem access (e.g., shell account on the same server, container escape, or compromised backup process with filesystem write permissions), or (b) exploitation of a separate race condition in ksmbd's xattr write path allowing SMB-initiated xattr corruption. The vulnerable code path is only reachable during SMB2 CREATE operations targeting child objects under a directory with a corrupted NTACL xattr, and only when the parent directory's posix_acl_hash matches expected values (to pass ksmbd_vfs_get_sd_xattr() validation). Exploitation is limited to systems running Linux kernel 5.15+ with ksmbd module loaded and configured. Not exploitable against default ksmbd configurations lacking ACL xattr support, nor against systems using only userspace Samba. The information disclosure component (uninitialized heap read) is achievable with just the above conditions; code execution requires additional heap manipulation techniques specific to kernel heap allocator state.

Impact

Real-world risk is moderate and highly context-dependent. CVSS 8.8 (High) reflects worst-case impact-network-accessible, low-complexity exploitation yielding high confidentiality/integrity/availability impact-but this assumes the attacker can modify backing filesystem xattrs, which is NOT a default capability for SMB clients. The CVSS vector AV:N/AC:L/PR:L indicates network vector with low complexity and low privileges, yet the description reveals critical prerequisites: the attacker needs either offline filesystem access to corrupt xattrs OR a race condition in ksmbd's xattr handling paths. EPSS 5th percentile (0.02%) confirms no observed widespread exploitation, consistent with the non-trivial attack prerequisites. SSVC assessment: Exploitation status is 'proof-of-concept' per the changelog's UML+KASAN reproduction; automatable is 'no' due to filesystem access requirement; technical impact is 'total' (potential code execution). Priority depends on deployment: high-risk for multi-tenant environments where ksmbd serves untrusted users who may also have local filesystem access; low-risk for isolated file servers with readonly backing stores. The uninitialized heap allocation creates real information disclosure risk even without achieving code execution. Patches available across all supported stable branches significantly reduce urgency-this is a 'patch now during normal maintenance' rather than 'emergency response' scenario for most deployments.

Exploit ScenarioDerived

An attacker with valid low-privilege SMB credentials authenticates to a ksmbd-served file share configured with Windows ACL inheritance (vfs objects = acl_xattr). They create a parent directory via legitimate SMB2 CREATE request, causing ksmbd to write a valid security.NTACL xattr to the backing ext4/xfs filesystem. The attacker then leverages either (1) a secondary shell account on the same server, or (2) a race condition in ksmbd's xattr handling to directly modify the security.NTACL xattr on the backing filesystem, setting num_aces to 0xFFFF while preserving the posix_acl_hash to bypass integrity checks. When the attacker subsequently creates a child file/directory under that parent via SMB2 CREATE, ksmbd's smb_inherit_dacl() reads the corrupted num_aces value, allocates an 8 MB uninitialized heap buffer, populates only a small portion based on actual ACE data present, then continues processing. The attacker can potentially read uninitialized kernel heap contents via SMB responses (information disclosure) or, with additional exploitation primitives, leverage the allocation size mismatch for memory corruption leading to code execution.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – May 03, 2026

Buffer overflow in Linux kernel's ksmbd SMB server allows authenticated remote attackers to trigger ~8 MB heap allocation from manipulated NTACL xattr values, potentially leading to memory exhaustion, information disclosure via uninitialized heap memory, or code execution. Exploitation requires low-privilege SMB authentication plus ability to corrupt backing filesystem metadata (offline xattr tampering or race condition). EPSS score of 0.02% indicates minimal observed exploitation activity. Vendor patches available across multiple stable kernel branches (6.12.84, 6.18.25, 7.0.2, 7.1-rc1).

RemediationAI

Upgrade to patched kernel versions: 6.12.84+ for 6.12.x series, 6.18.25+ for 6.18.x series, 7.0.2+ for 7.0.x series, or 7.1-rc1+ for mainline tracking. Verify patch application by checking for commit IDs 59c32abaaec9, 063a7409b0de, 3e5360b422dd, or 3e4e2ea2a781 in your kernel git log. If immediate patching is not feasible, implement these compensating controls with noted trade-offs: (1) Disable ksmbd module entirely if SMB server functionality is not required-eliminates attack surface but breaks SMB file sharing; verify no production workflows depend on ksmbd before disabling. (2) Remove 'vfs objects = acl_xattr' from ksmbd share configurations-prevents inheritance code path from executing but disables Windows ACL support, falling back to POSIX permissions only; acceptable for shares serving Linux/Unix clients, breaks Windows ACL expectations. (3) Deploy filesystem integrity monitoring (e.g., AIDE, Tripwire) to detect offline xattr tampering on ksmbd backing directories-provides detection not prevention; requires investigation workflow for alerts. (4) Restrict filesystem-level access to ksmbd backing directories using MAC policies (SELinux, AppArmor) to prevent authenticated SMB users from gaining local shell access that could enable xattr manipulation-reduces but does not eliminate race-condition risk; requires careful policy tuning to avoid breaking legitimate admin access. Note that blocking SMB ports (445/tcp, 139/tcp) does NOT mitigate this issue as exploitation occurs through legitimate SMB protocol usage post-authentication.

Affected VersionsENISA

Linux e2f34481b24db2fd634b5edb0a5bd0e4d38cc6e9 <59c32abaaec9cdd6164811c7e864e72f7554b82d
Linux e2f34481b24db2fd634b5edb0a5bd0e4d38cc6e9 <063a7409b0de46d7c770b65bb0338e6fdb3b1f0a
Linux e2f34481b24db2fd634b5edb0a5bd0e4d38cc6e9 <3e5360b422dd741cb315654a191fa73869a37414
Linux 5.15
Linux e2f34481b24db2fd634b5edb0a5bd0e4d38cc6e9 <3e4e2ea2a781018ed5d75f969e3e5606beb66e48
Linux patch: 7.1-rc1
Linux patch: 6.12.84
Linux patch: 6.18.25
Linux patch: 0
Linux patch: 7.0.2

Affected Packages

euvd linux no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerability exists in ksmbd, the in-kernel SMB3 server implementation added to Linux 5.15. The smb_inherit_dacl() function processes Windows-style Discretionary Access Control Lists (DACLs) stored in security.NTACL extended attributes on the backing filesystem. When creating child objects, ksmbd inherits ACLs from parent directories by reading the parent's NTACL xattr and allocating memory based on the num_aces (number of Access Control Entries) field-a 16-bit little-endian integer. The code performs a heap allocation sized as sizeof(struct smb_ace) * num_aces * 2 without validating that num_aces is consistent with the declared pdacl_size. This creates a classic integer-to-allocation size mismatch: an attacker-controlled num_aces value of 65535 triggers an 8 MB allocation via kmalloc (not zeroed), but the subsequent ACE-population loop only writes the amount of data actually present in the xattr, leaving most of the allocation uninitialized. On 32-bit kernels, the three-way size_t multiplication can overflow. Additionally, the ACE parsing loop uses insufficiently strict size checks (offsetof rather than minimum valid ACE wire size) and fails to reject undersized ACE structures, creating secondary risks during ACE traversal.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67) PRIMARY 8.8 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
SUSE HIGH

Primary rating from Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67).

CVSS VectorVendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

4
CVSS changed
May 03, 2026 - 07:22 NVD
8.8 (HIGH)
Patch released
May 03, 2026 - 07:16 nvd
Patch available
Patch available
May 01, 2026 - 15:02 EUVD
CVE Published
May 01, 2026 - 14:16 nvd
HIGH 8.8

DescriptionCVE.org

In the Linux kernel, the following vulnerability has been resolved:

ksmbd: validate num_aces and harden ACE walk in smb_inherit_dacl()

smb_inherit_dacl() trusts the on-disk num_aces value from the parent directory's DACL xattr and uses it to size a heap allocation:

aces_base = kmalloc(sizeof(struct smb_ace) * num_aces * 2, ...);

num_aces is a u16 read from le16_to_cpu(parent_pdacl->num_aces) without checking that it is consistent with the declared pdacl_size. An authenticated client whose parent directory's security.NTACL is tampered (e.g. via offline xattr corruption or a concurrent path that bypasses parse_dacl()) can present num_aces = 65535 with minimal actual ACE data. This causes a ~8 MB allocation (not kzalloc, so uninitialized) that the subsequent loop only partially populates, and may also overflow the three-way size_t multiply on 32-bit kernels.

Additionally, the ACE walk loop uses the weaker offsetof(struct smb_ace, access_req) minimum size check rather than the minimum valid on-wire ACE size, and does not reject ACEs whose declared size is below the minimum.

Reproduced on UML + KASAN + LOCKDEP against the real ksmbd code path. A legitimate mount.cifs client creates a parent directory over SMB (ksmbd writes a valid security.NTACL xattr), then the NTACL blob on the backing filesystem is rewritten to set num_aces = 0xFFFF while keeping the posix_acl_hash bytes intact so ksmbd_vfs_get_sd_xattr()'s hash check still passes. A subsequent SMB2 CREATE of a child under that parent drives smb2_open() into smb_inherit_dacl() (share has "vfs objects = acl_xattr" set), which fails the page allocator:

WARNING: mm/page_alloc.c:5226 at __alloc_frozen_pages_noprof+0x46c/0x9c0 Workqueue: ksmbd-io handle_ksmbd_work __alloc_frozen_pages_noprof+0x46c/0x9c0 ___kmalloc_large_node+0x68/0x130 __kmalloc_large_node_noprof+0x24/0x70 __kmalloc_noprof+0x4c9/0x690 smb_inherit_dacl+0x394/0x2430 smb2_open+0x595d/0xabe0 handle_ksmbd_work+0x3d3/0x1140

With the patch applied the added guard rejects the tampered value with -EINVAL before any large allocation runs, smb2_open() falls back to smb2_create_sd_buffer(), and the child is created with a default SD. No warning, no splat.

Fix by:

  1. Validating num_aces against pdacl_size using the same formula

applied in parse_dacl().

  1. Replacing the raw kmalloc(sizeof * num_aces * 2) with

kmalloc_array(num_aces * 2, sizeof(...)) for overflow-safe allocation.

  1. Tightening the per-ACE loop guard to require the minimum valid

ACE size (offsetof(smb_ace, sid) + CIFS_SID_BASE_SIZE) and rejecting under-sized ACEs, matching the hardening in smb_check_perm_dacl() and parse_dacl().

v1 -> v2:

  • Replace the synthetic test-module splat in the changelog with a

real-path UML + KASAN reproduction driven through mount.cifs and SMB2 CREATE; Namjae flagged the kcifs3_test_inherit_dacl_old name in v1 since it does not exist in ksmbd.

  • Drop the commit-hash citation from the code comment per Namjae's

review; keep the parse_dacl() pointer.

Executive ViewAI

Why It Matters

CVE-2026-31706 is a buffer overflow in the Linux kernel's ksmbd SMB server that allows authenticated attackers to exhaust memory or potentially execute code by manipulating NTACL extended attributes. Organizations running vulnerable kernel versions face service disruption, data exposure, or system compromise if SMB file sharing is exposed to untrusted network users or if local privilege escalation is chained with this vulnerability.

Business Impact: High
Compensating Controls

Apply vendor patch. If immediate patching is unavailable: disable ksmbd SMB server if not operationally required; restrict SMB access via network firewall rules to trusted internal networks only; monitor for abnormal SMB connection attempts and kernel memory warnings; ensure local filesystem permissions prevent unauthorized xattr modification.

Threat Intelligence Overview

EPSS Score
0.0%
Top 95% exploitable
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Vendor StatusVendor

SUSE

Severity: High
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Fixed
SUSE Linux Enterprise Desktop 15 SP7 Fixed
SUSE Linux Enterprise High Availability Extension 15 SP7 Fixed
SUSE Linux Enterprise High Availability Extension 15 SP7 Fixed
SUSE Linux Enterprise High Performance Computing 15 SP7 Fixed

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy