EXPLOIT PÚBLICO
CVE-2026-98260 Limpieza de temporizadores POSIX tras de_thread() en el kernel de Linux
Una condición de carrera en exec() con temporizadores de CPU por hilo podía dejar un nodo de temporizador encolado tras de_thread(), con un estado inconsistente si fallaba un paso posterior a point_of_no_return. El parche limpia los temporizadores POSIX inmediatamente después de de_thread().
Alerta de Nureq Monitor
Detectada 18 OCT · 22:43Última novedad 23 OCT · 16:53
CVSS 3.1
7.8ALTAPROBABILIDAD DE EXPLOTACIÓN (EPSS)
0,1 % PERCENTIL 3
EXPLOTACIÓN ACTIVA
No confirmada
EXPLOIT PÚBLICO
Sí 3 REPOSITORIOS
Qué es CVE-2026-98260
Una condición de carrera en exec() con temporizadores de CPU por hilo podía dejar un nodo de temporizador encolado tras de_thread(), con un estado inconsistente si fallaba un paso posterior a point_of_no_return. El parche limpia los temporizadores POSIX inmediatamente después de de_thread().
Productos y versiones afectadas
Linux
Linux
Qué hacer
- Verificá si usás Linux y en qué versión: el rango afectado figura arriba.
- Actualizá a la versión corregida que indique el fabricante en su aviso (ver referencias) o aplicá la mitigación que publique.
- Priorizá la corrección: hay código de explotación público, así que el riesgo de ataque es alto.
- Revisá registros y accesos de los sistemas expuestos para descartar que se haya aprovechado antes de corregir.
Exploits y pruebas de concepto públicas
Código publicado por terceros. Puede ser malicioso: revisalo solo en un entorno aislado.
- jadedFella/lpe-study-notes ↗A slow, from-zero walk through a Linux kernel privilege-escalation bug (CVE-2026-98260)PUBLICADO 18 OCT · 22:43
- ylh440104/InfinityCore-Android-CVE-2026-98260 ↗CVE-2026-98260 (Timer) Android/ARM64 portPUBLICADO 19 OCT · 04:59
- quyicheng03-boop/CVE-2026-98260-nezha-android ↗Target-specific Android CVE-2026-98260 research port for Xiaomi nezhaPUBLICADO 23 OCT · 16:53
Calculadora CVSS
CVSS 3.1 · 7.8 ALTA
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- VECTOR DE ATAQUE (AV)
- Local
- COMPLEJIDAD DEL ATAQUE (AC)
- Baja
- PRIVILEGIOS REQUERIDOS (PR)
- Bajos
- INTERACCIÓN DEL USUARIO (UI)
- Ninguna
- ALCANCE (S)
- Sin cambio
- CONFIDENCIALIDAD (C)
- Alta
- INTEGRIDAD (I)
- Alta
- DISPONIBILIDAD (A)
- Alta
Abrir la calculadora completa →
Descripción original
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() ]
Referencias
- git.kernel.org/stable/c/6f1977cea3e85cd8ab55fb337d3e1725fe61d1ce
- git.kernel.org/stable/c/d9ae467e617ca29b825493a362bf0d75ad5f4ac3
- git.kernel.org/stable/c/75aa08b93c65766040f9ca99f41ac85ad22596b6
- git.kernel.org/stable/c/d602877baf36c43c788a5f472c977e0be414029f
- git.kernel.org/stable/c/acb03d3881818581052924a9bbbe92b8741ed448
Historial de la alerta
- EXPLOIT PÚBLICO Se publicó el repositorio jadedFella/lpe-study-notes.
- EXPLOIT PÚBLICO Se publicó el repositorio ylh440104/InfinityCore-Android-CVE-2026-98260.
- EXPLOIT PÚBLICO Se publicó el repositorio quyicheng03-boop/CVE-2026-98260-nezha-android.
CÓMO SE HIZOResumen traducido automáticamente al español a partir de la descripción original. Ante dudas, la descripción original y las referencias del fabricante son la fuente de verdad. Cómo funciona.