CVE-2026-98260
exec: очистка POSIX-таймеров сразу после de_thread()
- Опубликовано
- 6 окт. 2026 г.
- Обновлено
- 30 окт. 2026 г.
- Назначение CNA
- Linux
- Наблюдены доказательства
- 4 нояб. 2026 г.
Первичный CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HНизкий · следующие 30 дней
- Процентиль
- 8,2 %
- Дата модели
- 4 нояб. 2026 г.
EPSS – это статистическая оценка, а не достоверность или мера воздействия. Объедините это с CVSS, статусом KEV, воздействием и вашей средой.
Резюме
В ядре Linux устранена следующая уязвимость: exec: очистка POSIX-таймеров сразу после de_thread(). Потоковый таймер CPU содержит ссылку на PID потока, к которому он привязан, и, пока он взведён, его узел находится в очереди posix_cputimers этого потока. Задача ищется по этому PID. Когда exec() выполняет поток, не являющийся лидером, de_thread() меняет, какая задача владеет этим PID. Тогда pid_task(timer->it.cpu.pid, PIDTYPE_PID) возвращает NULL, но узел по-прежнему находится в очереди tsk, который жив. timer_lock_sighand() воспринимает неудачный поиск как признак того, что узел уже удалён из очереди, поэтому ему нечего отменять. begin_new_exec() вызывает posix_cpu_timers_exit(me) сразу после exec_task_namespaces(), и это удаляет оставшийся узел, поэтому обычно состояние остаётся незаметным. Но bprm->point_of_no_return устанавливается до de_thread(), поэтому если unshare_files(), set_mm_exe_file(), exec_mmap() или exec_task_namespaces() завершаются с ошибкой, задача умирает, не дойдя до этого места. Затем exit_itimers() освобождает k_itimer, пока его узел всё ещё находится в очереди, а последующая обработка tsk стирает этот освобождённый узел из rbtree. Короче: поток B, не являющийся лидером, родительский процесс timer_create(CLOCK_THREAD_CPUTIME_ID) timer_settime() arm_timer() // узел поставлен в очередь на B execve() de_thread(B) exchange_tids(B, leader) // PID B теперь принадлежит лидеру release_task(leader) __exit_signal(leader) posix_cpu_timers_exit(leader) // очищает очередь лидера, а не B __unhash_process(leader) // у этого PID больше нет задачи 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() // освобождён, пока всё ещё в очереди wait4() release_task(B) posix_cpu_timers_exit(B) cleanup_timerqueue() timerqueue_del() // use-after-free. Переместите очистку POSIX-таймеров сразу после de_thread(), прежде чем какое-либо из последующих условий ошибки приведёт задачу к do_exit(). [ tglx: Переместить очистку сразу после de_thread() ]
Источники
- CVE-2026-98260Эксплойт
Ответственное использование
Используйте информацию об уязвимостях только в тех системах, которыми вы владеете или имеете право тестировать. Kitploit ссылается на метаданные общедоступных исследований и не хранит код эксплойта или вредоносные полезные данные.