🔍 CVE-2026-98925

0.0
CVSS Score
UNKNOWN
2026-10-23
2026-10-23 13:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 BPF sockmap 서브시스템에서, BPF stream_verdict 프로그램이 skb를 같은 소켓으로 자기 리다이렉트(BPF_F_INGRESS)할 때 tcp_sk의 copied_seq가 실제 데이터 길이의 2배만큼 중복 증가하는 문제가 수정되었습니다. 이로 인해 TCP recvmsg에서 커널 WARNING이 발생할 수 있었습니다. 수정은 자기 리다이렉트 판정을 __SK_PASS로 변환하여 copied_seq가 한 번만 증가하도록 합니다.

💡 쉬운 설명

특정 네트워크 필터링 프로그램이 데이터를 자기 자신에게 되돌려 보낼 때, 커널이 수신 위치를 두 번 계산해 오류 경고가 발생하던 문제입니다. 이번 패치로 위치가 한 번만 계산되도록 고쳐졌습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: bpf, sockmap: Fix self-redirect copied_seq double-counting When a BPF stream_verdict program redirects an skb back to the same socket (self-redirect with BPF_F_INGRESS), sk_psock_verdict_apply() calls tcp_eat_skb() which advances tcp_sk->copied_seq. However, the skb is then delivered to the socket's psock ingress queue and later read by tcp_bpf_recvmsg_parser(), which also advances copied_seq via the copied_from_self accounting path. This double-counting causes copied_seq to advance by 2x the actual data length, triggering: 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 Fix this by converting self-redirect verdict to __SK_PASS at the beginning of sk_psock_verdict_apply(). This bypasses the __SK_REDIRECT case entirely (which calls sk_psock_eat_skb), letting the __SK_PASS path queue the skb to the psock ingress queue. The data is then read via tcp_bpf_recvmsg_parser(), which advances copied_seq exactly once through copied_from_self. Cross-socket redirects continue through __SK_REDIRECT with sk_psock_eat_skb() unchanged.

📍 영향받는 시스템

BPF sockmap(stream_verdict)을 사용하는 수정 전 Linux 커널 버전 전반

⚔️ 공격 벡터

로컬 또는 BPF 프로그램 권한을 가진 주체가 자기 리다이렉트를 유발해 커널 WARNING과 TCP 상태 불일치를 일으키는 방식(서비스 거부 가능성)

🛡️ 대응 방법

패치가 포함된 최신 Linux 커널 버전으로 업데이트하거나 배포판 보안 업데이트를 적용하세요.

🔧 검증 코드

출력된 커널 버전을 배포판의 보안 권고문에서 이 CVE 패치가 포함된 버전과 비교하여, 같거나 높으면 패치가 적용된 것입니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel