В ядре Linux устранена следующая уязвимость:
rxrpc: сериализация ядра принимает предварительное выделение с отключением сокета
rxrpc_kernel_charge_accept() читает rx->backlog без каких-либо
синхронизация сокетов/незавершенной работы и передает этот необработанный указатель в
rxrpc_service_prealloc_one(). Параллельный вызов rxrpc_discard_prealloc()
устанавливает rx->backlog = NULL и освобождает кольца невыполненной работы, поэтому ядро
работник предварительного выделения может продолжать использовать освобожденную структуру rxrpc_backlog
при обновлении *_backlog_head/tail и слотов массива.
Сериализуйте проверку состояния и поиск невыполненной работы с помощью блокировки сокета,
и отклонить предварительное выделение ядра после отключения демонтажа
прослушивание или отбрасывание невыполненной работы по обслуживанию.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: rxrpc: serialize kernel accept preallocation with socket teardown rxrpc_kernel_charge_accept() reads rx->backlog without any socket/backlog synchronization and passes that raw pointer into rxrpc_service_prealloc_one(). A concurrent rxrpc_discard_prealloc() sets rx->backlog = NULL and frees the backlog rings, so a kernel preallocation worker can keep using a freed struct rxrpc_backlog while updating *_backlog_head/tail and array slots. Serialize the state check and backlog lookup with the socket lock, and reject kernel preallocation once teardown has disabled listening or discarded the service backlog.
Характеристики атаки
Последствия
Строка CVSS v3.1