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

smb: client: clear setuid/setgid bit on write with cifsacl/modefromsid/posix extensions

When a file has the setuid or setgid bit set and is written to, the VFS
strips those bits and issues a setattr with ATTR_KILL_SUID/ATTR_KILL_SGID
together with an ATTR_MODE carrying the already-cleared mode.

Both cifs_setattr_unix() and cifs_setattr_nounix() unconditionally dropped
ATTR_MODE in that case:

/* skip mode change if it's just for clearing setuid/setgid */
if (attrs->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID))
attrs->ia_valid &= ~ATTR_MODE;

This is fine for the default mount, where the mode is only emulated via
the DOS read-only attribute and cannot represent the setuid/setgid bits
anyway. However, with the "cifsacl" or "modefromsid" mount options the
mode is stored on the server through an ACL (id_mode_to_cifs_acl()), with
the SMB3.1.1 POSIX extensions the mode is sent to the server directly,
and with the SMB1 Unix extensions (cifs_setattr_unix) the mode is sent
via CIFSSMBUnixSetPathInfo(). In all those cases dropping ATTR_MODE means
the cleared mode is never pushed to the server, so the setuid/setgid bit
survives the write.

This is a security issue: on local filesystems the setuid bit is stripped
when a file is written, but over these cifs.ko mounts the bit persists on
the server, potentially allowing an unexpected privilege escalation on
subsequent execution.

Fix this in two places:

1. cifs_setattr_nounix(): only take the "skip mode change" shortcut
when the mode is emulated via the DOS read-only attribute (i.e.
neither cifsacl/modefromsid nor the SMB3.1.1 POSIX extensions are
in effect), so that the cleared mode is propagated to the server
in the ACL / POSIX cases.

2. cifs_setattr_unix(): this function is only called when Unix
extensions are in effect, so the mode is always stored on the
server. Remove the shortcut entirely so that the cleared mode is
always pushed.
Published: 2026-09-11
Score: 7.3 High
EPSS: < 1% Very Low
KEV: No
Impact: Privilege escalation via persistent setuid/setgid bits on CIFS mounts
Action: Patch Immediately
AI Analysis

Impact

The Linux clearing of setuid and setgid bits when a file is written while mounted with certain option sets such as cifsacl, modefromsid, or SMB3.1.1 POSIX extensions. The client removes the bits locally and sends a request to kill them on the server, but at the same time it drops the accompanying mode change from the attributes. As a result, the server never receives the cleared mode, and the setuid/setgid bits persist on the server copy of the file. This flaw allows an attacker who can write to a CIFS share to keep privileged bits on a file after a write operation, creating a privilege‑escalation path when the file is later executed under a higher‑privilege user.

Affected Systems

The vulnerability affects Linux systems that run the kernel with the CIFS client enabled and mount Windows shares using the cifsacl or modefromsid options, or the SMB3.1.1 POSIX extensions. All kernels prior to the patch that implements the two fixes described in the kernel change log are vulnerable, regardless of distribution or kernel release level. The issue resides in attribute propagation.

Risk and Exploitability

The CVSS score of 7.3 indicates a medium‑to‑high severity. An EPSS score of 0.00213 (<1%) is recorded, and the vulnerability is not listed in CISA’s KEV catalog, the likelihood of exploitation in the wild is uncertain, but the attack surface is defined: a remote adversary must have write access to a CIFS share that is mounted with the affected options and then execute the file to gain escalated privileges. No publicly disclosed exploits are known at this time, yet the mechanism is straightforward and could be used by an attacker who already has limited access to the share.

Generated by OpenCVE AI on September 12, 2026 at 21:35 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a version that contains the fix for CVE‑2026‑89638
  • Remount CIFS shares without the cifsacl, modefromsid, or SMB3.1.1 POSIX extensions to ensure cleared setuid/setgid bits are propagated to the server
  • Remove or reset setuid/setgid bits on files exposed through CIFS mounts and limit execute permissions to mitigate privilege escalation risk

Generated by OpenCVE AI on September 12, 2026 at 21:35 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 12 Sep 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-281
References
Metrics threat_severity

None

cvssV3_1

{'score': 7.3, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:N'}

threat_severity

Moderate


Fri, 11 Sep 2026 23:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: smb: client: clear setuid/setgid bit on write with cifsacl/modefromsid/posix extensions When a file has the setuid or setgid bit set and is written to, the VFS strips those bits and issues a setattr with ATTR_KILL_SUID/ATTR_KILL_SGID together with an ATTR_MODE carrying the already-cleared mode. Both cifs_setattr_unix() and cifs_setattr_nounix() unconditionally dropped ATTR_MODE in that case: /* skip mode change if it's just for clearing setuid/setgid */ if (attrs->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID)) attrs->ia_valid &= ~ATTR_MODE; This is fine for the default mount, where the mode is only emulated via the DOS read-only attribute and cannot represent the setuid/setgid bits anyway. However, with the "cifsacl" or "modefromsid" mount options the mode is stored on the server through an ACL (id_mode_to_cifs_acl()), with the SMB3.1.1 POSIX extensions the mode is sent to the server directly, and with the SMB1 Unix extensions (cifs_setattr_unix) the mode is sent via CIFSSMBUnixSetPathInfo(). In all those cases dropping ATTR_MODE means the cleared mode is never pushed to the server, so the setuid/setgid bit survives the write. This is a security issue: on local filesystems the setuid bit is stripped when a file is written, but over these cifs.ko mounts the bit persists on the server, potentially allowing an unexpected privilege escalation on subsequent execution. Fix this in two places: 1. cifs_setattr_nounix(): only take the "skip mode change" shortcut when the mode is emulated via the DOS read-only attribute (i.e. neither cifsacl/modefromsid nor the SMB3.1.1 POSIX extensions are in effect), so that the cleared mode is propagated to the server in the ACL / POSIX cases. 2. cifs_setattr_unix(): this function is only called when Unix extensions are in effect, so the mode is always stored on the server. Remove the shortcut entirely so that the cleared mode is always pushed.
Title smb: client: clear setuid/setgid bit on write with cifsacl/modefromsid/posix extensions
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-11T19:45:31.791Z

Reserved: 2026-09-11T19:38:34.740Z

Link: CVE-2026-89638

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-11T20:19:49.493

Modified: 2026-09-11T20:19:49.493

Link: CVE-2026-89638

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-09-11T19:45:31Z

Links: CVE-2026-89638 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-12T21:45:06Z

Weaknesses
  • CWE-281

    Improper Preservation of Permissions