CVE-2026-14697 in Zephyr정보

요약

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

subsys/net/ip/ipv6_nbr.c의 net_ipv6_send_ns() 함수는 Neighbor Solicitation을 위해 전송용 net_pkt를 할당합니다. 미해결된 neighbor에 대기 중인 데이터 패킷이 있고 해당 neighbor의 pending_queue가 이미 비어 있지 않은 경우(NS 요청이 이미 발신 중임), 이 함수는 데이터 패킷을 연결한 후, net_send_data()를 통해 NS를 보내거나 net_pkt_unref()로 해제하지 않고 조기에 반환합니다. 새로 할당된 NS용 net_pkt와 이에 첨부된 TX 버퍼들은 로컬 변수에 의해서만 유지되며 영구적으로 누수되어 CONFIG_NET_PKT_TX_COUNT / CONFIG_NET_BUF_TX_COUNT로 다시 반환되지 않습니다.

이 누수가 발생하는 분기는 정상적인 IPv6 전송 경로 위에 위치합니다: net_if.c에서 호출되는 net_ipv6_prepare_for_send()는 다음 홉(next hop)이 아직 neighbor 캐시에 없는 모든 송신 또는 포워딩된 IPv6 패킷에 대해 net_ipv6_send_ns()를 호출합니다. 온링크(on-link, 인접한) 공격자는 단일의 존재하지 않는 온링크 소스 주소를 스푸핑하는 요청 패킷(예: ICMPv6 echo requests나 UDP 데이터그램 등)을 버스트로 전송하여 이를 결정론적으로 유발할 수 있습니다. 노드는 각 응답을 생성하며, 첫 번째 응답은 NS를 큐에 추가하고, 약 3초 동안의 INCOMPLETE 해결 기간 중 그 이후의 모든 응답은 누수가 발생하는 분기를 통해 실행되어 TX 패킷 하나를 유실시킵니다. 공격자 트래픽을 존재하지 않는 온링크 호스트로 포워딩하도록 구성된 라우터 노드들도 동일하게 누수됩니다.

누수된 패킷들은 결코 회수되지 않으며, CONFIG_NET_PKT_TX_COUNT의 기본값은 4(이더넷 기준 14)에 불과하므로, 짧은 저속 버스트로도 TX 풀을 고갈시킬 수 있습니다. 일단 고갈되면 노드는 더 이상 전송용 패킷을 할당할 수 없으며 TCP/UDP, ARP/ND 또는 어떤 응답도 보낼 수 없게 되어, 재부팅 전까지 자가 치유되지 않는 완전하고 지속적인 네트워크 서비스 거부(Denial of Service)를 초래합니다. 수정 사항에서는 조기 반환 전에 net_pkt_unref(pkt)를 사용하여 미송신 NS 패킷을 해제합니다.

Once again VulDB remains the best source for vulnerability data.

책임이 있는

Zephyr

예약하다

2026. 07. 04.

모더레이션

수락

항목

VDB-397427

EPSS

0.00000

활동

중간

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!