🇰🇷 한글 설명
Linux 커널 TCP 스택에서 SYN-ACK 전송 시 재전송 큐의 SYN skb를 복사본으로 교체하면서 tp->retransmit_skb_hint가 해제된 객체를 가리키는 use-after-free 취약점입니다. 비특권 TFO 클라이언트가 조작된 ICMP 메시지와 동시 open을 이용해 이 힌트를 활용하면 커널 메모리 손상이 발생할 수 있습니다.
💡 쉬운 설명
리눅스 커널이 네트워크 연결 중 이미 삭제된 메모리를 다시 참조하는 버그입니다. 악의적인 사용자가 이를 이용해 시스템을 불안정하게 만들거나 권한을 얻을 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tcp: fix use-after-free of retransmit_skb_hint in tcp_send_synack()
When tcp_send_synack() replaces the cloned SYN skb at the head of the
retransmit queue with a copy, it frees the original with
tcp_rtx_queue_unlink_and_free() and only repairs tp->highest_sack.
tp->retransmit_skb_hint keeps pointing at the freed
skbuff_fclone_cache object.
The dangling hint is read in tcp_verify_retransmit_hint() and used as
the root of the rbtree walk in tcp_xmit_retransmit_queue(). An
unprivileged TFO client (sendmsg(MSG_FASTOPEN)) can arm the hint with
an attacker-supplied ICMP fragmentation-needed message, after which a
simultaneous open frees the armed SYN skb:
BUG: KASAN: slab-use-after-free in tcp_mark_skb_lost (net/ipv4/tcp_input.c:1316)
Read of size 4 at addr ffff88800604d928 by task swapper/1/0
Call Trace:
tcp_mark_skb_lost (net/ipv4/tcp_input.c:1316)
tcp_simple_retransmit (net/ipv4/tcp_input.c:3158)
tcp_v4_err (net/ipv4/tcp_ipv4.c:587)
Sync the hint to the copy.
📍 영향받는 시스템
패치가 적용되지 않은 Linux 커널 버전 (TCP Fast Open 및 TCP 재전송 로직 사용 환경)
⚔️ 공격 벡터
비특권 로컬/원격 사용자가 sendmsg(MSG_FASTOPEN)과 조작된 ICMP fragmentation-needed 메시지로 재전송 힌트를 설정한 뒤 동시 open으로 SYN skb를 해제해 커널 메모리를 참조하게 함
🛡️ 대응 방법
배포판 벤더가 제공하는 최신 보안 업데이트를 적용하거나 커널을 수정된 버전으로 업그레이드 후 재부팅
🔧 검증 코드
출력된 커널 버전을 배포판의 보안 권고문(CVE-2026-98374 수정 버전)과 비교하여 수정된 커널인지 확인하고, 수정 버전 이상이면 패치 적용된 것입니다.