🔍 CVE-2026-10666

8.1
CVSS Score
HIGH
2026-07-12
2026-10-24 22:10
✅ 완료

🇰🇷 한글 설명

Zephyr OS의 parse_ipv4() 함수에서 포트 번호 부분을 고정된 17바이트 스택 버퍼로 복사할 때 길이 검증을 수행하지 않아 발생하는 스택 기반 버퍼 오버플로우 취약점입니다. 공격자가 조작된 긴 주소 문자열을 제공하면 메모리 오염을 통해 서비스 거부(DoS)를 유발하거나 실행 흐름을 탈취할 수 있습니다.

💡 쉬운 설명

네트워크 주소를 읽어들이는 과정에서 주소 뒤에 붙는 포트 번호의 길이를 확인하지 않아 발생하는 오류입니다. 너무 긴 주소를 입력하면 프로그램이 망가지거나 해커가 시스템을 조종할 위험이 있습니다.

🇺🇸 원문 (English)

parse_ipv4() in subsys/net/ip/utils.c (reached via net_ipaddr_parse() for strings of the form "a.b.c.d:port") copies the port substring into a fixed 17-byte stack buffer (char ipaddr[NET_IPV4_ADDR_LEN + 1]) using a length of str_len - end - 1, where str_len is the full, unbounded input length and end is only the (<=15-byte) offset of the ':' delimiter. Because the destination size is never consulted, a crafted address string with a long suffix after the colon (e.g. "1.2.3.4:" followed by hundreds of bytes) causes an out-of-bounds stack write whose length and contents are fully attacker-controlled (memcpy of the suffix plus a trailing NUL), enabling memory corruption and at minimum a denial of service, and potentially control-flow hijack. The parser is reached from the standard socket API (zsock_getaddrinfo / literal-address resolution), DNS server-string configuration, and the eswifi Wi-Fi co-processor DNS-response path, so an application that resolves a network-influenced address string is exposed. The bug was introduced when the parser was added (Zephyr v1.9.0) and shipped in all releases through v4.4.0. The fix removes the unbounded copy and validates the port length before copying into a small dedicated buffer. Note: the equivalent IPv6 "[addr]:port" path in parse_ipv6() retains the same unbounded copy at this commit and remains a separate, still-reachable instance of the defect.

📍 영향받는 시스템

Zephyr RTOS v1.9.0 ~ v4.4.0

⚔️ 공격 벡터

네트워크 주소 해석(Socket API, DNS 설정, Wi-Fi DNS 응답 등)을 통해 조작된 긴 IPv4 주소 문자열 전달

🛡️ 대응 방법

Zephyr RTOS를 포트 길이 검증 로직이 포함된 최신 패치 버전으로 업데이트

🔧 검증 코드

해당 소스 코드에서 고정 크기 버퍼(17바이트)를 사용하면서 길이 검증 없이 복사하는 로직이 존재하는지 확인

Shell / Script
grep -r "parse_ipv4" subsys/net/ip/utils.c | grep "char ipaddr[NET_IPV4_ADDR_LEN + 1]"

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

IBM WebSphere Application Server