CVE-2026-64560 в Linux Kernel: состояние UAF при нелидерном exec() и меры защиты

CVE: CVE-2026-64560
Продукт: Linux Kernel
Дата публикации: 29.07.2026
Критичность: HIGH
CVSS: 7.8 (3.1)
EPSS: 0,12%; процентиль 2,16%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


Уязвимость CVE-2026-64560 в Linux Kernel связана с состоянием UAF (Use After Free), возникающим при некорректной обработке таймеров POSIX при выполнении операции exec() нелидерным потоком. Эта уязвимость может привести к нарушению целостности системы и потенциальному получению прав администратора. Проблема возникает при одновременном завершении задачи и попытке доступа к таймеру после его освобождения.

Базовые сведения о записи CVE и оценке риска приведены в [1].

Основные характеристики​


Уязвимость классифицируется как состояние UAF (Use After Free) и связана с механизмом POSIX CPU таймеров. В случае, когда поток выполняет exec(), но не является лидером группы потоков, происходит race condition между освобождением таймера и его дальнейшим использованием. Это может быть использовано для получения несанкционированного доступа к данным или повреждения памяти. Уязвимость затрагивает функции posix_cpu_timer_del(), posix_cpu_timer_set() и posix_cpu_timer_rearm().

Какие продукты и версии затронуты​


Уязвимость затрагивает Linux Kernel версий, где реализован механизм POSIX CPU таймеров. Исправление было включено в стабильное дерево ядра Linux. Уязвимость может быть актуальной для всех систем, использующих функционал POSIX таймеров и работающих с многопоточными процессами, где возможна смена лидера группы потоков во время выполнения exec().

Причина уязвимости​


Основная причина уязвимости — race condition в механизме управления POSIX CPU таймерами при выполнении операции exec() нелидерным потоком. При этом, если таймер был активен и находился в очереди, то при вызове sys_timer_delete() объект таймера освобождался, но другие функции могли продолжать обращаться к нему, что приводило к UAF. Также проблема возникала при использовании функций lock_task_sighand() и smp_store_release() в неправильном порядке, что позволяло другим потокам видеть устаревшие данные. В частности, при переходе задачи из одного состояния в другое, не все предшествующие изменения были должным образом видимы для других потоков.

Как работает атака​


Атака происходит при одновременном выполнении двух событий: выполнение exec() нелидерным потоком и активное использование таймера. Когда поток выполняет exec(), он может изменить лидера группы потоков, но таймеры, которые были связаны с предыдущим лидером, остаются в очереди. Если в этот момент происходит освобождение таймера, то последующие операции с ним могут привести к UAF. В результате, если таймер был активен, то его данные могут быть прочитаны или перезаписаны, что может быть использовано для получения несанкционированного доступа к памяти или повреждения данных. Механизм уязвимости также затрагивает функции posix_cpu_timer_set() и posix_cpu_timer_rearm().

Условия успешной эксплуатации​


Для эксплуатации уязвимости требуется возможность выполнения exec() нелидерным потоком, а также наличие активных POSIX CPU таймеров в системе. Атакующий должен иметь возможность контролировать или использовать потоки, которые могут быть использованы для вызова exec() и управления таймерами. Также важно, чтобы система имела активные POSIX таймеры, которые могут быть подвержены race condition. Уязвимость наиболее критична в многопоточных средах, где возможны смены лидера группы потоков.

Возможный сценарий атаки​


Сценарий атаки начинается с запуска процесса, который содержит активные POSIX CPU таймеры. Затем, поток, не являющийся лидером группы, выполняет exec(). В этот момент система может освободить таймер, но другие функции продолжают использовать его данные. Если поток, который выполняет exec(), имеет доступ к памяти, то он может использовать данные таймера для получения информации или повреждения памяти. В некоторых случаях, это может привести к получению прав администратора или выполнению произвольного кода.

Есть ли публичный эксплойт​


На момент подготовки материала не было подтверждено наличия публичного эксплойта для CVE-2026-64560. Однако, учитывая природу уязвимости и её потенциальные последствия, возможно, что эксплойт будет разработан в будущем. Отсутствие публичного PoC не исключает возможности эксплуатации уязвимости в реальных условиях, особенно в средах с высокой нагрузкой на таймеры.

Признаки эксплуатации​


Признаки компрометации могут включать необычное поведение системных таймеров, аномалии в журналах ядра, неожиданные сбои в работе процессов, которые используют POSIX таймеры. Также могут наблюдаться аномалии в использовании памяти, особенно при выполнении exec() в многопоточных средах. Для точной диагностики рекомендуется использовать специализированные инструменты мониторинга и анализировать логи ядра на предмет нестандартных вызовов функций таймеров.

Как обнаружить атаку​


Обнаружение уязвимости возможно через анализ версий ядра Linux и проверку наличия исправления. Также можно использовать инструменты анализа ядра, такие как ftrace или perf, для мониторинга вызовов функций posix_cpu_timer_del(), posix_cpu_timer_set() и posix_cpu_timer_rearm(). В случае обнаружения аномалий в этих функциях, следует провести дополнительную проверку на предмет использования POSIX таймеров в системе.

Как проверить свою версию​


Для проверки версии ядра Linux используйте команды:

Код:
uname -r
uname -a

Версии ядра, содержащие исправление, должны быть выше или равны версии, в которой была внесена коррекция. Рекомендуется проверять наличие исправления в официальных обновлениях ядра Linux.

Исправление​


Рекомендуется обновить ядро Linux до версии, содержащей исправление для CVE-2026-64560. Исправление включает изменения в функциях lock_task_sighand(), добавление smp_store_release() и smp_acquire__after_ctrl_dep(), а также создание вспомогательной функции timer_lock_sighand(). Эти изменения обеспечивают корректную обработку race condition при управлении таймерами POSIX.

Временные меры защиты​


Временные меры защиты могут включать ограничение использования POSIX таймеров в критически важных системах, а также мониторинг активности таймеров и потоков, которые могут быть подвержены уязвимости. Также рекомендуется ограничить возможность выполнения exec() нелидерными потоками, если это возможно в конкретной среде. Важно также отслеживать журналы ядра на предмет аномалий в работе таймеров.

Как проверить устранение уязвимости​


После установки исправления необходимо проверить, что версия ядра содержит необходимые изменения. Также рекомендуется выполнить тестирование системы на предмет стабильности работы с POSIX таймерами. Можно использовать команды:

Код:
uname -r

Чтобы убедиться, что система работает на версии ядра, которая содержит исправление. Также рекомендуется провести тестирование на предмет отсутствия аномалий в работе таймеров.

Вывод​


CVE-2026-64560 представляет собой серьезную уязвимость в Linux Kernel, связанную с состоянием UAF при некорректной обработке POSIX CPU таймеров. Уязвимость может быть использована для получения несанкционированного доступа к данным или повреждения памяти. Рекомендуется немедленно обновить ядро до версии с исправлением и провести анализ системы на предмет возможного использования POSIX таймеров.

Официальные источники​


  1. NVD — CVE-2026-64560
  2. FIRST EPSS — CVE-2026-64560
  3. posix-cpu-timers: Prevent UAF caused by non-leader exec() race - kernel/git/stable/linux.git - Linux kernel stable tree
  4. posix-cpu-timers: Prevent UAF caused by non-leader exec() race - kernel/git/stable/linux.git - Linux kernel stable tree
  5. posix-cpu-timers: Prevent UAF caused by non-leader exec() race - kernel/git/stable/linux.git - Linux kernel stable tree
  6. posix-cpu-timers: Prevent UAF caused by non-leader exec() race - kernel/git/stable/linux.git - Linux kernel stable tree
  7. posix-cpu-timers: Prevent UAF caused by non-leader exec() race - kernel/git/stable/linux.git - Linux kernel stable tree
  8. posix-cpu-timers: Prevent UAF caused by non-leader exec() race - kernel/git/stable/linux.git - Linux kernel stable tree
  9. posix-cpu-timers: Prevent UAF caused by non-leader exec() race - kernel/git/stable/linux.git - Linux kernel stable tree
  10. posix-cpu-timers: Prevent UAF caused by non-leader exec() race - kernel/git/stable/linux.git - Linux kernel stable tree

История обновлений статьи​


  • 07.08.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ