В ядре Linux устранена следующая уязвимость:
espintcp: исправлено состояние гонки в espintcp_close(). Эта проблема была обнаружена во время аудита кода. После вызова cancel_work_sync() из espintcp_close(),
espintcp_tx_work() по-прежнему можно планировать по таким путям, как
обработчик отложенного подтверждения или ksoftirqd.
В результате исполнитель espintcp_tx_work() может разыменовать
освободил espintcp ctx или sk. Ниже приведен простой сценарий гонки:
процессор0 процессор1
espincp_close()
cancel_work_sync(&ctx->работа);
espintcp_write_space()
Schedule_work(&ctx->работа);
Чтобы предотвратить это состояние гонки, функция cancel_work_sync()
заменен на Disable_work_sync().
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: espintcp: Fix race condition in espintcp_close() This issue was discovered during a code audit. After cancel_work_sync() is called from espintcp_close(), espintcp_tx_work() can still be scheduled from paths such as the Delayed ACK handler or ksoftirqd. As a result, the espintcp_tx_work() worker may dereference a freed espintcp ctx or sk. The following is a simple race scenario: cpu0 cpu1 espintcp_close() cancel_work_sync(&ctx->work); espintcp_write_space() schedule_work(&ctx->work); To prevent this race condition, cancel_work_sync() is replaced with disable_work_sync().
Характеристики атаки
Последствия
Строка CVSS v3.1