{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-35869","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-05-17T13:50:33.108Z","datePublished":"2024-05-19T08:34:27.645Z","dateUpdated":"2026-08-05T11:30:31.558Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:30:31.558Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nsmb: client: guarantee refcounted children from parent session\n\nAvoid potential use-after-free bugs when walking DFS referrals,\nmounting and performing DFS failover by ensuring that all children\nfrom parent @tcon->ses are also refcounted.  They're all needed across\nthe entire DFS mount.  Get rid of @tcon->dfs_ses_list while we're at\nit, too."}],"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 vulnerable refcounting is driven entirely by DFS referral responses from a remote SMB peer — the server chooses the nesting depth, target types, interlink/storage flags, and referral TTL that produce the unbalanced `dfs_root_ses` chain. A malicious/compromised SMB server, an SMB MITM, or an attacker controlling DNS for DFS target hostnames reaches this over the network.\nAC:L - This is a deterministic refcount imbalance, not a race: the server simply returns a referral topology three or more levels deep (limit is MAX_NESTED_LINKS=8) and can force the failover/reconnect path arbitrarily often by dropping TCP or setting a short TTL. Heap grooming for the subsequent UAF is routine and fully under attacker control.\nPR:N - The remote server holds no privileges on the victim host — CIFS authenticates the client to the server, not the reverse, so nothing gates the referral data on the way to the vulnerable code. The runtime `dfs_cache_refresh()` worker and DFS failover run in kernel context with no local account required at all; even the local automount path (`cifs_d_automount`) has no capability check.\nUI:N - Once a normal cifs DFS mount exists (fstab/autofs, standing configuration, not a per-exploit action), the server triggers the vulnerable failover and `dfs_cache_work` refresh paths on its own schedule with no victim participation. The automount path is likewise reached by ordinary directory traversal, not a deliberate security decision.\nS:U - The corrupted `struct cifs_ses` objects and the resulting control-flow hijack are confined to the kernel's own security authority. No VM, IOMMU, or sandbox boundary is crossed.\nC:H - Use-after-free of `struct cifs_ses`, which is dereferenced for `ses->server`, `ses->tcon_ipc`, `ses->Suid` and holds SMB credentials and signing/session keys; reclaiming the freed slab object yields an arbitrary-read primitive and leaks sensitive session material.\nI:H - The DFS failover path performs `server->ops->tree_connect(...)` — an indirect call through a function pointer read out of the freed session's `server` field — giving a direct control-flow hijack primitive once the object is reclaimed with attacker-groomed heap data.\nA:H - Dereferencing and spin-locking a freed `struct cifs_ses` from the reconnect path and the `dfs_cache_refresh` workqueue causes kernel oops/panic, and the double-put on the mount error path corrupts the session list. The server can trigger it repeatedly."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/smb/client/cifsglob.h","fs/smb/client/cifsproto.h","fs/smb/client/connect.c","fs/smb/client/dfs.c","fs/smb/client/dfs.h","fs/smb/client/dfs_cache.c","fs/smb/client/misc.c"],"versions":[{"version":"8e3554150d6c80a84b3cb046615d1a0e943811dc","lessThan":"645f332c6b63499cc76197f9b6bffcc659ba64cc","status":"affected","versionType":"git"},{"version":"8e3554150d6c80a84b3cb046615d1a0e943811dc","lessThan":"e1db9ae87b7148c021daee1fcc4bc71b2ac58a79","status":"affected","versionType":"git"},{"version":"8e3554150d6c80a84b3cb046615d1a0e943811dc","lessThan":"062a7f0ff46eb57aff526897bd2bebfdb1d3046a","status":"affected","versionType":"git"},{"version":"f30d226bcc9f0e2d97b4a6e94c43a28148fbeab6","status":"affected","versionType":"git"},{"version":"c082c3be0f96e759ff2e361d929832fda0b93851","status":"affected","versionType":"git"},{"version":"6.2.15","lessThan":"6.3","status":"affected","versionType":"semver"},{"version":"6.3.2","lessThan":"6.4","status":"affected","versionType":"semver"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/smb/client/cifsglob.h","fs/smb/client/cifsproto.h","fs/smb/client/connect.c","fs/smb/client/dfs.c","fs/smb/client/dfs.h","fs/smb/client/dfs_cache.c","fs/smb/client/misc.c"],"versions":[{"version":"6.4","status":"affected"},{"version":"0","lessThan":"6.4","status":"unaffected","versionType":"semver"},{"version":"6.6.29","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.8.5","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.4","versionEndExcluding":"6.6.29"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.4","versionEndExcluding":"6.8.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.4","versionEndExcluding":"6.9"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.2.15"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.3.2"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/645f332c6b63499cc76197f9b6bffcc659ba64cc"},{"url":"https://git.kernel.org/stable/c/e1db9ae87b7148c021daee1fcc4bc71b2ac58a79"},{"url":"https://git.kernel.org/stable/c/062a7f0ff46eb57aff526897bd2bebfdb1d3046a"}],"title":"smb: client: guarantee refcounted children from parent session","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"problemTypes":[{"descriptions":[{"type":"CWE","cweId":"CWE-416","lang":"en","description":"CWE-416 Use After Free"}]}],"affected":[{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"1da177e4c3f4","status":"affected","lessThan":"645f332c6b63","versionType":"custom"}]},{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"1da177e4c3f4","status":"affected","lessThan":"e1db9ae87b71","versionType":"custom"}]},{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"1da177e4c3f4","status":"affected","lessThan":"062a7f0ff46e","versionType":"custom"}]},{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"6.6.29","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"custom"}]},{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"6.8.5","status":"unaffected","lessThanOrEqual":"6.8.*","versionType":"custom"}]},{"vendor":"linux","product":"linux_kernel","cpes":["cpe:2.3:o:linux:linux_kernel:-:*:*:*:*:*:*:*"],"defaultStatus":"unknown","versions":[{"version":"6.9","status":"unaffected"}]}],"metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":8.4,"attackVector":"LOCAL","baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","integrityImpact":"HIGH","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"HIGH","privilegesRequired":"NONE","confidentialityImpact":"HIGH"}},{"other":{"type":"ssvc","content":{"timestamp":"2024-05-24T15:01:40.323674Z","id":"CVE-2024-35869","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2025-01-16T21:16:06.861Z"}},{"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2024-08-02T03:21:48.968Z"},"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/645f332c6b63499cc76197f9b6bffcc659ba64cc","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/e1db9ae87b7148c021daee1fcc4bc71b2ac58a79","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/062a7f0ff46eb57aff526897bd2bebfdb1d3046a","tags":["x_transferred"]}]}]}}