Skip to content
WatchlistHigh

CVE-2026-98260Linux Kernel Vulnerability

exec: Cleanup POSIX timers right after de_thread()

Published Oct 6, 2026 · Updated Oct 19, 2026 · Also known as EUVD-2026-93188, GHSA-pr95-77xq-3v99

Key Facts

Patch in the next maintenance window
  • CVE-2026-98260 is a high-severity vulnerability (CVSS 7.8 v3.1) affecting Azl3 Kernel 6.6.157.1-1 (Microsoft), Linux Kernel, Linux (debian) and 13 more products.
  • It is not listed in any known-exploited vulnerabilities catalog. No public exploit code is known.
  • EPSS estimates a 0.1% probability of exploitation in the next 30 days.
  • Fixed versions are available, including bpftool 6.12.112-1.ph5, Kernel 0:5.14.0-427.156.1.el9_4, Kernel 0:6.12.0-55.111.1.el10_0.
  • Brandefense priority: patch in the next maintenance window, because of its high severity, although no exploitation is known.

Scores

CVSS v3.1

7.8

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

EPSS (30-day exploit likelihood)

0.1%

Exploit maturity

Proof of concept

ATLAS score

44/100

Publication score, see How it works

Exploitation Verdict

KEV listed

Not listed

Federal due date

None

No federal due date

Ransomware use

Not reported

Attributed actors

None named

Exploit & Defence Guidance

Exploit maturity

Proof of concept

Public exploit code

2

Proof-of-concept links

In-the-wild evidence

0

Reports of active use

Description

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() ]

Affected Products

25 affected entries in total
ProductAffected versionsFixed in
Azl3 Kernel 6.6.157.1-1MicrosoftSee advisoryn/a
Linux KernelLinuxSee advisory6.6.158
Linuxdebian>= 55e8c8eb2c7b6bf30e99423ccfe7ca032f498f596.1.190-1
bpftoolphotonSee advisory6.12.112-1.ph5
linux-develphotonSee advisory6.12.112-1.ph5
11 more affected products in the full CVE brief

Patched Releases

bpftool

6.12.112-1.ph5

Kernel

0:5.14.0-427.156.1.el9_4, 0:6.12.0-55.111.1.el10_0, 6.12.112, 6.18.54, 6.6.158, 7.2.8

kernel-devel

7.2.10-1.1

kernel-macros

7.2.10-1.1

kernel-rt

0:5.14.0-284.198.1.rt14.483.el9_2

kernel-source

7.2.10-1.1

kernel-source-vanilla

7.2.10-1.1

Linux

1, 6.1.190-1, 6.12.112-1.ph5, 6.12.113-1, 7.2.8-1, 6.12.112, 6.18.54, 6.6.158, 6f1977cea3e85cd8ab55fb337d3e1725fe61d1ce, 7.2.8, 75aa08b93c65766040f9ca99f41ac85ad22596b6, acb03d3881818581052924a9bbbe92b8741ed448, d602877baf36c43c788a5f472c977e0be414029f, d9ae467e617ca29b825493a362bf0d75ad5f4ac3

Linux Kernel

6.12.112, 6.18.54, 6.6.158, 7.2.8, 7.3-rc4

linux-devel

6.12.112-1.ph5

linux-docs

6.12.112-1.ph5

linux-drivers-gpu

6.12.112-1.ph5

linux-drivers-sound

6.12.112-1.ph5

linux-python3-perf

6.12.112-1.ph5

linux-tools

6.12.112-1.ph5

Timeline

  1. Publicly disclosed

    Oct 6, 2026

  2. Last updated

    Oct 19, 2026

Weakness Type

  • CWE-825 Expired Pointer Dereference

References

9 more references in the full CVE brief

FAQ

Common Questions.

Is CVE-2026-98260 On Your Attack Surface?

Brandefense matches it against the products discovered on your perimeter and opens a finding the day a CVE like this is listed.

Request A Demo

Figures as of Oct 19, 2026. Compiled by Brandefense technologies from public vulnerability catalogs; scoring as described in How it works.

To report an error, contact Brandefense.