7.8
CVE-2026-98260
- EPSS 0.13%
- Veröffentlicht 06.10.2026 08:45:24
- Zuletzt bearbeitet 07.10.2026 07:17:07
- Erkennungen
exec: Cleanup POSIX timers right after de_thread()
In the Linux kernel, the following vulnerability has been resolved:
exec: Cleanup POSIX timers right after de_thread()
A per-thread CPU timer holds a reference to the PID of the thread it is
attached to and, while it is armed, its node is queued in that thread's
posix_cputimers. The task is looked up by that PID.
When a non-leader thread exec()s, de_thread() changes which task owns
that PID. pid_task(timer->it.cpu.pid, PIDTYPE_PID) then returns NULL,
but the node is still queued on tsk, which is alive. timer_lock_sighand()
takes a failed lookup to mean that the node is already dequeued, so it
has nothing to undo.
begin_new_exec() calls posix_cpu_timers_exit(me) right after
exec_task_namespaces() and that removes the leftover node, so the state
normally stays invisible. But bprm->point_of_no_return is set before
de_thread(), so if unshare_files(), set_mm_exe_file(), exec_mmap() or
exec_task_namespaces() fails, the task dies before it gets there.
exit_itimers() then frees the k_itimer while its node is still queued,
and reaping tsk later erases that freed node from the rbtree.
In short:
the non-leader thread B the parent
timer_create(CLOCK_THREAD_CPUTIME_ID)
timer_settime()
arm_timer() // the node is queued on B
execve()
de_thread(B)
exchange_tids(B, leader) // B's PID now belongs to the leader
release_task(leader)
__exit_signal(leader)
posix_cpu_timers_exit(leader) // cleans leader's queue, not B's
__unhash_process(leader) // that PID has no task anymore
exec_mmap()
mmap_read_lock_killable(old_mm)
kill(B, SIGKILL)
// -EINTR
get_signal()
do_exit()
exit_itimers()
posix_timer_delete()
posix_cpu_timer_del()
posix_timer_unhash_and_free() // freed while still queued
wait4()
release_task(B)
posix_cpu_timers_exit(B)
cleanup_timerqueue()
timerqueue_del() // use-after-free
Move the POSIX timer cleanup right after de_thread() before any of the
later failure conditions brings the task into do_exit().
[ tglx: Move the cleanup right after de_thread() ]Daten sind bereitgestellt durch das CVE Programm von einer CVE Numbering Authority (CNA) (Unstrukturiert).
HerstellerLinux
≫
Produkt
Linux
Default Statusunaffected
Version
55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59
Version <
6f1977cea3e85cd8ab55fb337d3e1725fe61d1ce
Status
affected
Version
55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59
Version <
d9ae467e617ca29b825493a362bf0d75ad5f4ac3
Status
affected
Version
55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59
Version <
75aa08b93c65766040f9ca99f41ac85ad22596b6
Status
affected
Version
55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59
Version <
d602877baf36c43c788a5f472c977e0be414029f
Status
affected
Version
55e8c8eb2c7b6bf30e99423ccfe7ca032f498f59
Version <
acb03d3881818581052924a9bbbe92b8741ed448
Status
affected
HerstellerLinux
≫
Produkt
Linux
Default Statusaffected
Version
5.7
Status
affected
Version
0
Version <
5.7
Status
unaffected
Version <=
6.6.*
Version
6.6.158
Status
unaffected
Version <=
6.12.*
Version
6.12.112
Status
unaffected
Version <=
6.18.*
Version
6.18.54
Status
unaffected
Version <=
7.2.*
Version
7.2.8
Status
unaffected
Version <=
*
Version
7.3-rc4
Status
unaffected
VulnDex Vulnerability Enrichment
| Typ | Quelle | Score | Percentile |
|---|---|---|---|
| EPSS | FIRST.org | 0.13% | 0.025 |
| Quelle | Base Score | Exploit Score | Impact Score | Vector String |
|---|---|---|---|---|
| 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | 7.8 | 1.8 | 5.9 |
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
|
https://git.kernel.org/stable/c/6f1977cea3e85cd8ab55fb337d3e1725fe61d1ce
https://git.kernel.org/stable/c/d9ae467e617ca29b825493a362bf0d75ad5f4ac3
https://git.kernel.org/stable/c/75aa08b93c65766040f9ca99f41ac85ad22596b6
https://git.kernel.org/stable/c/d602877baf36c43c788a5f472c977e0be414029f
https://git.kernel.org/stable/c/acb03d3881818581052924a9bbbe92b8741ed448