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

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

CVE-2026-93229

nfsd: add missing read barrier to rpc_status_get dumpit seqcount retry

7.1 EPSS 0.1% AV:L

Published 2026-09-24 (24 days ago) by the Linux kernel CNA. Subsystem fs/nfsd. Debian urgency: unimportant.

What to do, per Debian release

Debian's own status for CVE-2026-93229 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 12bookwormnot affected6.1.190-1Nothing to do. bookworm never shipped the vulnerable code.
Debian 13trixiefixedDSA-6528-1 · 2026-09-29 · text6.12.111-1Update the kernel and reboot. DSA-6528-1 shipped the fix on 2026-09-29, in 6.12.111-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.2.6-1Update the kernel and reboot. Fixed in 7.2.6-1. A running kernel keeps the old code until the machine restarts.
Debian 12bookworm · linux-6.12fixedDLA-4817-1 · 2026-10-04 · text6.12.111-1~deb12u1Update the kernel and reboot. DLA-4817-1 shipped the fix on 2026-10-04, in 6.12.111-1~deb12u1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

The hand-rolled seqcount-like protocol in nfsd_nl_rpc_status_get_dumpit() is missing a read memory barrier (smp_rmb) before its second counter check. The standard kernel read_seqcount_retry() includes smp_rmb() to ensure that all data reads complete before the counter is re-checked. Without this barrier, on weakly-ordered architectures (ARM, POWER), the CPU may reorder field reads past the second counter check, making the retry logic ineffective: it could observe a consistent counter pair while reading fields that have been concurrently modified by the writer. Add smp_rmb() before the second counter check to order the field reads ahead of it, matching the barrier semantics of the standard seqcount read-side. The begin-side smp_load_acquire() already pairs with the smp_store_release() in nfsd_dispatch(); with the smp_rmb() now ordering the field reads, the retry check no longer needs acquire semantics and reads the counter with a plain READ_ONCE(), as read_seqcount_retry() does. [ cel: Use READ_ONCE instead of smp_load_acquire() ]

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/nfsd/nfsctl.c

What this is
KERNEL NFSD, SUNRPC, AND LOCKD SERVERSMAINTAINERS section matched on fs/nfsd/ · linux-nfs@vger.kernel.org · Supported
Kernel module
nfsd

Check it on the machine

grep -w CONFIG_NFSD /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 nfsd

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 switch
CONFIG_NFSD

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-09-24 (24 days ago)source
CVSS
7.1 high
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:Hsource recompute it
Attack vector
local (AV:L)source
EPSS
0.12%, higher than 2.0% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
unimportantsource
Subsystem
fs/nfsd

Upstream fixes

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

IntroducedFixed inCommit
6.76.12.109f501f2f4ec1d
6.76.18.501aea0482b98e
6.77.2.49b5f6475006c
6.77.3a71f161a8571

Debian advisories

AdvisoryDateShipped toDebian
DLA-4817-12026-10-04bookworm 6.12.111-1~deb12u1tracker
DSA-6528-12026-09-29trixie 6.12.111-1tracker

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:LAttack vector, local
The missing smp_rmb is in nfsd_nl_rpc_status_get_dumpit(), reached only via NFSD_CMD_RPC_STATUS_GET over AF_NETLINK (nfsd_nl_ops dumpit). Remote NFS RPCs in nfsd_dispatch() only write rq_status_counter and never enter dumpit, so exploitation requires local netlink.
AC:LAttack complexity, low
The attacker loops NFSD_CMD_RPC_STATUS_GET while sending NFSv4 COMPOUNDs with more than eight ops so nfsd_dispatch() smp_store_release()s rq_status_counter and nfsd4_release_compoundargs() mutates args->ops/opcnt. Both sides of the seqcount race are attacker-driven; weakly-ordered ARM/POWER where the missing smp_rmb matters is mainstream.
PR:LPrivileges required, low
NFSD_CMD_RPC_STATUS_GET is registered in nfsd_nl_ops with GENL_CMD_CAP_DUMP and no GENL_ADMIN_PERM, so genl_family_rcv_msg() skips the CAP_NET_ADMIN check. Any unprivileged process in the nfsd network namespace can invoke the dump.
UI:NUser interaction, none
The attacker issues the NFSD_CMD_RPC_STATUS_GET dump and the concurrent NFSv4 COMPOUNDs themselves. No separate victim action such as mounting a filesystem or opening a device is required.
S:UScope, unchanged
The torn and out-of-bounds reads occur in host-kernel nfsd_nl_rpc_status_get_dumpit() on the local machine. Impact stays inside one security authority and is not a VM escape, IOMMU bypass, or other cross-boundary breakout.
C:HConfidentiality impact, high
Without smp_rmb(), dumpit can pass the rq_status_counter retry and still load args->opcnt before nfsd4_release_compoundargs() zeros it and args->ops after it is switched to iops[8]. Indices 8-15 then read adjacent slab at nfsd4_op stride and return those u32s via NFSD_A_RPC_STATUS_COMPOUND_OPS.
I:NIntegrity impact, none
nfsd_nl_rpc_status_get_dumpit() only copies opnum, xid, addresses and related fields into a stack nfsd_genl_rqstp for netlink. The missing retry barrier yields an out-of-bounds or torn read, not an out-of-bounds write, use-after-free write, or control-flow hijack.
A:HAvailability impact, high
Slots 8-15 are sampled at sizeof(struct nfsd4_op) stride past the trailing iops[8] array in kmalloc'd nfsd4_compoundargs into adjacent or unmapped slab pages, which can oops nfsd_nl_rpc_status_get_dumpit() even if the leak is not turned into a stable read.