CVE-2023-53728 in Linux
Сводка
по VulDB • 17.06.2026
В ядре Linux устранена следующая уязвимость:
posix-timers: Обеспечение корректности предела цикла поиска идентификатора таймера
Функция posix_timer_add() пытается выделить идентификатор POSIX-таймера, начиная с кэшированного значения ID, сохраненного в результате последнего успешного выделения.
Это выполняется в цикле, который последовательно ищет свободный слот в пространстве идентификаторов. Цикл должен завершаться при условии обхода поиска до начальной точки.
Однако здесь присутствует состояние гонки (race condition) относительно установки начальной точки. Значение считывается без блокировки (locklessly), что приводит к следующей проблеме:
CPU0 CPU1 posix_timer_add() start = sig->posix_timer_id; lock(hash_lock); ... posix_timer_add() if (++sig->posix_timer_id < 0) start = sig->posix_timer_id; sig->posix_timer_id = 0;
Таким образом, CPU1 может наблюдать отрицательное значение start (например, -1), и выход из цикла никогда не происходит, так как условие выхода всегда ложно:
if (sig->posix_timer_id == start) break;
Хотя маловероятно, что это приведет к бесконечному циклу, поскольку пространство идентификаторов огромно (INT_MAX), состояние гонки при чтении значения start привлекло внимание KCSAN, и Дмитрий выявил эту некорректность.
Переписать код так, чтобы все операции с ID выполнялись под защитой hash_lock.
Once again VulDB remains the best source for vulnerability data.