Read the docs
TI-2026-46124 Aliases CVE-2026-64560GHSA-78ph-mc3q-52vv

posix-cpu-timers: Prevent UAF caused by non-leader exec() race

Priority LOW 37CWE-362Published · Updated

Key facts

Attack vector
Local
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
—
Confidentiality · integrity · availability
High · High · High
Fix status
Partial Red Hat: 15 fixed, 1 without a fix

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and Red Hat.

Summary

In the Linux kernel, the following vulnerability has been resolved: posix-cpu-timers: Prevent UAF caused by non-leader exec() race Wongi and Jungwoo decoded and reported a non-leader exec() related race which can result in an UAF: sys_timer_delete() exec() posix_cpu_timer_del() // Observes old leader p = pid_task(pid, pid_type); de_thread() switch_leader(); release_task(old_leader) __exit_signal(old_leader) sighand = lock(old_leader, sighand); posix_cpu_timers*_exit(); sighand = lock_task_sighand(p) unhash_task(old_leader); sh = lock(p, sighand) old_leader->sighand = NULL; unlock(sighand); (p->sighand == NULL) unlock(sh) return NULL; // Returns without action if(!sighand) return 0; free_posix_timer(); This is "harmless" unless the deleted timer was armed and enqueued in p->signal because on exec() a TGID targeted timer is inherited. As sys_timer_delete() freed the underlying posix timer object run_posix_cpu_timers() or any timerqueue related add/delete operations on other timers will access the freed object's timerqueue node, which results in an UAF. There is a similar problem vs. posix_cpu_timer_set(). For regular posix timers it just transiently returns -ESRCH to user space, but for the use case in do_cpu_nanosleep() it's the same UAF just that the k_itimer is allocated on the stack. Also posix_cpu_timer_rearm() fails to rearm the timer, which means it stops to expire. While debating solutions Frederic pointed out another problem: posix_cpu_timer_del(tmr) __exit_signal(p) posix_cpu_timers*_exit(p); unhash_task(p); p->sighand = NULL; sh = lock_task_sighand(p) sighand = p->sighand; if (!sighand) return NULL; lock(sighand); if (!sh) WARN_ON_ONCE(timer_queued(tmr)); On weakly ordered architectures it is not guaranteed that posix_cpu_timer_del() will observe the stores in posix_cpu_timers*_exit() when p->sighand is observed as NULL, which means the WARN() can be a false positive. Solve these issues by: 1) Changing the store in __exit_signal() to smp_store_release(). 2) Adding a smp_acquire__after_ctrl_dep() into the !sighand path of lock_task_sighand(). 3) Creating a helper function for looking up the task and locking sighand which does not return when sighand == NULL. Instead it retries the task lookup and only if that fails it gives up. 4) Using that helper in the three affected functions. #1/#2 ensures that the reader side which observes sighand == NULL also observes all preceeding stores, i.e. the stores in posix_cpu_timers*_exit() and the ones in unhash_task(). #3 ensures that the above described non-leader exec() situation is handled gracefully. When the task lookup returns the old leader, but sighand == NULL then it retries. In the non-leader exec() case the subsequent task lookup will observe the new leader due to #1/#2. In normal exit() scenarios the subsequent lookup fails. When the task lookup fails, the function also checks whether the timer is still enqueued and issues a warning if that's the case. Unfortunately there is nothing which can be done about it, but as the task is already not longer visible the timer should not be accessed anymore. This check also requires memory ordering, which is not provided when the first lookup fails. To achieve that the check is preceeded by a smp_rmb() which pairs with the smp_wmb() in write_seqlock() in __exit_signal(). That ensures that the stores in posix_cpu_timers*_exit() are visible. The history of the non-leader exec() issue goes back to the early days of posix CPU timers, which stored a pointer to the group leader task in the timer. That obviously fails when a non-leader exec() switches the leader. commit e0a70217107e ("posix-cpu-timers: workaround to suppress the problems with mt exec") added a temporary workaround for that in 2010 which surv ---truncated---

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00503 43rd percentileScored 2026-11-07
Fix Partial Linux (Linux): 5.10.262, 5.15.213, 6.1.180 +5Red Hat: 3 advisoriesRed Hat: 15 fixed, 1 without a fix

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
LinuxLinux5.7 and later5.10.262, 5.15.213, 6.1.180, 6.6.147, 6.12.100, 6.18.41, 7.1.5, 7.2Patch availableCNA
  • Linux VendorLinux Affected 5.7 and later Fixed in 5.10.262, 5.15.213, 6.1.180, 6.6.147, 6.12.100, 6.18.41, 7.1.5, 7.2 Patch available CNA

CPE names Threatist (inferred) · 1

Inferred from how NVD named this product before; not given by a source.

CPEVersionsRoleVendor
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*——Linux
  • cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* Versions — — ·Linux

Remediation

  • Fix · CNA Linux (Linux) Fixed in 5.10.262, 5.15.213, 6.1.180, 6.6.147, 6.12.100, 6.18.41, 7.1.5, 7.2

Red Hat 3 advisories

  • RHSA-2026:65708 Released 2026-09-09 · Red Hat rating Important
    kernel security, bug fix, and enhancement update
    • Red Hat CodeReady Linux Builder EUS (v.9.6) kernel-tools-libs-devel-5.14.0-570.140.1.el9_6, libperf-5.14.0-570.140.1.el9_6
    • Red Hat Enterprise Linux AppStream EUS (v.9.6) kernel-64k-debug-devel-5.14.0-570.140.1.el9_6, kernel-64k-debug-devel-matched-5.14.0-570.140.1.el9_6, kernel-64k-devel-5.14.0-570.140.1.el9_6 +12
    • Red Hat Enterprise Linux BaseOS EUS (v.9.6) kernel-5.14.0-570.140.1.el9_6, kernel-64k-5.14.0-570.140.1.el9_6, kernel-64k-core-5.14.0-570.140.1.el9_6 +28
    • Red Hat Enterprise Linux Real Time EUS (v.9.6) kernel-rt-5.14.0-570.140.1.el9_6, kernel-rt-64k-5.14.0-570.140.1.el9_6, kernel-rt-64k-core-5.14.0-570.140.1.el9_6 +21
    • Red Hat Enterprise Linux Real Time for NFV EUS (v.9.6) kernel-rt-5.14.0-570.140.1.el9_6, kernel-rt-core-5.14.0-570.140.1.el9_6, kernel-rt-debug-5.14.0-570.140.1.el9_6 +11
  • RHSA-2026:57252 Released 2026-08-20 · Red Hat rating Important
    kernel security, bug fix, and enhancement update
    • Red Hat Enterprise Linux AppStream (v. 9) kernel-64k-debug-devel-5.14.0-687.41.1.el9_8, kernel-64k-debug-devel-matched-5.14.0-687.41.1.el9_8, kernel-64k-devel-5.14.0-687.41.1.el9_8 +12
    • Red Hat Enterprise Linux BaseOS (v. 9) kernel-5.14.0-687.41.1.el9_8, kernel-64k-5.14.0-687.41.1.el9_8, kernel-64k-core-5.14.0-687.41.1.el9_8 +28
    • Red Hat Enterprise Linux CodeReady Linux Builder (v. 9) kernel-tools-libs-devel-5.14.0-687.41.1.el9_8, libperf-5.14.0-687.41.1.el9_8
    • Red Hat Enterprise Linux Real Time (v. 9) kernel-rt-5.14.0-687.41.1.el9_8, kernel-rt-64k-5.14.0-687.41.1.el9_8, kernel-rt-64k-core-5.14.0-687.41.1.el9_8 +21
    • Red Hat Enterprise Linux Real Time for NFV (v. 9) kernel-rt-5.14.0-687.41.1.el9_8, kernel-rt-core-5.14.0-687.41.1.el9_8, kernel-rt-debug-5.14.0-687.41.1.el9_8 +9
  • RHSA-2026:57251 Released 2026-08-20 · Red Hat rating Important
    kernel security, bug fix, and enhancement update
    • Red Hat Enterprise Linux AppStream (v. 10) kernel-64k-debug-devel-6.12.0-211.49.1.el10_2, kernel-64k-debug-devel-matched-6.12.0-211.49.1.el10_2, kernel-64k-devel-6.12.0-211.49.1.el10_2 +12
    • Red Hat Enterprise Linux BaseOS (v. 10) kernel-6.12.0-211.49.1.el10_2, kernel-64k-6.12.0-211.49.1.el10_2, kernel-64k-core-6.12.0-211.49.1.el10_2 +29
    • Red Hat Enterprise Linux CodeReady Linux Builder (v. 10) kernel-tools-libs-devel-6.12.0-211.49.1.el10_2, libperf-6.12.0-211.49.1.el10_2
    • Red Hat Enterprise Linux Real Time (v. 10) kernel-rt-6.12.0-211.49.1.el10_2, kernel-rt-64k-6.12.0-211.49.1.el10_2, kernel-rt-64k-core-6.12.0-211.49.1.el10_2 +21
    • Red Hat Enterprise Linux Real Time for NFV (v. 10) kernel-rt-6.12.0-211.49.1.el10_2, kernel-rt-core-6.12.0-211.49.1.el10_2, kernel-rt-debug-6.12.0-211.49.1.el10_2 +9

Vendor assessments

Red Hat

Red Hat rating: Important. Red Hat's page for this CVE →

ProductStatusPlan or fix
Red Hat Enterprise Linux 9AffectedNo fix yet
Red Hat CodeReady Linux Builder EUS (v.9.6)Fixed RHSA-2026:65708
Red Hat Enterprise Linux AppStream (v. 10)Fixed RHSA-2026:57251
Red Hat Enterprise Linux AppStream (v. 9)Fixed RHSA-2026:57252
Red Hat Enterprise Linux AppStream EUS (v.9.6)Fixed RHSA-2026:65708
Red Hat Enterprise Linux BaseOS (v. 10)Fixed RHSA-2026:57251
Red Hat Enterprise Linux BaseOS (v. 9)Fixed RHSA-2026:57252
Red Hat Enterprise Linux BaseOS EUS (v.9.6)Fixed RHSA-2026:65708
Red Hat Enterprise Linux CodeReady Linux Builder (v. 10)Fixed RHSA-2026:57251
Red Hat Enterprise Linux CodeReady Linux Builder (v. 9)Fixed RHSA-2026:57252
Red Hat Enterprise Linux Real Time (v. 10)Fixed RHSA-2026:57251
Red Hat Enterprise Linux Real Time (v. 9)Fixed RHSA-2026:57252
Red Hat Enterprise Linux Real Time EUS (v.9.6)Fixed RHSA-2026:65708
Red Hat Enterprise Linux Real Time for NFV (v. 10)Fixed RHSA-2026:57251
Red Hat Enterprise Linux Real Time for NFV (v. 9)Fixed RHSA-2026:57252
Red Hat Enterprise Linux Real Time for NFV EUS (v.9.6)Fixed RHSA-2026:65708
Not affected: 3 products
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux 8

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-64560
  2. 2026-10-03 Alias added: GHSA-78ph-mc3q-52vv
  3. 2026-10-16 EPSS moved to the 50th–90th percentile
  4. 2026-10-16 CISA SSVC decision points changed
  5. 2026-10-20 EPSS moved to the below the 50th percentile
  6. 2026-10-20 Weakness changed · CISA ADP

References

  • TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
  • TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
  • TI-2021-02452 Incorrect authorization in Ubuntu linux kernel KEVCVSS 3.1HIGH 8.8
  • TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
  • TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
  • TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
See all 21727 →

Sources