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

CVE-2026-53394 (GCVE-0-2026-53394)

Vulnerability from cvelistv5 – Published: 2026-07-19 12:01 – Updated: 2026-08-17 04:50
VLAI
Title
nfsd: avoid leaking pre-allocated openowner on unconfirmed retry race
Summary
In the Linux kernel, the following vulnerability has been resolved: nfsd: avoid leaking pre-allocated openowner on unconfirmed retry race When find_or_alloc_open_stateowner() encounters an unconfirmed owner, it calls release_openowner() and sets oo = NULL. Control then falls through past the `if (oo)` guard -- which would have freed any pre-allocated `new` -- and unconditionally executes `new = alloc_stateowner(...)`. If `new` was already allocated on a prior iteration, the pointer is silently overwritten and the previous allocation (slab object + owner name buffer) is leaked. This requires a race: two NFSv4.0 OPEN threads with the same owner string, where a concurrent thread inserts a new unconfirmed owner into the hash between retry iterations. The window is narrow but repeatable under adversarial conditions. Fix by adding `goto retry` after `oo = NULL` so the already-allocated `new` is reused on the next iteration rather than overwritten.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 23df17788c6212809848f836b10c4f85b16843a5 , < c9aefb2b5f11337c9202c5bd0c45d71198449718 (git)
Affected: 23df17788c6212809848f836b10c4f85b16843a5 , < 017a6150106b054cc84d1b0582d97bd3a74d4281 (git)
Affected: 23df17788c6212809848f836b10c4f85b16843a5 , < a10bf67fe06469a71a401f72f328237345d553c0 (git)
Affected: 23df17788c6212809848f836b10c4f85b16843a5 , < 57aee7a35bb12753057c5b65d72d1f46c0e95b07 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.10
Unaffected: 0 , < 6.10 (semver)
Unaffected: 6.12.95 , ≤ 6.12.* (semver)
Unaffected: 6.18.38 , ≤ 6.18.* (semver)
Unaffected: 7.1.3 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (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/nfs4state.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "c9aefb2b5f11337c9202c5bd0c45d71198449718",
              "status": "affected",
              "version": "23df17788c6212809848f836b10c4f85b16843a5",
              "versionType": "git"
            },
            {
              "lessThan": "017a6150106b054cc84d1b0582d97bd3a74d4281",
              "status": "affected",
              "version": "23df17788c6212809848f836b10c4f85b16843a5",
              "versionType": "git"
            },
            {
              "lessThan": "a10bf67fe06469a71a401f72f328237345d553c0",
              "status": "affected",
              "version": "23df17788c6212809848f836b10c4f85b16843a5",
              "versionType": "git"
            },
            {
              "lessThan": "57aee7a35bb12753057c5b65d72d1f46c0e95b07",
              "status": "affected",
              "version": "23df17788c6212809848f836b10c4f85b16843a5",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/nfsd/nfs4state.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.10"
            },
            {
              "lessThan": "6.10",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.95",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.38",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.95",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.38",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.3",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "6.10",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: avoid leaking pre-allocated openowner on unconfirmed retry race\n\nWhen find_or_alloc_open_stateowner() encounters an unconfirmed owner, it\ncalls release_openowner() and sets oo = NULL. Control then falls through\npast the `if (oo)` guard -- which would have freed any pre-allocated\n`new` -- and unconditionally executes `new = alloc_stateowner(...)`. If\n`new` was already allocated on a prior iteration, the pointer is\nsilently overwritten and the previous allocation (slab object + owner\nname buffer) is leaked.\n\nThis requires a race: two NFSv4.0 OPEN threads with the same owner\nstring, where a concurrent thread inserts a new unconfirmed owner into\nthe hash between retry iterations. The window is narrow but repeatable\nunder adversarial conditions.\n\nFix by adding `goto retry` after `oo = NULL` so the already-allocated\n`new` is reused on the next iteration rather than overwritten."
        }
      ],
      "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 - The flaw is in nfsd\u0027s NFSv4 OPEN handling, reachable remotely via NFS RPC on TCP/UDP port 2049 through svc_recv \u2192 NFSPROC4_COMPOUND \u2192 nfsd4_open \u2192 nfsd4_process_open1 \u2192 find_or_alloc_open_stateowner().\nAC:L - Exploitation requires a race between two NFSv4.0 OPEN requests with the same owner string, but the attacker controls both sides by issuing concurrent compounds from multiple connections; the fix commit itself states this is repeatable under adversarial conditions.\nPR:N - No local privileges on the server are required\u2014only remote NFSv4 client access to establish a clientid (SETCLIENTID/CONFIRM) and send concurrent OPEN operations; the leak occurs in nfsd4_process_open1 before export/file permission checks complete.\nUI:N - Exploitation is fully automated via concurrent NFS protocol requests and requires no action from any victim user on the server or client side.\nS:U - Impact is confined to kernel memory consumption within nfsd\u0027s security authority; there is no cross-boundary escape to other components or privilege domains.\nC:N - This is a pure memory leak where orphaned slab objects lose all kernel references; no out-of-bounds read, use-after-free, or other mechanism exposes kernel data to the attacker.\nI:N - The bug silently drops a pointer to an allocated object without corrupting adjacent memory or providing any write or control-flow primitive\u2014only heap memory is lost.\nA:H - Each successful race leaks a slab object plus an attacker-controlled owner-name buffer (up to NFS4_OPAQUE_LIMIT bytes), and the attack can be repeated indefinitely to cause unbounded kernel memory exhaustion, denying NFS service and potentially triggering system-wide OOM conditions."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T04:50:45.946Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/c9aefb2b5f11337c9202c5bd0c45d71198449718"
        },
        {
          "url": "https://git.kernel.org/stable/c/017a6150106b054cc84d1b0582d97bd3a74d4281"
        },
        {
          "url": "https://git.kernel.org/stable/c/a10bf67fe06469a71a401f72f328237345d553c0"
        },
        {
          "url": "https://git.kernel.org/stable/c/57aee7a35bb12753057c5b65d72d1f46c0e95b07"
        }
      ],
      "title": "nfsd: avoid leaking pre-allocated openowner on unconfirmed retry race",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-53394",
    "datePublished": "2026-07-19T12:01:57.261Z",
    "dateReserved": "2026-06-09T07:44:35.402Z",
    "dateUpdated": "2026-08-17T04:50:45.946Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-53394",
      "date": "2026-09-15",
      "epss": "0.00483",
      "percentile": "0.40333"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-53394\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-07-19T12:16:50.480\",\"lastModified\":\"2026-08-17T05:17:13.900\",\"vulnStatus\":\"Analyzed\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnfsd: avoid leaking pre-allocated openowner on unconfirmed retry race\\n\\nWhen find_or_alloc_open_stateowner() encounters an unconfirmed owner, it\\ncalls release_openowner() and sets oo = NULL. Control then falls through\\npast the `if (oo)` guard -- which would have freed any pre-allocated\\n`new` -- and unconditionally executes `new = alloc_stateowner(...)`. If\\n`new` was already allocated on a prior iteration, the pointer is\\nsilently overwritten and the previous allocation (slab object + owner\\nname buffer) is leaked.\\n\\nThis requires a race: two NFSv4.0 OPEN threads with the same owner\\nstring, where a concurrent thread inserts a new unconfirmed owner into\\nthe hash between retry iterations. The window is narrow but repeatable\\nunder adversarial conditions.\\n\\nFix by adding `goto retry` after `oo = NULL` so the already-allocated\\n`new` is reused on the next iteration rather than overwritten.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"fs/nfsd/nfs4state.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"23df17788c6212809848f836b10c4f85b16843a5\",\"lessThan\":\"c9aefb2b5f11337c9202c5bd0c45d71198449718\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"23df17788c6212809848f836b10c4f85b16843a5\",\"lessThan\":\"017a6150106b054cc84d1b0582d97bd3a74d4281\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"23df17788c6212809848f836b10c4f85b16843a5\",\"lessThan\":\"a10bf67fe06469a71a401f72f328237345d553c0\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"23df17788c6212809848f836b10c4f85b16843a5\",\"lessThan\":\"57aee7a35bb12753057c5b65d72d1f46c0e95b07\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"fs/nfsd/nfs4state.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.10\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.10\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.95\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.38\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1.3\",\"lessThanOrEqual\":\"7.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2\",\"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}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-401\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.10\",\"versionEndExcluding\":\"6.12.95\",\"matchCriteriaId\":\"F3CCEC80-8582-4B49-B505-8BCECAFA4CE9\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.13\",\"versionEndExcluding\":\"6.18.38\",\"matchCriteriaId\":\"FA591B28-5D62-449E-BDBE-3C9391BF070A\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.19\",\"versionEndExcluding\":\"7.1.3\",\"matchCriteriaId\":\"9526B150-E2B3-4C6F-8AE5-1AF92B75AD9E\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/017a6150106b054cc84d1b0582d97bd3a74d4281\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/57aee7a35bb12753057c5b65d72d1f46c0e95b07\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/a10bf67fe06469a71a401f72f328237345d553c0\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/c9aefb2b5f11337c9202c5bd0c45d71198449718\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-07-20T15:34:20+00:00",
      "cve": "CVE-2026-53394",
      "id": "CVE-2026-53394",
      "initial_release_date": "2026-07-19T00:00:00+00:00",
      "product_status:known_affected": "198",
      "product_status:known_not_affected": "77",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: nfsd: avoid leaking pre-allocated openowner on unconfirmed retry race",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-53394.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-31T16:41:27Z",
      "cve": "CVE-2026-53394",
      "id": "CVE-2026-53394",
      "initial_release_date": "2026-07-19T17:36:03Z",
      "product_status:first_fixed": "2",
      "product_status:known_not_affected": "345",
      "product_status:recommended": "149",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-53394",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-53394.json",
      "version": "11"
    }
  }
}



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…