{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-36958","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-05-30T15:25:07.080Z","datePublished":"2024-05-30T15:35:51.033Z","dateUpdated":"2026-08-05T11:32:13.620Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:32:13.620Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nNFSD: Fix nfsd4_encode_fattr4() crasher\n\nEnsure that args.acl is initialized early. It is used in an\nunconditional call to kfree() on the way out of\nnfsd4_encode_fattr4()."}],"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 defect is in the in-kernel NFSv4 server's attribute encoder, driven directly by client-supplied GETATTR/READDIR/VERIFY operations inside a COMPOUND arriving on TCP port 2049. A remote peer acting as an NFS client drives the entire path with no local access.\nAC:L - The attacker supplies the attribute bitmap that selects the early-exit path and can independently create the triggering condition (referral export lookup, or holding a write delegation and stalling CB_GETATTR so nfsd4_deleg_getattr_conflict returns nfserr_jukebox), and can repeat it at will — including once per entry in a READDIR loop for stack grooming.\nPR:N - PUTROOTFH requires no clientid or prior state establishment and GETATTR is flagged ALLOWED_ON_ABSENT_FS, so a single compound reaches the code; under the ubiquitous sec=sys (AUTH_SYS) flavor there is no cryptographic authentication at all, the client merely asserts a uid.\nUI:N - The attacker issues the NFSv4 COMPOUND requests and holds any conflicting delegation entirely on its own. No administrator or other user on the server needs to act.\nS:U - The bad free corrupts the kernel's own slab allocator within the same security authority as the nfsd kthread. No VM, IOMMU, or sandbox boundary is crossed.\nC:H - kfree() on an uninitialized stack pointer is an arbitrary-free primitive: freeing a live slab object yields a use-after-free with a stale reference to kernel objects, the standard route to disclosing arbitrary kernel memory. The stack slot lies ~280 bytes deep in the frame and is influenced by preceding XDR-decode and VFS frames on the reused nfsd thread stack, making the freed target selectable.\nI:H - An arbitrary free is a full memory-corruption primitive — the reclaimed slab object can be sprayed with attacker-chosen data from concurrent NFS requests, producing a write primitive and control-flow hijack in kernel context. This is at least as strong as a plain use-after-free, which is scored High.\nA:H - kfree() on arbitrary stack residue — a stack address, a non-slab pointer, or an already-freed object — triggers slab corruption, an allocator BUG, or an oops in the nfsd kthread, panicking the server. The trigger is repeatable on demand, so the NFS server can be taken down reliably."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/nfsd/nfs4xdr.c"],"versions":[{"version":"83ab8678ad0c6f27594c716cafe59c8bbd5e49ef","lessThan":"6a7b07689af6e4e023404bf69b1230f43b2a15bc","status":"affected","versionType":"git"},{"version":"83ab8678ad0c6f27594c716cafe59c8bbd5e49ef","lessThan":"18180a4550d08be4eb0387fe83f02f703f92d4e7","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/nfsd/nfs4xdr.c"],"versions":[{"version":"6.7","status":"affected"},{"version":"0","lessThan":"6.7","status":"unaffected","versionType":"semver"},{"version":"6.8.10","lessThanOrEqual":"6.8.*","status":"unaffected","versionType":"semver"},{"version":"6.9","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"6.8.10"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"6.9"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/6a7b07689af6e4e023404bf69b1230f43b2a15bc"},{"url":"https://git.kernel.org/stable/c/18180a4550d08be4eb0387fe83f02f703f92d4e7"}],"title":"NFSD: Fix nfsd4_encode_fattr4() crasher","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2024-06-05T17:56:01.903587Z","id":"CVE-2024-36958","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2024-06-05T18:14:12.907Z"}},{"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/6a7b07689af6e4e023404bf69b1230f43b2a15bc","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/18180a4550d08be4eb0387fe83f02f703f92d4e7","tags":["x_transferred"]},{"url":"https://security.netapp.com/advisory/ntap-20250404-0007/"}],"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2025-04-04T23:03:04.876Z"}}]}}