{"id":"CVE-2025-40212","state":"PUBLISHED","title":"nfsd: fix refcount leak in nfsd_set_fh_dentry()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: fix refcount leak in nfsd_set_fh_dentry()\n\nnfsd exports a \"pseudo root filesystem\" which is used by NFSv4 to find\nthe various exported filesystems using LOOKUP requests from a known root\nfilehandle.  NFSv3 uses the MOUNT protocol to find those exported\nfilesystems and so is not given access to the pseudo root filesystem.\n\nIf a v3 (or v2) client uses a filehandle from that filesystem,\nnfsd_set_fh_dentry() will report an error, but still stores the export\nin \"struct svc_fh\" even though it also drops the reference (exp_put()).\nThis means that when fh_put() is called an extra reference will be dropped\nwhich can lead to use-after-free and possible denial of service.\n\nNormal NFS usage will not provide a pseudo-root filehandle to a v3\nclient.  This bug can only be triggered by the client synthesising an\nincorrect filehandle.\n\nTo fix this we move the assignments to the svc_fh later, after all\npossible error cases have been detected.","publishedAt":"2025-11-24T13:04:20.888Z","updatedAt":"2026-08-05T12:08:37.417Z","severity":{"score":9.8,"label":"Critical","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"ef7f6c4904d03ccd7478e1ac20ed75f79c4ac444","status":"affected","lessThan":"b6bc86ce3944b10b9fc181fc00c1a520a20ed965","versionType":"git"},{"version":"ef7f6c4904d03ccd7478e1ac20ed75f79c4ac444","status":"affected","lessThan":"c83d7365cec5eb5ebeeee2a72e29b4ca58a7e4c2","versionType":"git"},{"version":"ef7f6c4904d03ccd7478e1ac20ed75f79c4ac444","status":"affected","lessThan":"8a7348a9ed70bda1c1f51d3f1815bcbdf9f3b38c","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/nfsd/nfsfh.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.12","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.12","versionType":"semver"},{"version":"6.12.59","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.17.9","status":"unaffected","lessThanOrEqual":"6.17.*","versionType":"semver"},{"version":"6.18","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/nfsd/nfsfh.c"]}],"references":["https://git.kernel.org/stable/c/b6bc86ce3944b10b9fc181fc00c1a520a20ed965","https://git.kernel.org/stable/c/c83d7365cec5eb5ebeeee2a72e29b4ca58a7e4c2","https://git.kernel.org/stable/c/8a7348a9ed70bda1c1f51d3f1815bcbdf9f3b38c"],"weaknesses":[],"ingestedAt":"2026-10-29T20:09:09.358Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2025/40xxx/CVE-2025-40212.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-40212","state":"PUBLISHED","datePublished":"2025-11-24T13:04:20.888Z","dateUpdated":"2026-08-05T12:08:37.417Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2025-04-16T07:20:57.179Z"},"containers":{"cna":{"title":"nfsd: fix refcount leak in nfsd_set_fh_dentry()","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: fix refcount leak in nfsd_set_fh_dentry()\n\nnfsd exports a \"pseudo root filesystem\" which is used by NFSv4 to find\nthe various exported filesystems using LOOKUP requests from a known root\nfilehandle.  NFSv3 uses the MOUNT protocol to find those exported\nfilesystems and so is not given access to the pseudo root filesystem.\n\nIf a v3 (or v2) client uses a filehandle from that filesystem,\nnfsd_set_fh_dentry() will report an error, but still stores the export\nin \"struct svc_fh\" even though it also drops the reference (exp_put()).\nThis means that when fh_put() is called an extra reference will be dropped\nwhich can lead to use-after-free and possible denial of service.\n\nNormal NFS usage will not provide a pseudo-root filehandle to a v3\nclient.  This bug can only be triggered by the client synthesising an\nincorrect filehandle.\n\nTo fix this we move the assignments to the svc_fh later, after all\npossible error cases have been detected."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"ef7f6c4904d03ccd7478e1ac20ed75f79c4ac444","status":"affected","lessThan":"b6bc86ce3944b10b9fc181fc00c1a520a20ed965","versionType":"git"},{"version":"ef7f6c4904d03ccd7478e1ac20ed75f79c4ac444","status":"affected","lessThan":"c83d7365cec5eb5ebeeee2a72e29b4ca58a7e4c2","versionType":"git"},{"version":"ef7f6c4904d03ccd7478e1ac20ed75f79c4ac444","status":"affected","lessThan":"8a7348a9ed70bda1c1f51d3f1815bcbdf9f3b38c","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/nfsd/nfsfh.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.12","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.12","versionType":"semver"},{"version":"6.12.59","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.17.9","status":"unaffected","lessThanOrEqual":"6.17.*","versionType":"semver"},{"version":"6.18","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/nfsd/nfsfh.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/b6bc86ce3944b10b9fc181fc00c1a520a20ed965"},{"url":"https://git.kernel.org/stable/c/c83d7365cec5eb5ebeeee2a72e29b4ca58a7e4c2"},{"url":"https://git.kernel.org/stable/c/8a7348a9ed70bda1c1f51d3f1815bcbdf9f3b38c"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":9.8,"baseSeverity":"CRITICAL"},"scenarios":[{"lang":"en","value":"AV:N - The bug is in the in-kernel NFS server (nfsd) and is triggered by a crafted filehandle sent by a remote NFSv3/v2 client over the network (TCP/UDP port 2049).\nAC:L - The attacker fully controls the synthesized filehandle and triggers the double exp_put deterministically with a single request; the required V4ROOT pseudo-root export exists by default whenever NFSv4 is enabled, and no race is involved.\nPR:N - NFS clients are unauthenticated at the network level (AUTH_SYS/AUTH_NULL merely assert an identity), and the bug requires no OS privileges on the server — a malicious client simply synthesizes an invalid pseudo-root filehandle.\nUI:N - Exploitation requires only that the attacker send a crafted NFSv3 request; no action by any local user or administrator is needed.\nS:U - The use-after-free is confined to the kernel's own memory/security authority with no crossing of a trust boundary such as a VM or IOMMU.\nC:H - The over-released svc_export becomes a use-after-free object; per UAF scoring the attacker can gain control over freed/reallocated memory contents, enabling arbitrary kernel information disclosure.\nI:H - A use-after-free of a heap object (svc_export) enables heap grooming and write primitives against the reallocated memory, supporting kernel integrity compromise and control-flow hijacking.\nA:H - The premature free of an in-use svc_export reliably causes use-after-free crashes/oops, and repeated requests can drive the refcount underflow to panic the server."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T12:08:37.417Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.12","versionEndExcluding":"6.12.59"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.12","versionEndExcluding":"6.17.9"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.12","versionEndExcluding":"6.18"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}