🇰🇷 한글 설명
IPv6 nexthop 객체를 loopback 디바이스로 생성할 때 fib6_nh_init()이 이를 reject route로 잘못 분류하여 nhc_pcpu_rth_output 메모리 할당을 건너뜁니다. IPv4 route가 이 nexthop을 참조할 때 NULL pointer dereference로 커널 패닉이 발생합니다.
💡 쉬운 설명
Linux 네트워크 설정 중 특정 라우팅 규칙 설정 시 시스템이 충돌할 수 있습니다. 잘못된 메모리 할당으로 인해 커널이 존재하지 않는 메모리에 접근하려고 하기 때문입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: ipv6: fix panic when IPv4 route references loopback IPv6 nexthop
When a standalone IPv6 nexthop object is created with a loopback device
(e.g., "ip -6 nexthop add id 100 dev lo"), fib6_nh_init() misclassifies
it as a reject route. This is because nexthop objects have no destination
prefix (fc_dst=::), causing fib6_is_reject() to match any loopback
nexthop. The reject path skips fib_nh_common_init(), leaving
nhc_pcpu_rth_output unallocated. If an IPv4 route later references this
nexthop, __mkroute_output() dereferences NULL nhc_pcpu_rth_output and
panics.
Simplify the check in fib6_nh_init() to only match explicit reject
routes (RTF_REJECT) instead of using fib6_is_reject(). The loopback
promotion heuristic in fib6_is_reject() is handled separately by
ip6_route_info_create_nh(). After this change, the three cases behave
as follows:
1. Explicit reject route ("ip -6 route add unreachable 2001:db8::/64"):
RTF_REJECT is set, enters reject path, skips fib_nh_common_init().
No behavior change.
2. Implicit loopback reject route ("ip -6 route add 2001:db8::/32 dev lo"):
RTF_REJECT is not set, takes normal path, fib_nh_common_init() is
called. ip6_route_info_create_nh() still promotes it to reject
afterward. nhc_pcpu_rth_output is allocated but unused, which is
harmless.
3. Standalone nexthop object ("ip -6 nexthop add id 100 dev lo"):
RTF_REJECT is not set, takes normal path, fib_nh_common_init() is
called. nhc_pcpu_rth_output is properly allocated, fixing the crash
when IPv4 routes reference this nexthop.
📍 영향받는 시스템
Linux kernel (IPv6 nexthop 및 경로 설정 기능 포함된 버전)
⚔️ 공격 벡터
로컬 사용자가 'ip -6 nexthop add id 100 dev lo' 등으로 IPv6 nexthop 생성 후 IPv4 route 참조 시 커널 패닉 유발
🛡️ 대응 방법
Linux 커널을 CVE-2026-23300 패치가 적용된 최신 버전으로 업그레이드
🔧 검증 코드
커널 버전과 iproute2 버전을 확인하여 최신 패치가 적용되었는지 배포판 보안 공지 기준으로 검증
cat /proc/version && ip -V 2>/dev/null