🇰🇷 한글 설명
Linux 커널의 netfilter 구성 요소 중 nfnetlink_osf에서 0으로 나누기 오류가 발생하는 취약점입니다. CAP_NET_ADMIN 권한을 가진 사용자가 잘못된 지문(fingerprint) 값을 추가하면, 이후 TCP SYN 패킷 매칭 과정에서 커널 패닉이 발생하여 시스템이 중단될 수 있습니다.
💡 쉬운 설명
특정 권한을 가진 사용자가 잘못된 설정값을 입력하면 컴퓨터의 핵심인 커널이 계산 오류를 일으켜 시스템이 갑자기 멈추는 문제입니다. 이는 시스템을 강제로 재시작하게 만드는 서비스 거부(DoS) 공격으로 이어질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
netfilter: nfnetlink_osf: fix divide-by-zero in OSF_WSS_MODULO
nf_osf_match_one() computes ctx->window % f->wss.val in the
OSF_WSS_MODULO branch with no guard for f->wss.val == 0. A
CAP_NET_ADMIN user can add such a fingerprint via nfnetlink; a
subsequent matching TCP SYN divides by zero and panics the kernel.
Reject the bogus fingerprint in nfnl_osf_add_callback() above the
per-option for-loop. f->wss is per-fingerprint, not per-option, so
the check must run regardless of f->opt_num (including 0). Also
reject wss.wc >= OSF_WSS_MAX; nf_osf_match_one() already treats that
as "should not happen".
Crash:
Oops: divide error: 0000 [#1] SMP KASAN NOPTI
RIP: 0010:nf_osf_match_one (net/netfilter/nfnetlink_osf.c:98)
Call Trace:
<IRQ>
nf_osf_match (net/netfilter/nfnetlink_osf.c:220)
xt_osf_match_packet (net/netfilter/xt_osf.c:32)
ipt_do_table (net/ipv4/netfilter/ip_tables.c:348)
nf_hook_slow (net/netfilter/core.c:622)
ip_local_deliver (net/ipv4/ip_input.c:265)
ip_rcv (include/linux/skbuff.h:1162)
__netif_receive_skb_one_core (net/core/dev.c:6181)
process_backlog (net/core/dev.c:6642)
__napi_poll (net/core/dev.c:7710)
net_rx_action (net/core/dev.c:7945)
handle_softirqs (kernel/softirq.c:622)
📍 영향받는 시스템
Linux kernel (netfilter/nfnetlink_osf 모듈 사용 버전)
⚔️ 공격 벡터
CAP_NET_ADMIN 권한을 가진 로컬 사용자가 nfnetlink를 통해 wss.val이 0인 지문 값을 추가
🛡️ 대응 방법
커널 패치를 적용하여 nfnl_osf_add_callback() 단계에서 wss.val이 0이거나 최대값을 초과하는 경우를 차단하도록 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.