CVE-2026-64560 in LinuxИнформация

Сводка

по VulDB • 29.07.2026

В ядре Linux устранена следующая уязвимость:

posix-cpu-timers: предотвращение Use-After-Free (UAF), вызванного гонкой при exec() нелидерного процесса

Wongi и Jungwoo расшифровали и сообщили о состоянии гонки, связанном с выполнением команды exec() в процессе, который не является лидером группы процессов. Это состояние может приводить к использованию памяти после её освобождения (Use-After-Free):

``` sys_timer_delete() exec() posix_cpu_timer_del() // Наблюдается старый лидер 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;

// Возврат без выполнения действий if(!sighand) return 0; free_posix_timer(); ```

Это состояние считается «безопасным» (harmless), если только удаляемый таймер не был активирован и помещен в очередь в структуре p->signal, поскольку при вызове exec() таймеры, привязанные к TGID (Group ID процесса), наследуются.

Поскольку sys_timer_delete() освобождает базовый объект posix-таймера, функция run_posix_cpu_timers() или любые другие операции добавления/удаления в очереди таймеров могут получить доступ к узлу timerqueue уже освобожденного объекта, что приводит к Use-After-Free (UAF).

Существует аналогичная проблема относительно функции posix_cpu_timer_set(). Для обычных posix-таймеров она лишь временно возвращает пользователю код ошибки -ESRCH, но в случае использования do_cpu_nanosleep() возникает тот же UAF, только объект k_itimer выделяется в стеке.

Кроме того, функция posix_cpu_timer_rearm() не выполняет повторную активацию таймера, что приводит к его остановке и отсутствию срабатывания по истечении времени.

В ходе обсуждения решений Фредерик указал на еще одну проблему:

``` 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)); ```

На архитектурах со слабой упорядоченностью памяти (weakly ordered architectures) не гарантируется, что posix_cpu_timer_del() увидит записи в функции posix_cpu_timers*_exit(), когда p->

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Ответственный

Linux

Резервировать

19.07.2026

Раскрытие

29.07.2026

Модерация

принято

Вход

VDB-384220

EPSS

0.00000

KEV

Нет

Деятельности

Низкий

Источники

Might our Artificial Intelligence support you?

Check our Alexa App!