CVE-2026-98925 in Linux
요약
\~에 의해 VulDB • 2026. 10. 23.
리눅스 커널에서 다음 취약점이 해결되었습니다:
bpf, sockmap: self-redirect 시 copied_seq의 중복 카운팅 수정
BPF stream_verdict 프로그램이 skb를 동일한 소켓으로 리디렉션(self-redirect with BPF_F_INGRESS)할 때, sk_psock_verdict_apply()는 tcp_eat_skb()를 호출하여 tcp_sk->copied_seq를 증가시킵니다. 그러나 이후 해당 skb는 소켓의 psock ingress 큐로 전달되고 나중에 tcp_bpf_recvmsg_parser()에 의해 읽히는데, 이 과정에서도 copied_from_self 계정 경로를 통해 copied_seq가 다시 증가합니다. 이러한 중복 카운팅으로 인해 copied_seq가 실제 데이터 길이의 2배만큼 증가하여 다음과 같은 오류를 유발합니다:
TCP recvmsg seq # bug 2: copied BF2E806, seq BF2E7FD, \ rcvnxt BF2E806, fl 0 WARNING: net/ipv4/tcp.c:2745 at tcp_recvmsg_locked+0x72b/0x2640 Call Trace: tcp_recvmsg+0x10a/0x500 sock_recvmsg+0x168/0x1d0 __sys_recvfrom+0x19a/0x2a0 __x64_sys_recvfrom+0xe4/0x1f0 do_syscall_64+0xf7/0x530 entry_SYSCALL_64_after_hwframe+0x77/0x7f
cleanup rbuf bug: copied BF2E806 seq BF2E806 rcvnxt BF2E806 WARNING: net/ipv4/tcp.c:1609 at tcp_cleanup_rbuf+0xf2/0x1c0 Call Trace: tcp_recvmsg_locked+0x8d1/0x2640 tcp_recvmsg+0x10a/0x500 sock_recvmsg+0x168/0x1d0 __sys_recvfrom+0x19a/0x2a0 __x64_sys_recvfrom+0xe4/0x1f0 do_syscall_64+0xf7/0x530 entry_SYSCALL_64_after_hwframe+0x77/0x7f
이 문제를 해결하기 위해 sk_psock_verdict_apply()의 시작 부분에서 self-redirect verdict를 __SK_PASS로 변환합니다. 이를 통해 __SK_REDIRECT 케이스(이는 sk_psock_eat_skb를 호출함)가 완전히 우회되며, __SK_PASS 경로가 skb를 psock ingress 큐에 큐잉하도록 합니다. 이후 데이터는 tcp_bpf_recvmsg_parser()를 통해 읽히며, 이는 copied_from_self 경로를 통해 copied_seq를 정확히 한 번만 증가시킵니다. 소켓 간 리디렉션(Cross-socket redirects)은 sk_psock_eat_skb()가 변경되지 않은 상태로 __SK_REDIRECT 경로를 계속 통과합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.