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

CVE-2025-71090 (GCVE-0-2025-71090)

Vulnerability from cvelistv5 – Published: 2026-01-13 15:34 – Updated: 2026-08-05 12:11
VLAI
Title
nfsd: fix nfsd_file reference leak in nfsd4_add_rdaccess_to_wrdeleg()
Summary
In the Linux kernel, the following vulnerability has been resolved: nfsd: fix nfsd_file reference leak in nfsd4_add_rdaccess_to_wrdeleg() nfsd4_add_rdaccess_to_wrdeleg() unconditionally overwrites fp->fi_fds[O_RDONLY] with a newly acquired nfsd_file. However, if the client already has a SHARE_ACCESS_READ open from a previous OPEN operation, this action overwrites the existing pointer without releasing its reference, orphaning the previous reference. Additionally, the function originally stored the same nfsd_file pointer in both fp->fi_fds[O_RDONLY] and fp->fi_rdeleg_file with only a single reference. When put_deleg_file() runs, it clears fi_rdeleg_file and calls nfs4_file_put_access() to release the file. However, nfs4_file_put_access() only releases fi_fds[O_RDONLY] when the fi_access[O_RDONLY] counter drops to zero. If another READ open exists on the file, the counter remains elevated and the nfsd_file reference from the delegation is never released. This potentially causes open conflicts on that file. Then, on server shutdown, these leaks cause __nfsd_file_cache_purge() to encounter files with an elevated reference count that cannot be cleaned up, ultimately triggering a BUG() in kmem_cache_destroy() because there are still nfsd_file objects allocated in that cache.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: e7a8ebc305f26cab608e59a916a4ae89d6656c5f , < c07dc84ed67c5a182273171639bacbbb87c12175 (git)
Affected: e7a8ebc305f26cab608e59a916a4ae89d6656c5f , < 8072e34e1387d03102b788677d491e2bcceef6f5 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.17
Unaffected: 0 , < 6.17 (semver)
Unaffected: 6.18.4 , ≤ 6.18.* (semver)
Unaffected: 6.19 , ≤ * (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": "c07dc84ed67c5a182273171639bacbbb87c12175",
              "status": "affected",
              "version": "e7a8ebc305f26cab608e59a916a4ae89d6656c5f",
              "versionType": "git"
            },
            {
              "lessThan": "8072e34e1387d03102b788677d491e2bcceef6f5",
              "status": "affected",
              "version": "e7a8ebc305f26cab608e59a916a4ae89d6656c5f",
              "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.17"
            },
            {
              "lessThan": "6.17",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.19",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.4",
                  "versionStartIncluding": "6.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.19",
                  "versionStartIncluding": "6.17",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: fix nfsd_file reference leak in nfsd4_add_rdaccess_to_wrdeleg()\n\nnfsd4_add_rdaccess_to_wrdeleg() unconditionally overwrites\nfp-\u003efi_fds[O_RDONLY] with a newly acquired nfsd_file. However, if\nthe client already has a SHARE_ACCESS_READ open from a previous OPEN\noperation, this action overwrites the existing pointer without\nreleasing its reference, orphaning the previous reference.\n\nAdditionally, the function originally stored the same nfsd_file\npointer in both fp-\u003efi_fds[O_RDONLY] and fp-\u003efi_rdeleg_file with\nonly a single reference. When put_deleg_file() runs, it clears\nfi_rdeleg_file and calls nfs4_file_put_access() to release the file.\n\nHowever, nfs4_file_put_access() only releases fi_fds[O_RDONLY] when\nthe fi_access[O_RDONLY] counter drops to zero. If another READ open\nexists on the file, the counter remains elevated and the nfsd_file\nreference from the delegation is never released. This potentially\ncauses open conflicts on that file.\n\nThen, on server shutdown, these leaks cause __nfsd_file_cache_purge()\nto encounter files with an elevated reference count that cannot be\ncleaned up, ultimately triggering a BUG() in kmem_cache_destroy()\nbecause there are still nfsd_file objects allocated in that cache."
        }
      ],
      "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 vulnerable path processes remotely supplied NFSv4.1 COMPOUND OPEN requests through the kernel NFS server. An attacker can trigger it over the network against an exposed NFS export.\nAC:L - The attacker can deterministically retain a READ open using WANT_NO_DELEG and then request an uncontended WRITE-only open that receives a write delegation. No race or condition outside the attacker\u0027s control is required.\nPR:N - A permissive read-write export using AUTH_SYS or AUTH_NULL can allow an unauthenticated client to establish a session and open an anonymous or world-accessible file. No pre-existing target-system privileges are required in this reasonable deployment.\nUI:N - The malicious client alone can issue the OPEN, DELEGRETURN, and CLOSE operations needed to create repeatable leaks. No victim user action is required.\nS:U - The leak and resulting denial of service remain within the NFS server and host kernel security authority. No virtualization, sandbox, or other security boundary is crossed.\nC:N - The bug retains valid nfsd_file objects and does not free, over-read, or expose their contents. It provides no memory-disclosure primitive.\nI:N - The overwritten pointer causes an orphaned reference rather than a dangling pointer or memory corruption. It provides no arbitrary write, control-flow hijack, or data-modification primitive.\nA:H - The leak can be repeated across attacker-accessible files, retaining file-cache objects and causing resource exhaustion or open conflicts. During final nfsd cache teardown, the remaining objects trigger the slab BUG/WARN path and can panic systems configured to treat warnings as fatal."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:11:59.817Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/c07dc84ed67c5a182273171639bacbbb87c12175"
        },
        {
          "url": "https://git.kernel.org/stable/c/8072e34e1387d03102b788677d491e2bcceef6f5"
        }
      ],
      "title": "nfsd: fix nfsd_file reference leak in nfsd4_add_rdaccess_to_wrdeleg()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-71090",
    "datePublished": "2026-01-13T15:34:51.777Z",
    "dateReserved": "2026-01-13T15:30:19.649Z",
    "dateUpdated": "2026-08-05T12:11:59.817Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-71090",
      "date": "2026-09-16",
      "epss": "0.00212",
      "percentile": "0.11685"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-71090\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-01-13T16:16:08.700\",\"lastModified\":\"2026-07-30T06:24:50.280\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnfsd: fix nfsd_file reference leak in nfsd4_add_rdaccess_to_wrdeleg()\\n\\nnfsd4_add_rdaccess_to_wrdeleg() unconditionally overwrites\\nfp-\u003efi_fds[O_RDONLY] with a newly acquired nfsd_file. However, if\\nthe client already has a SHARE_ACCESS_READ open from a previous OPEN\\noperation, this action overwrites the existing pointer without\\nreleasing its reference, orphaning the previous reference.\\n\\nAdditionally, the function originally stored the same nfsd_file\\npointer in both fp-\u003efi_fds[O_RDONLY] and fp-\u003efi_rdeleg_file with\\nonly a single reference. When put_deleg_file() runs, it clears\\nfi_rdeleg_file and calls nfs4_file_put_access() to release the file.\\n\\nHowever, nfs4_file_put_access() only releases fi_fds[O_RDONLY] when\\nthe fi_access[O_RDONLY] counter drops to zero. If another READ open\\nexists on the file, the counter remains elevated and the nfsd_file\\nreference from the delegation is never released. This potentially\\ncauses open conflicts on that file.\\n\\nThen, on server shutdown, these leaks cause __nfsd_file_cache_purge()\\nto encounter files with an elevated reference count that cannot be\\ncleaned up, ultimately triggering a BUG() in kmem_cache_destroy()\\nbecause there are still nfsd_file objects allocated in that cache.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\\n\\nnfsd: corregir fuga de referencia de nfsd_file en nfsd4_add_rdaccess_to_wrdeleg()\\n\\nnfsd4_add_rdaccess_to_wrdeleg() sobrescribe incondicionalmente fp-\u0026gt;fi_fds[O_RDONLY] con un nfsd_file reci\u00e9n adquirido. Sin embargo, si el cliente ya tiene una apertura SHARE_ACCESS_READ de una operaci\u00f3n OPEN anterior, esta acci\u00f3n sobrescribe el puntero existente sin liberar su referencia, dejando hu\u00e9rfana la referencia anterior.\\n\\nAdem\u00e1s, la funci\u00f3n originalmente almacenaba el mismo puntero nfsd_file tanto en fp-\u0026gt;fi_fds[O_RDONLY] como en fp-\u0026gt;fi_rdeleg_file con una sola referencia. Cuando se ejecuta put_deleg_file(), borra fi_rdeleg_file y llama a nfs4_file_put_access() para liberar el archivo.\\n\\nSin embargo, nfs4_file_put_access() solo libera fi_fds[O_RDONLY] cuando el contador fi_access[O_RDONLY] cae a cero. Si existe otra apertura READ en el archivo, el contador permanece elevado y la referencia nfsd_file de la delegaci\u00f3n nunca se libera. Esto potencialmente causa conflictos de apertura en ese archivo.\\n\\nLuego, al apagar el servidor, estas fugas hacen que __nfsd_file_cache_purge() encuentre archivos con un recuento de referencias elevado que no pueden ser limpiados, lo que finalmente dispara un BUG() en kmem_cache_destroy() porque todav\u00eda hay objetos nfsd_file asignados en esa cach\u00e9.\"}],\"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\":\"e7a8ebc305f26cab608e59a916a4ae89d6656c5f\",\"lessThan\":\"c07dc84ed67c5a182273171639bacbbb87c12175\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"e7a8ebc305f26cab608e59a916a4ae89d6656c5f\",\"lessThan\":\"8072e34e1387d03102b788677d491e2bcceef6f5\",\"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.17\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.17\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.4\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.19\",\"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},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H\",\"baseScore\":5.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":3.6}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"NVD-CWE-Other\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.17.1\",\"versionEndExcluding\":\"6.18.4\",\"matchCriteriaId\":\"312F9EA6-4B54-4FDE-90FB-1414FF6BD0E6\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.17:-:*:*:*:*:*:*\",\"matchCriteriaId\":\"7CC8B11D-82DC-4958-8DC7-BF5CC829A5E9\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc1:*:*:*:*:*:*\",\"matchCriteriaId\":\"17B67AA7-40D6-4AFA-8459-F200F3D7CFD1\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc2:*:*:*:*:*:*\",\"matchCriteriaId\":\"C47E4CC9-C826-4FA9-B014-7FE3D9B318B2\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc3:*:*:*:*:*:*\",\"matchCriteriaId\":\"F71D92C0-C023-48BD-B3B6-70B638EEE298\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc4:*:*:*:*:*:*\",\"matchCriteriaId\":\"13580667-0A98-40CC-B29F-D12790B91BDB\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc5:*:*:*:*:*:*\",\"matchCriteriaId\":\"CAD1FED7-CF48-47BF-AC7D-7B6FA3C065FC\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc6:*:*:*:*:*:*\",\"matchCriteriaId\":\"3EF854A1-ABB1-4E93-BE9A-44569EC76C0D\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc7:*:*:*:*:*:*\",\"matchCriteriaId\":\"F5DC0CA6-F0AF-4DDF-A882-3DADB9A886A7\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.19:rc8:*:*:*:*:*:*\",\"matchCriteriaId\":\"EB5B7DFC-C36B-45D8-922C-877569FDDF43\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/8072e34e1387d03102b788677d491e2bcceef6f5\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/c07dc84ed67c5a182273171639bacbbb87c12175\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-08-14T18:51:26+00:00",
      "cve": "CVE-2025-71090",
      "id": "CVE-2025-71090",
      "initial_release_date": "2025-01-01T00:00:00+00:00",
      "product_status:known_affected": "90",
      "product_status:known_not_affected": "184",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: nfsd: fix nfsd_file reference leak in nfsd4_add_rdaccess_to_wrdeleg()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-71090.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-30T01:41:00Z",
      "cve": "CVE-2025-71090",
      "id": "CVE-2025-71090",
      "initial_release_date": "2026-01-14T00:25:33Z",
      "product_status:known_not_affected": "436",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2025-71090",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2025-71090.json",
      "version": "10"
    }
  }
}



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…