CVE-2026-74589 in Linux
요약
\~에 의해 VulDB • 2026. 08. 22.
리눅스 커널에서 다음 취약점이 해결되었습니다:
bpf, sockmap: send verdict에서의 sk_redir Use-After-Free 수정
sk_psock_msg_verdict()는 psock->sk_redir에 대한 소켓 참조를 가져옵니다. tcp_bpf_send_verdict()는 소스 소켓 잠금을 유지한 상태에서 해당 포인터를 복사하지만, tcp_bpf_sendmsg_redir() 주변에서 잠금을 해제하기 전에 로컬 복사에 대한 참조를 확보하지 않습니다.
apply_bytes가 캐시된 verdict을 활성화 상태로 유지하면, 동일한 소스 소켓에 대한 다른 sendmsg() 호출이 나머지 바이트를 소비하고 첫 번째 스레드가 여전히 원본 로컬 포인터만 보유하고 있는 동안 캐시된 참조를 해제할 수 있습니다:
CPU 0 CPU 1 sk_redir = psock->sk_redir apply_bytes remains nonzero release_sock(sk) lock_sock(sk) apply_bytes reaches zero 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() 호출은 CPU 0이 sk_redir을 역참조하기 전에 sk_redir을 해제할 수 있습니다.
KASAN에서 다음 오류를 보고했습니다:
BUG: KASAN: slab-use-after-free in tcp_bpf_sendmsg_redir+0xf39/0x1020 Read of size 8 at addr ffff888108537090 by task poc/87 Call Trace: tcp_bpf_sendmsg_redir+0xf39/0x1020 tcp_bpf_sendmsg+0x977/0x1a50 __sys_sendto+0x32c/0x3a0 __x64_sys_sendto+0xdb/0x1b0 Allocated by task 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 Freed by task 0: __kasan_slab_free+0x43/0x70 slab_free_after_rcu_debug+0xa6/0x1e0 rcu_core+0x50a/0x1850 Last potentially related work creation: __sk_destruct+0x3da/0x540 sk_psock_destroy+0x81e/0xab0 process_one_work+0x63a/0x1070
소스 소켓 잠금이 psock->sk_redir을 보호하는 동안 임시 소켓 참조를 확보하고, tcp_bpf_sendmsg_redir()가 반환한 후에 이를 해제합니다. 이렇게 하면 각 잠금 없는 사용이 캐시된 verdict 소유권과 독립적으로 유지됩니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.