{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-21919","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-12-29T08:45:45.787Z","datePublished":"2025-04-01T15:40:54.075Z","dateUpdated":"2026-09-08T08:40:56.687Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:55:20.805Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nsched/fair: Fix potential memory corruption in child_cfs_rq_on_list\n\nchild_cfs_rq_on_list attempts to convert a 'prev' pointer to a cfs_rq.\nThis 'prev' pointer can originate from struct rq's leaf_cfs_rq_list,\nmaking the conversion invalid and potentially leading to memory\ncorruption. Depending on the relative positions of leaf_cfs_rq_list and\nthe task group (tg) pointer within the struct, this can cause a memory\nfault or access garbage data.\n\nThe issue arises in list_add_leaf_cfs_rq, where both\ncfs_rq->leaf_cfs_rq_list and rq->leaf_cfs_rq_list are added to the same\nleaf list. Also, rq->tmp_alone_branch can be set to rq->leaf_cfs_rq_list.\n\nThis adds a check `if (prev == &rq->leaf_cfs_rq_list)` after the main\nconditional in child_cfs_rq_on_list. This ensures that the container_of\noperation will convert a correct cfs_rq struct.\n\nThis check is sufficient because only cfs_rqs on the same CPU are added\nto the list, so verifying the 'prev' pointer against the current rq's list\nhead is enough.\n\nFixes a potential memory corruption issue that due to current struct\nlayout might not be manifesting as a crash but could lead to unpredictable\nbehavior when the layout changes."}],"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 defect is in core CFS scheduler code (`kernel/sched/fair.c`) reached through ordinary local scheduling activity, cgroup manipulation, and CFS-bandwidth unthrottling; there is no network-facing input path. Exploitation requires the ability to run code on the machine.\nAC:L - The invalid `container_of()` executes deterministically every time the examined cfs_rq is first on `rq->leaf_cfs_rq_list` or `rq->tmp_alone_branch` is at its reset value, which is the normal steady state — no race to win and no unusual precondition. An attacker reliably drives it by creating/loading a cgroup in a delegated subtree and letting the load balancer or bandwidth timer run.\nPR:L - No capability check, credential test, or privileged gate exists on `__update_blocked_fair()` or `tg_unthrottle_up()`; an ordinary unprivileged user reaches both via normal task execution and via cgroup v2 cpu/cpu.max controls in a systemd- or container-delegated subtree. Real root in the init namespace is not needed.\nUI:N - The vulnerable path runs from the periodic load-balance softirq and the CFS bandwidth timer, with no victim action of any kind required. The attacker's own workload is sufficient to trigger it.\nS:U - The bogus pointer arithmetic, out-of-bounds read, and any resulting fault all occur within the kernel's own security authority on the same host. No VM, IOMMU, or sandbox boundary is crossed.\nC:H - The type-confused `struct task_group *` is dereferenced at `offsetof(task_group, parent)` from a `list_head` address, which reads out of bounds past the end of the `cfs_rq` slab object into adjacent heap memory whose contents an attacker can influence via heap grooming. This is an unbounded kernel-memory read at an offset determined by struct layout rather than by any bounds check.\nI:H - This is a genuine type confusion — a `struct rq` list head reinterpreted as a member of `struct cfs_rq`, yielding a fabricated object pointer that is dereferenced — which upstream explicitly characterizes as \"potential memory corruption.\" Under differing struct layouts the fabricated `tg` pointer is an arbitrary non-pointer value, so the corrupted access is not confined to a benign read.\nA:H - The commit states the invalid conversion \"can cause a memory fault or access garbage data\"; dereferencing a wild `tg` pointer inside the scheduler with the rq lock held produces an oops or panic, and the slab-out-of-bounds read triggers a KASAN report that panics on hardened configurations. A fault in `__update_blocked_fair()` under the runqueue lock is unrecoverable for the affected CPU."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["kernel/sched/fair.c"],"versions":[{"version":"fdaba61ef8a268d4136d0a113d153f7a89eb9984","lessThan":"5cb300dcdd27e6a351ac02541e0231261c775852","status":"affected","versionType":"git"},{"version":"fdaba61ef8a268d4136d0a113d153f7a89eb9984","lessThan":"000c9ee43928f2ce68a156dd40bab7616256f4dd","status":"affected","versionType":"git"},{"version":"fdaba61ef8a268d4136d0a113d153f7a89eb9984","lessThan":"9cc7f0018609f75a349e42e3aebc3b0e905ba775","status":"affected","versionType":"git"},{"version":"fdaba61ef8a268d4136d0a113d153f7a89eb9984","lessThan":"b5741e4b9ef3567613b2351384f91d3f16e59986","status":"affected","versionType":"git"},{"version":"fdaba61ef8a268d4136d0a113d153f7a89eb9984","lessThan":"e1dd09df30ba86716cb2ffab97dc35195c01eb8f","status":"affected","versionType":"git"},{"version":"fdaba61ef8a268d4136d0a113d153f7a89eb9984","lessThan":"3b4035ddbfc8e4521f85569998a7569668cccf51","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["kernel/sched/fair.c"],"versions":[{"version":"5.13","status":"affected"},{"version":"0","lessThan":"5.13","status":"unaffected","versionType":"semver"},{"version":"5.15.179","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.131","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.83","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.19","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.13.7","lessThanOrEqual":"6.13.*","status":"unaffected","versionType":"semver"},{"version":"6.14","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":"5.13","versionEndExcluding":"5.15.179"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.1.131"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.6.83"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.12.19"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.13.7"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.14"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/5cb300dcdd27e6a351ac02541e0231261c775852"},{"url":"https://git.kernel.org/stable/c/000c9ee43928f2ce68a156dd40bab7616256f4dd"},{"url":"https://git.kernel.org/stable/c/9cc7f0018609f75a349e42e3aebc3b0e905ba775"},{"url":"https://git.kernel.org/stable/c/b5741e4b9ef3567613b2351384f91d3f16e59986"},{"url":"https://git.kernel.org/stable/c/e1dd09df30ba86716cb2ffab97dc35195c01eb8f"},{"url":"https://git.kernel.org/stable/c/3b4035ddbfc8e4521f85569998a7569668cccf51"}],"title":"sched/fair: Fix potential memory corruption in child_cfs_rq_on_list","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":7.8,"attackVector":"LOCAL","baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","integrityImpact":"HIGH","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"HIGH","privilegesRequired":"LOW","confidentialityImpact":"HIGH"}},{"other":{"type":"ssvc","content":{"id":"CVE-2025-21919","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2025-10-01T19:23:59.713530Z"}}}],"problemTypes":[{"descriptions":[{"lang":"en","type":"CWE","cweId":"CWE-787","description":"CWE-787 Out-of-bounds Write"}]}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2025-10-01T19:26:33.844Z"}},{"title":"CVE Program Container","references":[{"url":"https://lists.debian.org/debian-lts-announce/2025/05/msg00045.html"}],"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2025-11-03T19:39:11.086Z"}},{"x_adpType":"supplier","providerMetadata":{"orgId":"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e","shortName":"siemens-SADP","dateUpdated":"2026-09-08T08:40:56.687Z"},"affected":[{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518-4 PN/DP MFP","versions":[{"status":"affected","version":"V3.1.6","lessThan":"*","versionType":"custom"}],"defaultStatus":"unknown"},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518-4 PN/DP MFP","versions":[{"status":"affected","version":"V3.1.6","lessThan":"*","versionType":"custom"}],"defaultStatus":"unknown"},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP","versions":[{"status":"affected","version":"V3.1.6","lessThan":"*","versionType":"custom"}],"defaultStatus":"unknown"},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP","versions":[{"status":"affected","version":"V3.1.6","lessThan":"*","versionType":"custom"}],"defaultStatus":"unknown"},{"vendor":"Siemens","product":"SIPLUS S7-1500 CPU 1518-4 PN/DP MFP","versions":[{"status":"affected","version":"V3.1.6","lessThan":"*","versionType":"custom"}],"defaultStatus":"unknown"}],"references":[{"url":"https://cert-portal.siemens.com/productcert/html/ssa-019113.html"}]}]}}