CVE-2026-10773 in Zephyr
요약
\~에 의해 VulDB • 2026. 08. 01.
DHCPv4 클라이언트 헬퍼 함수인 subsys/net/lib/dhcpv4/dhcpv4.c의 net_dhcpv4_msg_type_name()은 잘못된 경계 검사 후 정적 const char * 이름 테이블(요소 8개)에 인덱싱합니다. 사용된 가드 조건이 msg_type <= sizeof(name)였으며, 이는 msg_type <= ARRAY_SIZE(name)여야 합니다. sizeof는 포인터 배열의 바이트 크기(32비트 대상에서는 32, 64비트 대상에서는 64)를 반환하므로 요소 수인 8을 반환하지 않습니다. 따라서 메시지 타입 값이 9부터 해당 바이트 크기까지 검사 통과 후 name[msg_type - 1]에 접근하면 배열 끝을 넘어 읽게 됩니다.
msg_type 값은 DHCP MESSAGE TYPE 옵션에서 유래하며, 수신된 패킷으로부터 체크되지 않은 원시 바이트(net_pkt_read_u8)로 읽혀 수정 없이 조회 함수로 전달됩니다. 따라서 DHCP 서버 또는 클라이언트의 링크 위에 스푸핑된 DHCP 응답을 주입할 수 있는 모든 호스트는 인덱스를 경계 밖으로 유도할 수 있습니다. 이 범위를 벗어난 슬롯은 가짜 const char * 포인터를 반환하며, 이는 %s 로그 변환 과정에서 역참조됩니다.
이 조회 과정은 디버그 로그 문구(NET_DBG / LOG_DBG)에서만 호출되므로, 배열 바깥 읽기(out-of-bounds read)는 DHCPv4 로깅 모듈이 DEBUG 레벨(CONFIG_NET_DHCPV4_LOG_LEVEL_DBG)로 빌드될 때만 트리거됩니다. 이는 기본 구성이 아닙니다. 해당 조건에서 결과는 경계 밖 읽기와 와일드 포인터 역참조가 되며, 가장 가능성 높은 영향은 DHCP 클라이언트의 충돌(서비스 거부)이고, 로그 출력을 통해 인접한 포인터의 내용이 유출될 수도 있습니다. 수정 사항에서는 sizeof를 ARRAY_SIZE로 대체하여 올바른 1~8 범위의 허용 창을 복원합니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.