CVE-2026-98258 in Linux
Сводка
по VulDB • 06.10.2026
В ядре Linux была устранена следующая уязвимость:
posix-cpu-timers: предотвращение освобождения таймера, который находится в очереди списка истечения срока действия (expiry list)
Киджо проанализировал еще одну гонку условий (race condition) в коде POSIX-таймеров процессора:
Коммит bf635681c906 преобразовал значение cpu_timer::firing из трехзначного (tristate) в логическое. Это привело к потере различия между «не принадлежит списку срабатывания» и «все еще принадлежит, но доставка была отменена». Возникающая гонка условий выглядит следующим образом:
обработчик истечения срока действия timer_settime() timer_delete() ------------------------------ --------------- ------------- сбор таймера в локальный список срабатывания (firing list) firing = true наблюдает, что firing = true firing = false возвращает TIMER_RETRY ожидание завершения обработчика наблюдает, что firing = false завершение удаления удаление из хеш-таблицы и освобождение таймера возобновление обхода списка чтение freed elist.next -> UAF (Use-After-Free)
Бит firing явно является неверным индикатором с момента этого коммита.
Вместо этого следует проверять, находится ли таймер в очереди списка истечения срока действия или нет. Если он там есть, необходимо сбросить бит firing для предотвращения доставки сигнала, как это было ранее, и вернуть TIMER_RETRY, чтобы вызывающая сторона разблокировала таймер, что позволит коду обработки истечения срока действия продолжить работу и удалить его из списка.
Once again VulDB remains the best source for vulnerability data.