В ядре Linux устранена следующая уязвимость:
sctp: исправлена гонка addr_wq_timer в sctp_free_addr_wq().
sctp_free_addr_wq() ранее удалил addr_wq_timer с помощью timer_delete()
удерживая addr_wq_lock. Однако timer_delete() не гарантирует, что
текущий обработчик таймера завершился. Это позволяет провести гонку с помощью sctp_addr_wq_timeout_handler(), где обработчик
может все еще работать после освобождения addr_waitq, получения addr_wq_lock и
доступ к освобожденной памяти, что приводит к использованию после освобождения.
Исправьте это, вызвав timer_shutdown_sync() перед использованием addr_wq_lock. Это
гарантирует, что любой обработчик встроенного таймера завершил работу, и предотвращает
таймер от повторной активации во время демонтажа, что делает последующую очистку безопасной.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: sctp: fix addr_wq_timer race in sctp_free_addr_wq() sctp_free_addr_wq() previously removed addr_wq_timer using timer_delete() while holding addr_wq_lock. However, timer_delete() does not guarantee that a currently running timer handler has completed. This allows a race with sctp_addr_wq_timeout_handler(), where the handler may still run after addr_waitq has been freed, acquire addr_wq_lock, and access freed memory, leading to a use-after-free. Fix this by calling timer_shutdown_sync() before taking addr_wq_lock. This guarantees that any in-flight timer handler has finished and prevents the timer from being re-armed during teardown, making subsequent cleanup safe.
Характеристики атаки
Последствия
Строка CVSS v3.1