CVE-2026-89098: Nfs-utils: nfs-utils: denial of service via assertion failure in fsidd

Published May 11, 2026
·
Updated

A flaw was found in nfs-utils. The fsidd daemon improperly handles input received over its local domain socket by relying on program assertions to verify command arguments. A local user can exploit this vulnerability by sending a malformed request lacking the required arguments to trigger an assertion failure. This causes the daemon to crash, resulting in a Denial of Service (DoS) for filesystem identifier lookup services until restarted.

Other sources

AIONLYREPORT package: nfs-utils-2.8.3-5.el102 ------ Summary: Local DoS in fsidd via Reachable assert() on Empty Command Arguments: a local unprivileged user can terminate fsidd by sending a malformed command containing only a valid command prefix and trailing space, causing a denial of service for reexport FSID lookups until the daemon is restarted. Requirements to exploit: Local access to a system where fsidd is running for reexport functionality, with the ability to connect to its abstract UNIX domain socket and send a crafted request. Component affected: nfs-utils; support/reexport/fsidd.c; clientcb() Version affected: nfs-utils-2.8.3-5.el102, when fsidd is present and in use for reexport workflows Patch available: no released package fix established; proposed patch included below Version fixed: unknown Upstream coordination: Not notified. CVSS: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - 5.5 (MEDIUM) AV:L - Exploitation requires local access to the host and access to the fsidd UNIX socket. AC:L - A single malformed request is sufficient to reach the failing assertion. PR:N - No protocol-level authentication is required before the request is parsed. UI:N - No user interaction is needed once local access is available. S:U - The impact is limited to the vulnerable service itself. C:N - No confidentiality impact was established. I:N - No integrity impact was established. A:H - Successful exploitation aborts fsidd, disrupting FSID lookup handling for reexport use until restart. Impact: Moderate. This issue enables a reliable local denial of service against fsidd, but the impact is limited to availability and depends on a deployment that actually uses fsidd for reexport handling. Under Red Hat's severity guidance, this is more appropriately Moderate than Important because it is not a remote flaw, does not expose confidentiality or integrity, and affects a configuration-dependent service path rather than a broadly reachable default remote attack surface. Embargo: no Reason: This is a local, configuration-dependent denial of service with straightforward mitigation and no demonstrated confidentiality, integrity, or privilege-escalation impact. Acknowledgement: Aisle Research Vulnerability Details: In clientcb(), fsidd parses several commands received over its local socket and relies on assert() to enforce that an argument is present after the command prefix. The following exact checks are reachable from untrusted input: c if (strncmp(buf, "getfsidnum ", strlen("getfsidnum ")) == 0) { char reqpath = buf + strlen("getfsidnum "); ... assert(reqpath < buf + n ); } ... } else if (strncmp(buf, "getorcreatefsidnum ", strlen("getorcreatefsidnum ")) == 0) { char reqpath = buf + strlen("getorcreatefsidnum "); ... assert(reqpath < buf + n ); } ... } else if (strncmp(buf, "getpath ", strlen("getpath ")) == 0) { char reqfsidnum = buf + strlen("getpath "); ... assert(reqfsidnum < buf + n ); } If a request is exactly the command prefix plus a trailing space, such as getfsidnum , then the parsed argument pointer is equal to buf + n and the assertion fails. In an assertion-enabled build, this causes fsidd to abort. The default socket name is defined as an abstract UNIX socket: c #define FSIDSOCKETNAME "@/run/fsid.sock" Based on the available code and report evidence, fsidd processes requests on this socket without checking peer credentials first, so local socket access is sufficient to reach the vulnerable path. The operational effect is a local denial of service against fsidd, which can interrupt reexport FSID lookup handling until the service is restarted. Steps to reproduce: 1. Use a system where fsidd is running for reexport handling. 2. Verify that the service is active. bash systemctl status fsidd 3. Send a malformed command containing a valid command name, trailing space, and no argument to the abstract UNIX seqpacket socket. bash python3 - <<'PY' import socket s = socket.socket(socket.AFUNIX, socket.SOCKSEQPACKET) s.connect("\0/run/fsid.sock") s.sendall(b"getfsidnum ") PY 4. Observe that fsidd terminates with an assertion failure or SIGABRT, for example in the service journal. bash journalctl -u fsidd -n 20 --no-pager 5. Confirm that reexport FSID lookup operations fail until fsidd is restarted. Mitigation: Where reexport support is not required, disable the affected fsidd usage path. Otherwise, restrict untrusted local access to the host and apply input validation so malformed requests are rejected instead of reaching assert(). A service restart policy may reduce outage duration, but it does not prevent the crash condition. Proposed Fix: Replace the reachable assertions with explicit malformed-input handling and return an error to the client. diff diff --git a/support/reexport/fsidd.c b/support/reexport/fsidd.c — a/support/reexport/fsidd.c +++ b/support/reexport/fsidd.c @@ -48,7 +48,12 @@ static void clientcb(evutilsockett cl, short ev, void d) char answer = NULL; bool found; - assert(reqpath < buf + n ); + if (reqpath >= buf + n) { + char answer[] = "- Command failed: Bad input"; + (void)send(cl, answer, strlen(answer), 0); + return; + } @@ -70,7 +75,12 @@ static void clientcb(evutilsockett cl, short ev, void d) char answer = NULL; bool found; - assert(reqpath < buf + n ); + if (reqpath >= buf + n) { + char answer[] = "- Command failed: Bad input"; + (void)send(cl, answer, strlen(answer), 0); + return; + } @@ -94,7 +104,12 @@ static void clientcb(evutilsockett cl, short ev, void d) uint32t fsidnum; bool found; - assert(reqfsidnum < buf + n ); + if (reqfsidnum >= buf + n) { + char answer[] = "- Command failed: Bad input"; + (void)send(cl, answer, strlen(answer), 0); + return; + } ------ This report was generated using AI technology. Always review AI-generated content prior to use

— Red Hat

Nfs-utils: nfs-utils: denial of service via assertion failure in fsidd

— Microsoft

Affected Software

10 affected componentsFixes available
redhat/nfs-utils=2.8.3-5.el10_2
Microsoft azl3 nfs-utils 2.6.4-4<2.6.4-5
2.6.4-5
ubuntu/nfs-utils*
ubuntu/nfs-utils*
ubuntu/nfs-utils*
ubuntu/nfs-utils*
ubuntu/nfs-utils*
ubuntu/nfs-utils*
ubuntu/nfs-utils*
ubuntu/nfs-utils*

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 2.6.4-5
  2. Configuration

    Disable reexport support where it is not required.

    nfs-utils fsidd reexport support reexport support = disabled
  3. Compensating control

    Restrict untrusted local access to hosts running fsidd, particularly access to its abstract UNIX socket at @/run/fsid.sock.

  4. Compensating control

    Replace the reachable assertions in support/reexport/fsidd.c with explicit input validation so malformed requests are rejected with an error instead of aborting fsidd.

  5. Operational

    Restart fsidd after a crash and confirm that reexport FSID lookup operations recover; use a service restart policy to reduce outage duration.

Event History

May 11, 2026
Data Sourced
via Red Hat·08:31 PM
DescriptionSeverityAffected Software
Oct 16, 2026
CVE Published
via MITRE·05:43 PM
Data Sourced
via MITRE·05:43 PM
DescriptionSeverityWeakness
Data Sourced
via OSV·06:19 PM
DescriptionSeverityAffected Software
Data Sourced
via NVD·06:19 PM
DescriptionSeverityWeakness
Oct 19, 2026
Exploit Published
via CISA·02:16 PM
Oct 21, 2026
Data Sourced
via Microsoft·08:11 AM
DescriptionSeverityWeaknessAffected Software

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