CVE-2026-31712: ksmbd: require minimum ACE size in smb_check_perm_dacl()

Published May 1, 2026
·
Updated

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

ksmbd: require minimum ACE size in smbcheckpermdacl()

Both ACE-walk loops in smbcheckpermdacl() only guard against an under-sized remaining buffer, not against an ACE whose declared ace->size is smaller than the struct it claims to describe:

if (offsetof(struct smbace, accessreq) > acessize) break; acesize = le16tocpu(ace->size); if (acesize > acessize) break;

The first check only requires the 4-byte ACE header to be in bounds; it does not require accessreq (4 bytes at offset 4) to be readable. An attacker who has set a crafted DACL on a file they own can declare ace->size == 4 with acessize == 4, pass both checks, and then

granted |= le32tocpu(ace->accessreq); / upper loop / comparesids(&sid, &ace->sid); / lower loop /

reads accessreq at offset 4 (OOB by up to 4 bytes) and ace->sid at offset 8 (OOB by up to CIFSSIDBASESIZE + SIDMAXSUBAUTHORITIES 4 bytes).

Tighten both loops to require

acesize >= offsetof(struct smbace, sid) + CIFSSIDBASESIZE

which is the smallest valid on-wire ACE layout (4-byte header + 4-byte accessreq + 8-byte sid base with zero sub-auths). Also reject ACEs whose sid.numsubauth exceeds SIDMAXSUBAUTHORITIES before letting comparesids() dereference subauth[] entries.

parsesecdesc() already enforces an equivalent check (lines 441-448); smbcheckpermdacl() simply grew weaker validation over time.

Reachability: authenticated SMB client with permission to set an ACL on a file. On a subsequent CREATE against that file, the kernel walks the stored DACL via smbcheckpermdacl() and triggers the OOB read. Not pre-auth, and the OOB read is not reflected to the attacker, but KASAN reports and kernel state corruption are possible.

Affected Software

4 affected components
Linux Linux kernel (ksmbd)
Linux Linux kernel>=5.15<6.12.84
Linux Linux kernel>=6.13<6.18.25
Linux Linux kernel>=6.19<7.0.2

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Update ksmbd (smb_check_perm_dacl()) to tighten ACE parsing: in both ACE-walk loops, compute ace_size = le16_to_cpu(ace->size) and require ace_size >= offsetof(struct smb_ace, sid) + CIFS_SID_BASE_SIZE (and enforce bounds so ace->size is smaller than the struct it claims to describe) before accessing ace->sid or ace->access_req.

    ksmbd minimum ACE size validation in smb_check_perm_dacl() = require ace->size to be smaller than the struct it claims to describe; require ace_size >= offsetof(struct smb_ace, sid) + CIFS_SID_BASE_SIZE; tighten both ACE-walk loops so ace->size == 4 only passes when aces_size == 4

Event History

May 1, 2026
CVE Published
via MITRE·01:56 PM
Data Sourced
via MITRE·01:56 PM
DescriptionSeverity
Data Sourced
via NVD·02:16 PM
RemedyDescriptionSeverityWeaknessAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-31712?

CVE-2026-31712 has been classified as a medium severity vulnerability affecting the Linux kernel (ksmbd).

2

How do I fix CVE-2026-31712?

To fix CVE-2026-31712, you should update to the latest version of the Linux kernel that includes the patches for this vulnerability.

3

What systems are affected by CVE-2026-31712?

CVE-2026-31712 affects systems running the Linux kernel with ksmbd support.

4

What does CVE-2026-31712 allow an attacker to do?

CVE-2026-31712 may allow an attacker to exploit insufficient checks on ACE sizes, potentially leading to unauthorized access.

5

When was CVE-2026-31712 disclosed?

CVE-2026-31712 was disclosed recently but specific disclosure details are not mentioned in this summary.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203