CVE-2026-102714 in NetX Duo정보

요약

\~에 의해 VulDB • 2026. 09. 29.

`_nx_icmpv6_validate_options()` 함수는 `while (length > 2)` (`common/src/nx_icmpv6_validate_options.c:79`) 조건으로 옵션 영역을 스캔합니다. 크기가 1바이트 또는 2바이트의 잔여분(residue)을 남기는 경우, 해당 꼬리 부분은 검사되지 않은 채로 루프를 종료하며, 잔여분이 음수가 아니므로 함수는 `NX_SUCCESS`를 반환합니다. 이로 인해 길이 0에 대한 거부 처리가 그 바이트들을 확인하지 못하게 됩니다.

그 후 모든 소비자는 동일한 영역을 다시 순회하면서, 잔여분에서 2바이트 옵션 헤더를 읽고 `nx_icmpv6_option_length << 3` 값을 빼는데, 이때 0 체크나 남은 길이 체크가 수행되지 않습니다. 공격자가 제어할 수 있는 바이트에 따라 세 가지 결과가 발생합니다.

**길이 0 바이트.** 순회자는 0을 빼고 0만큼 전진합니다. 모든 네 가지 처리기(_nx_icmpv6_process_ra (`nx_icmpv6_process_ra.c:245, :528`), `_nx_icmpv6_process_ns` (`:251, :329`), `_nx_icmpv6_process_na` (`:147, :156`) 및 `_nx_icmpv6_process_redirect` (`:247, :350)`))가 무한 루프에 빠집니다. 이 순회는 최고 우선순위 스레드인 IP 스레드에서 실행되며, 루프 내부에서 양보(yield)하지 않으므로 시스템은 워치독 리셋이 발생할 때까지 멈추며, 각 경우마다 프레임이 재재생될 수 있습니다.

**짧은 잔여분 상의 0이 아닌 길이 바이트.** 세 개의 부호 없는 카운터가 오버플로우(underflow)합니다 — `2 - 8`은 `0xFFFFFFFA`가 됩니다 — 그리고 순회가 패킷 버퍼를 넘어 계속되어, 메모리 오류(fault)가 발생하거나 길이 0 바이트를 만나고 멈출 때까지 읽습니다. 라우터 광고(Router Advertisement) 카운서는 부호 있는 값이므로 이 경우 깔끔하게 종료됩니다.

**1바이트 잔여분.** 순회자는 2바이트 옵션 헤더를 읽어 한 바이트를 초과하여 읽습니다(over-reading).

제어 불능의 순회 중, 링크 계층 주소 옵션으로 해석되는 유출된 바이트들이 네이버 캐시(`nx_icmpv6_process_ns.c:280, :293`)에 복사되고, 이후 해당 네이버로의 프레임 전송 시 목적지 MAC로 사용되어 패킷 외부 메모리가 링크 상에 노출됩니다. 코드 감사를 통해 확인되었으나 재현은 되지 않았습니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

책임이 있는

Eclipse

예약하다

2026. 09. 29.

모더레이션

수락

항목

VDB-411649

EPSS

0.00000

출처

Do you know our Splunk app?

Download it now for free!