CVE-2026-97903
Received Received - Intake

Reference Leak in Linux Kernel PID Handling

Vulnerability report for CVE-2026-97903, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-09-25

Last updated on: 2026-09-25

Assigner: kernel.org

Description

In the Linux kernel, the following vulnerability has been resolved: exit: hold a reference to thread_pid across proc_flush_pid Commit 0a36bad01731 ("release_task: kill the no longer needed get/put_pid(thread_pid)") removed the reference around proc_flush_pid(). It assumed that free_pids(post.pids) at the end of release_task() would keep thread_pid alive until then. That assumption is wrong. __change_pid() only records a detached PID in post.pids when pid_has_task() is false for every PIDTYPE. If another task still uses the exiting task's PID as its process group or session ID, __unhash_process() removes the exiting task's PIDTYPE_PID link but leaves the PID out of post.pids. release_task() therefore holds no reference to it after dropping tasklist_lock. The other task can then remove the remaining PIDTYPE links. Its free_pids() call schedules delayed_put_pid(), and the RCU callback can free the PID before the first release_task() reaches proc_flush_pid(). An unprivileged reproducer races wait4(-1) against setsid() to trigger this ordering. Three of three fresh v7.2 KASAN boots reported: BUG: KASAN: slab-use-after-free in proc_invalidate_siblings_dcache+0x3e2/0x3f0 Read of size 8 by task h7_pid_reaper/1921 Call Trace: proc_invalidate_siblings_dcache release_task wait_consider_task __do_wait do_wait kernel_wait4 Freed by task 0: kmem_cache_free put_pid delayed_put_pid rcu_core Last potentially related work creation: __call_rcu_common free_pids ksys_setsid KASAN identified a 144-byte object from the pid cache and located the bad read 80 bytes into the freed object, matching pid->inodes. With an explicit reference, three of three fresh boots completed without a KASAN report. The concurrent RCU callback dropped its reference while proc_flush_pid() was protected, and the balancing put_pid() performed the final free afterward. Take a reference before __unhash_process() clears p->thread_pid and release it after proc_flush_pid() completes. A tested source reproducer is available privately on request. No controlled read or write, information leak, or privilege escalation is claimed. The mainline patch applies directly to v6.19.y and newer; v6.16.y through v6.18.y need a context-adjusted backport.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-09-25
Last Modified
2026-09-25
Generated
2026-09-25
AI Q&A
2026-09-25
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 3 associated CPEs
Vendor Product Version / Range
linux linux_kernel From 6.19 (inc)
linux linux_kernel From 6.16 (inc) to 6.18 (inc)
linux linux_kernel to 6.19 (exc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-UNKNOWN

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability in the Linux kernel involves a use-after-free issue in the PID handling code. When a task exits, the kernel incorrectly assumes a reference to thread_pid is maintained until proc_flush_pid() completes. However, if another task uses the exiting task's PID as its process group or session ID, the PID can be freed prematurely before proc_flush_pid() runs, leading to a slab-use-after-free error.

Detection Guidance

This vulnerability is specific to the Linux kernel and may not have direct network detection methods. Monitor kernel logs for slab-use-after-free errors or KASAN reports indicating issues in proc_invalidate_siblings_dcache or release_task functions. Check for crashes or hangs during process termination or PID management.

Impact Analysis

This vulnerability can cause system instability, crashes, or potential privilege escalation if exploited. It may lead to kernel memory corruption, allowing attackers to execute arbitrary code or cause denial-of-service conditions. Systems running vulnerable Linux kernel versions are at risk.

Mitigation Strategies

Apply the mainline patch provided for your kernel version (v6.19.y and newer). For older versions (v6.16.y to v6.18.y), use the context-adjusted backport. Update the Linux kernel to a patched version as soon as possible to resolve the issue.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-97903. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart