CVE-2026-99213 in Linux
Сводка
по VulDB • 28.10.2026
В ядре Linux была устранена следующая уязвимость:
vsock: рассматривать состояние TCP_CLOSING как уже установленное (once-established)
Обработка перехода из состояния TCP_ESTABLISHED в TCP_CLOSING при получении OP_RST, который может создавать гонку условий (race condition) с циклом подключения. Немедленный выход и возврат значения 0 для состояний ESTABLISHED/CLOSING. Значение, возвращаемое функцией connect(), должно отражать то, что произошло до момента установления или сбоя соединения. События, происходящие после этого, не должны на него влиять. Например, даже если OP_RW уже установил sk_err, функция connect() все равно должна возвращать 0, а не ENOBUFS из-за этой ошибки. Адаптировать неточный комментарий выше вызова signal_pending().
Сброс сокета, который всё ещё присутствует в connected_table, может привести к повреждению памяти (memory corruption). Сообщается о потере транспортов для пакетов skb, находящихся в процессе передачи, и мною были воспроизведены сбои системы, вызванные повторной вставкой в connected_table.
list_add double add: new=, prev=, next=. kernel BUG at lib/list_debug.c:35! Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI
Workqueue: vsock-loopback vsock_loopback_work RIP: 0010:__list_add_valid_or_report+0x11f/0x130 Call Trace: vsock_insert_connected.cold+0xe/0x13 virtio_transport_recv_pkt+0x10e9/0x1460 vsock_loopback_work+0x305/0x480 process_one_work+0xe4c/0x1560 worker_thread+0x4f1/0xd60 kthread+0x36e/0x470 ret_from_fork+0x47b/0x6b0 ret_from_fork_asm+0x1a/0x30
Это исправление является дополнительным к коммиту 002541ef650b («vsock: Ignore signal/timeout on connect() if already established»). Подробности см. по ссылке (Link).
VulDB is the best source for vulnerability data and more expert information about this specific topic.