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

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

CVE-2026-68100

ksmbd: validate num_subauth when copying ACE in set_ntacl_dacl

8.1 EPSS 0.4% AV:N

Published 2026-08-10 (2 months ago) by the Linux kernel CNA. Subsystem fs/smb. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-68100 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 12bookwormfixedDLA-4777-1 · 2026-09-08 · text6.1.187-1Update the kernel and reboot. DLA-4777-1 shipped the fix on 2026-09-08, in 6.1.187-1. A running kernel keeps the old code until the machine restarts.
Debian 13trixiefixed6.12.101-1Update the kernel and reboot. Fixed in 6.12.101-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.1.6-1Update the kernel and reboot. Fixed in 7.1.6-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.1.6-1Update the kernel and reboot. Fixed in 7.1.6-1. A running kernel keeps the old code until the machine restarts.
Debian 12bookworm · linux-6.12fixedDLA-4745-1 · 2026-08-18 · text6.12.101-1~deb12u1Update the kernel and reboot. DLA-4745-1 shipped the fix on 2026-08-18, in 6.12.101-1~deb12u1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

set_ntacl_dacl() copies each ACE from the attacker-controlled stored security descriptor verbatim into the response DACL without checking sid.num_subauth. The ACE bytes (including an unchecked num_subauth) originate from an authenticated SMB2_SET_INFO(SecInfo=DACL) that is stored raw via ksmbd_vfs_set_sd_xattr(); parse_dacl() rejects a bad ACE with `break` rather than an error, so parse_sec_desc() still returns success and the malformed SD reaches the xattr intact. On a subsequent SMB2_QUERY_INFO(SecInfo=DACL) for an inode carrying a POSIX access ACL, build_sec_desc() -> set_ntacl_dacl() -> set_posix_acl_entries_dacl() walks the copied ACEs and reads ntace->sid.sub_auth[ntace->sid.num_subauth - 1] with num_subauth taken straight from the stored SD. Since sub_auth[] is fixed at SID_MAX_SUB_AUTHORITIES (15), a crafted num_subauth (e.g. 255) drives an out-of-bounds heap read of ~1 KB with an offset fully controlled by an authenticated client. The sibling functions already gate this field: parse_dacl() -- num_subauth == 0 || > SID_MAX_SUB_AUTHORITIES parse_sid() -- num_subauth > SID_MAX_SUB_AUTHORITIES smb_copy_sid() -- min_t(u8, num_subauth, SID_MAX_SUB_AUTHORITIES) set_ntacl_dacl() is the lone inconsistent path that omits the check. Add the same num_subauth validation in set_ntacl_dacl() before copying the ACE, matching the gate already enforced by parse_dacl().

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/server/smbacl.c

What this is
KERNEL SMB3 SERVER (KSMBD)MAINTAINERS section matched on fs/smb/server/ · linux-cifs@vger.kernel.org · Maintained
Kernel module
ksmbd

Check it on the machine

grep -wE 'CONFIG_SMBFS|CONFIG_SMB_SERVER' /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 ksmbd

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 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.

  • bookworm, trixie, forky, sid, bookworm · linux-6.12m
m
a loadable module on every flavour - check lsmod, can be blacklisted
Build switches
CONFIG_SMBFS, CONFIG_SMB_SERVER
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-08-10 (2 months ago)source
CVSS
8.1 high
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:Hsource recompute it
Attack vector
network (AV:N)source
EPSS
0.43%, higher than 36.4% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
fs/smb

Upstream fixes

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

IntroducedFixed inCommit
5.156.1.18426cb845e22a0
5.156.6.148e31fada51437
5.156.12.101fb3dc8e6da46
5.156.18.42b6d3cc6a5244
5.157.1.65acbd3012fd4
5.157.247f0b34f6bc9

Debian advisories

AdvisoryDateShipped toDebian
DLA-4777-12026-09-08bookworm 6.1.187-1tracker
DLA-4745-12026-08-18bookworm 6.12.101-1~deb12u1tracker

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
ksmbd is the in-kernel SMB3 server on TCP/445; both SMB2_SET_INFO(SecInfo=DACL) and SMB2_QUERY_INFO(SecInfo=DACL) are handled from remote SMB2 PDUs in smb2_set_info()/smb2_query_info() via ksmbd_conn_handler_loop(), with no local syscall or physical access required.
AC:LAttack complexity, low
Once ksmbd is running with ACL-xattr shares, an attacker deterministically plants a malformed DACL via SET_INFO and triggers the read on QUERY_INFO; num_subauth fully controls the OOB offset, with no race, timing window, or victim-dependent memory layout required.
PR:LPrivileges required, low
SMB2_SET_INFO/QUERY_INFO require a valid post-authentication session (smb2_check_user_session) and SET_INFO SECURITY additionally requires FILE_WRITE_DAC/FILE_WRITE_OWNER on the open handle; this is a low-privilege authenticated SMB client, not a pre-auth or root-only path.
UI:NUser interaction, none
Exploitation is driven entirely by the attacker's own SMB2 SET_INFO and QUERY_INFO requests over the network; no local user, administrator, or victim client must perform any separate action.
S:UScope, unchanged
The out-of-bounds read and any resulting disclosure or crash occur entirely within kernel ksmbd server memory on the host; no VM, IOMMU, container, or other security-boundary escape is involved.
C:HConfidentiality impact, high
Crafted num_subauth (e.g. 255) makes set_posix_acl_entries_dacl() index far past the 15-element sub_auth[] array, performing an attacker-offset-controlled ~1 KB out-of-bounds kernel heap read whose value is compared during DACL rebuild, enabling kernel memory disclosure.
I:NIntegrity impact, none
The defect is an out-of-bounds read during ACE deduplication; no kernel memory is written, no attacker-controlled data is persisted beyond the intentionally stored security descriptor, and no code-execution or arbitrary-write primitive is introduced.
A:HAvailability impact, high
An unchecked multi-hundred-byte read past the smb_ace SID sub_auth array can cross slab/object boundaries and fault on hardened or KASAN builds; any unvalidated kernel out-of-bounds access is treated as capable of oops/panic and full host denial of service.