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


