{"id":"CVE-2024-42250","state":"PUBLISHED","title":"cachefiles: add missing lock protection when polling","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ncachefiles: add missing lock protection when polling\n\nAdd missing lock protection in poll routine when iterating xarray,\notherwise:\n\nEven with RCU read lock held, only the slot of the radix tree is\nensured to be pinned there, while the data structure (e.g. struct\ncachefiles_req) stored in the slot has no such guarantee.  The poll\nroutine will iterate the radix tree and dereference cachefiles_req\naccordingly.  Thus RCU read lock is not adequate in this case and\nspinlock is needed here.","publishedAt":"2024-08-07T15:14:33.997Z","updatedAt":"2026-08-05T11:36:04.678Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/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":"0e19a18f998dcabe8be590e0b39660a1f230209b","status":"affected","lessThan":"97cfd5e20ddc2e33e16ce369626ce76c9a475fd7","versionType":"git"},{"version":"18943864342705fa18dd4e6b8d608491fec81f6e","status":"affected","lessThan":"6bb6bd3dd6f382dfd36220d4b210a0c77c066651","versionType":"git"},{"version":"b817e22b2e91257ace32a6768c3c003faeaa1c5c","status":"affected","lessThan":"8eadcab7f3dd809edbe5ae20533ff843dfea3a07","versionType":"git"},{"version":"b817e22b2e91257ace32a6768c3c003faeaa1c5c","status":"affected","lessThan":"cf5bb09e742a9cf6349127e868329a8f69b7a014","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/cachefiles/daemon.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.8","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.8","versionType":"semver"},{"version":"6.9.10","status":"unaffected","lessThanOrEqual":"6.9.*","versionType":"semver"},{"version":"6.10","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/cachefiles/daemon.c"]}],"references":["https://git.kernel.org/stable/c/97cfd5e20ddc2e33e16ce369626ce76c9a475fd7","https://git.kernel.org/stable/c/6bb6bd3dd6f382dfd36220d4b210a0c77c066651","https://git.kernel.org/stable/c/8eadcab7f3dd809edbe5ae20533ff843dfea3a07","https://git.kernel.org/stable/c/cf5bb09e742a9cf6349127e868329a8f69b7a014","https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"],"weaknesses":[],"ingestedAt":"2026-10-29T20:07:47.831Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/42xxx/CVE-2024-42250.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-42250","state":"PUBLISHED","datePublished":"2024-08-07T15:14:33.997Z","dateUpdated":"2026-08-05T11:36:04.678Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-07-30T07:40:12.256Z"},"containers":{"cna":{"title":"cachefiles: add missing lock protection when polling","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ncachefiles: add missing lock protection when polling\n\nAdd missing lock protection in poll routine when iterating xarray,\notherwise:\n\nEven with RCU read lock held, only the slot of the radix tree is\nensured to be pinned there, while the data structure (e.g. struct\ncachefiles_req) stored in the slot has no such guarantee.  The poll\nroutine will iterate the radix tree and dereference cachefiles_req\naccordingly.  Thus RCU read lock is not adequate in this case and\nspinlock is needed here."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"0e19a18f998dcabe8be590e0b39660a1f230209b","status":"affected","lessThan":"97cfd5e20ddc2e33e16ce369626ce76c9a475fd7","versionType":"git"},{"version":"18943864342705fa18dd4e6b8d608491fec81f6e","status":"affected","lessThan":"6bb6bd3dd6f382dfd36220d4b210a0c77c066651","versionType":"git"},{"version":"b817e22b2e91257ace32a6768c3c003faeaa1c5c","status":"affected","lessThan":"8eadcab7f3dd809edbe5ae20533ff843dfea3a07","versionType":"git"},{"version":"b817e22b2e91257ace32a6768c3c003faeaa1c5c","status":"affected","lessThan":"cf5bb09e742a9cf6349127e868329a8f69b7a014","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/cachefiles/daemon.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.8","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.8","versionType":"semver"},{"version":"6.9.10","status":"unaffected","lessThanOrEqual":"6.9.*","versionType":"semver"},{"version":"6.10","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/cachefiles/daemon.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/97cfd5e20ddc2e33e16ce369626ce76c9a475fd7"},{"url":"https://git.kernel.org/stable/c/6bb6bd3dd6f382dfd36220d4b210a0c77c066651"},{"url":"https://git.kernel.org/stable/c/8eadcab7f3dd809edbe5ae20533ff843dfea3a07"},{"url":"https://git.kernel.org/stable/c/cf5bb09e742a9cf6349127e868329a8f69b7a014"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The race is driven through local file I/O on an EROFS-over-fscache on-demand mount and the local `/dev/cachefiles` daemon interface; no network-supplied data reaches the vulnerable poll iterator.\nAC:L - The attacker creates both sides of the race — each cache-miss read allocates a request and calls `wake_up_all(&cache->daemon_pollwq)`, forcing the daemon into the unlocked xarray walk, and the same task performs the `kfree(req)` on completion — and can retry indefinitely while heap-spraying the freed slab.\nPR:L - An unprivileged local user or container tenant only needs read access to files on the already-mounted on-demand cache; the CAP_SYS_ADMIN-held daemon fd is a normal running service in these deployments, not something the attacker must obtain.\nUI:N - No victim action is required — the cachefiles daemon polls continuously as part of its normal operation and is woken automatically by the attacker's own request submissions.\nS:U - The use-after-free occurs in kernel memory and its impact stays within the kernel's security authority; no VM, IOMMU, or hypervisor boundary is crossed.\nC:H - `req->object` is at offset 0 of the freed object, so a reallocated/sprayed slab yields an attacker-chosen pointer that is dereferenced twice, and the resulting `state` comparison is leaked back as the EPOLLIN bit — a repeatable arbitrary-address read oracle.\nI:H - A slab use-after-free with a fully attacker-controllable first-field pointer is a classic primitive for heap grooming and control-flow/data corruption, so integrity impact is High per use-after-free handling.\nA:H - Dereferencing the stale or wild `req->object` chain reliably produces a kernel oops/panic, taking down the host or container node."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T11:36:04.678Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8","versionEndExcluding":"6.9.10"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8","versionEndExcluding":"6.10"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-42250","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-09-10T16:13:18.948935Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-09-11T17:34:30.655Z"}},{"title":"CVE Program Container","references":[{"url":"https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2025-11-03T22:02:51.030Z"}}]}}}