{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-99218","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2026-09-25T10:25:14.401Z","datePublished":"2026-11-02T16:06:31.088Z","dateUpdated":"2026-11-03T19:12:53.426Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-11-03T19:12:53.426Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ncoredump: hold RCU while releasing parked threads\n\ncoredump_finish() releases the parked threads by clearing ->task in\ntheir core_thread entry and calling wake_up_process() on each of them.\nIt does that without holding a reference on the task and without being\ninside rcu.\n\nBut calling wake_up_process(task) without rcu here isn't safe. A parked\nthread doesn't need that wakeup to leave. A spurious wakeup or a\npreemption after the store is enough for the task to go away.\n\nSo if the coredump client is preempted between the store and\nwake_up_process() the thread can exit and be freed in the meantime and\ntry_to_wake_up() takes pi_lock in freed memory.\n\nHold rcu across the loop."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The UAF is in coredump_finish(), reached when a local dump signal is delivered via get_signal() -> vfs_coredump() -> do_coredump()/coredump_cleanup(). abort(), a user page-fault SIGSEGV, or tgkill() on the attacker's own thread group starts that path; no remote protocol supplies the curr->task pointer later handed to wake_up_process().\nAC:H - coredump_wait() parks siblings in coredump_task_exit() in TASK_IDLE (no TASK_WAKEKILL), so kill/tgkill cannot wake them. The UAF needs the dumper preempted between curr->task=NULL and wake_up_process() long enough for a spurious or freezer wakeup, full do_exit(), and an RCU GP via delayed_put_task_struct() — timing the attacker cannot force.\nPR:L - get_signal() dumps the caller's own dumpable thread group with no capability check. An ordinary user pthread_create()s a sibling and abort()s or faults into vfs_coredump(); coredump_skip() only bails on TASK_DUMPABLE_OFF, which a normal user process is not.\nUI:N - The attacker creates the extra thread and delivers the dump signal inside their own process; no other user must mount media, open a file, or otherwise act.\nS:U - try_to_wake_up() on the freed task_struct corrupts host kernel scheduler state inside the same kernel; this is ordinary in-kernel UAF impact, not a VM, IOMMU, or sandbox escape.\nC:H - wake_up_process() -> try_to_wake_up() reads __state, on_rq, and sched_class from the task_struct after delayed_put_task_struct() has freed it; a sprayable slab UAF read is High confidentiality per UAF guidance.\nI:H - try_to_wake_up() takes raw_spin_lock on the freed p->pi_lock, writes __state, and calls p->sched_class->enqueue_task(); reclaiming the task_struct slab yields a write and control-flow primitive.\nA:H - Taking pi_lock in memory already freed by delayed_put_task_struct(), as the fix describes, oopses or panics even without a successful spray, so availability is High."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/coredump.c"],"versions":[{"version":"a94e2d408eaedbd85aae259621d46fafc10479a2","lessThan":"fd0fbe84312fda2fc187428c92c50b7d03a9d24c","status":"affected","versionType":"git"},{"version":"a94e2d408eaedbd85aae259621d46fafc10479a2","lessThan":"71146c437bae59e5280f657965dc6d006ee3989b","status":"affected","versionType":"git"},{"version":"a94e2d408eaedbd85aae259621d46fafc10479a2","lessThan":"0fce73efee40c65ce26641c5d93942462f9e8307","status":"affected","versionType":"git"},{"version":"a94e2d408eaedbd85aae259621d46fafc10479a2","lessThan":"16e94ed90b1b02398e044d41fd1db34828daa08e","status":"affected","versionType":"git"},{"version":"a94e2d408eaedbd85aae259621d46fafc10479a2","lessThan":"a0f09ff4c6b93312e565cfe75d76c3a551a3ec4c","status":"affected","versionType":"git"},{"version":"a94e2d408eaedbd85aae259621d46fafc10479a2","lessThan":"b0eca0edddf4c1dbaf6d1f6a8636b4235f5bc573","status":"affected","versionType":"git"},{"version":"a94e2d408eaedbd85aae259621d46fafc10479a2","lessThan":"61d58591aa0188bf2463e263962256316ff8b576","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/coredump.c"],"versions":[{"version":"2.6.27","status":"affected"},{"version":"0","lessThan":"2.6.27","status":"unaffected","versionType":"semver"},{"version":"6.1.191","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.161","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.115","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.18.60","lessThanOrEqual":"6.18.*","status":"unaffected","versionType":"semver"},{"version":"7.2.14","lessThanOrEqual":"7.2.*","status":"unaffected","versionType":"semver"},{"version":"7.3.1","lessThanOrEqual":"7.3.*","status":"unaffected","versionType":"semver"},{"version":"7.4-rc1","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":"2.6.27","versionEndExcluding":"6.1.191"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.27","versionEndExcluding":"6.6.161"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.27","versionEndExcluding":"6.12.115"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.27","versionEndExcluding":"6.18.60"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.27","versionEndExcluding":"7.2.14"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.27","versionEndExcluding":"7.3.1"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"2.6.27","versionEndExcluding":"7.4-rc1"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/fd0fbe84312fda2fc187428c92c50b7d03a9d24c"},{"url":"https://git.kernel.org/stable/c/71146c437bae59e5280f657965dc6d006ee3989b"},{"url":"https://git.kernel.org/stable/c/0fce73efee40c65ce26641c5d93942462f9e8307"},{"url":"https://git.kernel.org/stable/c/16e94ed90b1b02398e044d41fd1db34828daa08e"},{"url":"https://git.kernel.org/stable/c/a0f09ff4c6b93312e565cfe75d76c3a551a3ec4c"},{"url":"https://git.kernel.org/stable/c/b0eca0edddf4c1dbaf6d1f6a8636b4235f5bc573"},{"url":"https://git.kernel.org/stable/c/61d58591aa0188bf2463e263962256316ff8b576"}],"title":"coredump: hold RCU while releasing parked threads","x_generator":{"engine":"bippy-1.2.0"}}}}