GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2026-89685 (GCVE-0-2026-89685)

Vulnerability from cvelistv5 – Published: 2026-09-11 19:46 – Updated: 2026-09-13 06:33
VLAI
Title
nfsd: fix clock domain mismatch in clients_still_reclaiming()
Summary
In the Linux kernel, the following vulnerability has been resolved: nfsd: fix clock domain mismatch in clients_still_reclaiming() clients_still_reclaiming() computes a deadline from nn->boot_time (CLOCK_REALTIME, ~1.7 billion) but compares it against ktime_get_boottime_seconds() (CLOCK_BOOTTIME, seconds since boot). The comparison is always false — it would take ~54 years of uptime for BOOTTIME to exceed the REALTIME-derived deadline. This means any client can hold the server in grace indefinitely by sending CLAIM_PREVIOUS OPEN requests, blocking all non-reclaim operations for all other clients. Add boot_time_bt (CLOCK_BOOTTIME) alongside the existing boot_time and use it for the deadline computation. boot_time (CLOCK_REALTIME) is preserved for its cl_boot clientid-nonce role.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 20b7d86f29d39e8ae19bb29c24ffee70dc385ddf , < f9cec313efb2fd18d962aad738a4892bce806016 (git)
Affected: 20b7d86f29d39e8ae19bb29c24ffee70dc385ddf , < 9843649196221152b6e5d138a3ce859bdaae1d96 (git)
Affected: 20b7d86f29d39e8ae19bb29c24ffee70dc385ddf , < 09ea3eb9a518565f5bca386e81b993ed8825f5e8 (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.6
Unaffected: 0 , < 5.6 (semver)
Unaffected: 6.18.51 , ≤ 6.18.* (semver)
Unaffected: 7.2.4 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/nfsd/netns.h",
            "fs/nfsd/nfs4state.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "f9cec313efb2fd18d962aad738a4892bce806016",
              "status": "affected",
              "version": "20b7d86f29d39e8ae19bb29c24ffee70dc385ddf",
              "versionType": "git"
            },
            {
              "lessThan": "9843649196221152b6e5d138a3ce859bdaae1d96",
              "status": "affected",
              "version": "20b7d86f29d39e8ae19bb29c24ffee70dc385ddf",
              "versionType": "git"
            },
            {
              "lessThan": "09ea3eb9a518565f5bca386e81b993ed8825f5e8",
              "status": "affected",
              "version": "20b7d86f29d39e8ae19bb29c24ffee70dc385ddf",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/nfsd/netns.h",
            "fs/nfsd/nfs4state.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.6"
            },
            {
              "lessThan": "5.6",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.51",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.51",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.4",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: fix clock domain mismatch in clients_still_reclaiming()\n\nclients_still_reclaiming() computes a deadline from nn-\u003eboot_time\n(CLOCK_REALTIME, ~1.7 billion) but compares it against\nktime_get_boottime_seconds() (CLOCK_BOOTTIME, seconds since boot).\nThe comparison is always false \u2014 it would take ~54 years of uptime\nfor BOOTTIME to exceed the REALTIME-derived deadline.\n\nThis means any client can hold the server in grace indefinitely by\nsending CLAIM_PREVIOUS OPEN requests, blocking all non-reclaim\noperations for all other clients.\n\nAdd boot_time_bt (CLOCK_BOOTTIME) alongside the existing boot_time\nand use it for the deadline computation. boot_time (CLOCK_REALTIME)\nis preserved for its cl_boot clientid-nonce role."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.5,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - nfsd processes NFSv4 COMPOUND OPEN over TCP (typically port 2049). A remote peer reaches clients_still_reclaiming() by sending CLAIM_PREVIOUS OPEN or reclaim LOCK, which sets NFSD_NET_SOMEBODY_RECLAIMED and prevents grace from ending.\nAC:L - The attacker fully controls the reclaim OPEN/LOCK RPCs that keep NFSD_NET_SOMEBODY_RECLAIMED set; no race or memory layout is required. Grace always starts with nfsd, and the broken REALTIME-vs-BOOTTIME deadline never fires, so the attacker can extend it at will.\nPR:N - Default nfsd exports accept AUTH_SYS/AUTH_NULL with no credentials. An unauthenticated network peer that is or becomes a recorded NFSv4 client can send CLAIM_PREVIOUS OPEN; no server account or capability is required.\nUI:N - Exploitation takes only attacker-sent NFSv4 RPCs after nfsd starts; no victim user action such as mounting or opening a file is required.\nS:U - The impact stays in the same kernel nfsd/lockd grace state. This is a service denial on the NFS server, not a VM, IOMMU, or sandbox boundary crossing.\nC:N - The bug only miscompares grace deadlines and extends the grace period. It does not disclose kernel memory or file contents.\nI:N - No unauthorized modification of kernel or file data occurs. Other clients are blocked from new mutating operations, which is an availability effect rather than an integrity violation.\nA:H - Successful reclaim OPENs hold nfsd in grace indefinitely because the double-lease deadline never expires, so non-reclaim OPEN/REMOVE/RENAME/SETXATTR and lockd grace return NFS4ERR_GRACE and fully deny NFSv4 service to other clients."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-13T06:33:08.546Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/f9cec313efb2fd18d962aad738a4892bce806016"
        },
        {
          "url": "https://git.kernel.org/stable/c/9843649196221152b6e5d138a3ce859bdaae1d96"
        },
        {
          "url": "https://git.kernel.org/stable/c/09ea3eb9a518565f5bca386e81b993ed8825f5e8"
        }
      ],
      "title": "nfsd: fix clock domain mismatch in clients_still_reclaiming()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-89685",
    "datePublished": "2026-09-11T19:46:07.116Z",
    "dateReserved": "2026-09-11T19:38:34.749Z",
    "dateUpdated": "2026-09-13T06:33:08.546Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-89685",
      "date": "2026-09-15",
      "epss": "0.00432",
      "percentile": "0.36563"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-14T14:56:19.000Z",
      "cve": "CVE-2026-89685",
      "id": "msrc_CVE-2026-89685",
      "initial_release_date": "2026-09-13T01:09:30.000Z",
      "product_status:known_affected": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "nfsd: fix clock domain mismatch in clients_still_reclaiming()",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-89685.json",
      "version": "2"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-89685\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-09-11T20:19:55.420\",\"lastModified\":\"2026-09-13T07:17:34.253\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnfsd: fix clock domain mismatch in clients_still_reclaiming()\\n\\nclients_still_reclaiming() computes a deadline from nn-\u003eboot_time\\n(CLOCK_REALTIME, ~1.7 billion) but compares it against\\nktime_get_boottime_seconds() (CLOCK_BOOTTIME, seconds since boot).\\nThe comparison is always false \u2014 it would take ~54 years of uptime\\nfor BOOTTIME to exceed the REALTIME-derived deadline.\\n\\nThis means any client can hold the server in grace indefinitely by\\nsending CLAIM_PREVIOUS OPEN requests, blocking all non-reclaim\\noperations for all other clients.\\n\\nAdd boot_time_bt (CLOCK_BOOTTIME) alongside the existing boot_time\\nand use it for the deadline computation. boot_time (CLOCK_REALTIME)\\nis preserved for its cl_boot clientid-nonce role.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"fs/nfsd/netns.h\",\"fs/nfsd/nfs4state.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"20b7d86f29d39e8ae19bb29c24ffee70dc385ddf\",\"lessThan\":\"f9cec313efb2fd18d962aad738a4892bce806016\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"20b7d86f29d39e8ae19bb29c24ffee70dc385ddf\",\"lessThan\":\"9843649196221152b6e5d138a3ce859bdaae1d96\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"20b7d86f29d39e8ae19bb29c24ffee70dc385ddf\",\"lessThan\":\"09ea3eb9a518565f5bca386e81b993ed8825f5e8\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"fs/nfsd/netns.h\",\"fs/nfsd/nfs4state.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"5.6\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"5.6\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.51\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2.4\",\"lessThanOrEqual\":\"7.2.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.3-rc1\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\",\"baseScore\":7.5,\"baseSeverity\":\"HIGH\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":3.9,\"impactScore\":3.6}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/09ea3eb9a518565f5bca386e81b993ed8825f5e8\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/9843649196221152b6e5d138a3ce859bdaae1d96\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/f9cec313efb2fd18d962aad738a4892bce806016\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-09-13T07:00:42+00:00",
      "cve": "CVE-2026-89685",
      "id": "CVE-2026-89685",
      "initial_release_date": "2026-09-11T19:46:07.116000+00:00",
      "product_status:known_affected": "2",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: Linux kernel: NFS daemon denial of service via clock domain mismatch",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89685.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-16T00:00:17Z",
      "cve": "CVE-2026-89685",
      "id": "CVE-2026-89685",
      "initial_release_date": "2026-09-12T16:23:43Z",
      "product_status:known_affected": "210",
      "product_status:known_not_affected": "143",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-89685",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-89685.json",
      "version": "5"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…