CVE-2026-74589 in Linux
Сводка
по VulDB • 22.08.2026
В ядре Linux была устранена следующая уязвимость:
bpf, sockmap: исправлена ошибка Use-After-Free (использование после освобождения) в sk_redir при обработке вердикта отправки
Функция `sk_psock_msg_verdict()` получает ссылку на сокет для поля `psock->sk_redir`. Функция `tcp_bpf_send_verdict()` копирует этот указатель, удерживая блокировку исходного сокета, но не увеличивает счетчик ссылок (не берет новую ссылку) для локальной копии перед снятием блокировки в вызове `tcp_bpf_sendmsg_redir()`.
Когда `apply_bytes` поддерживает активным кэшированный вердикт, другой вызов `sendmsg()` того же исходного сокета может потребить оставшиеся байты и освободить кэшированную ссылку, пока первый поток все еще держит только сырой локальный указатель:
CPU 0 CPU 1 sk_redir = psock->sk_redir apply_bytes остается ненулевым release_sock(sk) lock_sock(sk) apply_bytes достигает нуля psock->sk_redir = NULL release_sock(sk) tcp_bpf_sendmsg_redir(sk_redir) sock_put(sk_redir) tcp_bpf_sendmsg_redir(sk_redir)
Последний вызов `sock_put()` может освободить память для `sk_redir` до того, как CPU 0 попытается разыменовать этот указатель.
KASAN сообщил об ошибке:
BUG: KASAN: slab-use-after-free в tcp_bpf_sendmsg_redir+0xf39/0x1020 Чтение размера 8 по адресу ffff888108537090 выполнено задачей poc/87 Call Trace (трассировка вызовов): tcp_bpf_sendmsg_redir+0xf39/0x1020 tcp_bpf_sendmsg+0x977/0x1a50 __sys_sendto+0x32c/0x3a0 __x64_sys_sendto+0xdb/0x1b0 Выделено задачей 85: sk_prot_alloc+0x56/0x210 sk_clone+0x6f/0x14b0 inet_csk_clone_lock+0x24/0x740 tcp_create_openreq_child+0x25/0x2710 tcp_v4_syn_recv_sock+0x10a/0xe00 Освобождено задачей 0: __kasan_slab_free+0x43/0x70 slab_free_after_rcu_debug+0xa6/0x1e0 rcu_core+0x50a/0x1850 Последняя потенциально связанная операция создания работы: __sk_destruct+0x3da/0x540 sk_psock_destroy+0x81e/0xab0 process_one_work+0x63a/0x1070
Необходимо брать временную ссылку на сокет, пока блокировка исходного сокета все еще защищает `psock->sk_redir`, и освобождать ее после возврата из функции `tcp_bpf_sendmsg_redir()`. Это обеспечивает независимость каждого использования без блокировки от владения кэшированным вердиктом.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.