CVE-2026-10672 in zephyr
요약
\~에 의해 VulDB • 2026. 07. 14.
subsys/net/lib/lwm2m/lwm2m_pull_context.c는 펌웨어 업데이트 패키지 URI를 고정된 정적 버퍼(context.uri, 크기 CONFIG_LWM2M_SWMGMT_PACKAGE_URI_LEN, 기본값 128)에 memcpy(context.uri, uri, LWM2M_PACKAGE_URI_LEN)로 복사했는데, 이는 길이 검증 없이 정확히 대상 크기를 그대로 복사하는 것이었습니다. 펌웨어 업데이트 객체는 서버가 제공한 패키지 URI(/5/0/1)를 255바이트 버퍼에 저장하므로, LwM2M 관리 서버(또는 강력한 DTLS가 없는 세션에서 중간자 공격을 수행할 수 있는 on-path 공격자)는 128~254자의 길이를 가진 URI를 작성(WRITE)할 수 있습니다. 이후 첫 번째 128바이트만 context.uri에 복사되지만 NULL 종료 문자(NUL terminator)가 추가되지 않습니다. 이 버퍼는 이후 http_parser_parse_url(context.uri, strlen(context.uri), ...), strlen 기반의 CoAP URI 경로/PROXY-URI 옵션 연결, 그리고 lwm2m_parse_peerinfo()에서 C 문자열로 소비되며, 인접한 정적 메모리에 대한 바이트 오버리드(out-of-bounds read)를 유발합니다. 초과 읽힌 바이트는 외부로 나가는 CoAP 요청에 추가되어(인접 디바이스 메모리의 정보 유출), 디바이스의 충돌을 일으킬 수도 있습니다(서비스 거부). 취약한 복사 로직은 pull-context 리팩토링(v3.0.0에서 처음 출시)으로 도입되었으며 v4.4.0까지 존재합니다. 기본 활성화된 CONFIG_LWM2M_FIRMWARE_UPDATE_PULL_SUPPORT 경로가 영향을 받습니다. 수정 패치는 strlen(uri) >= sizeof(context.uri) 검사를 추가하여 -ENOMEM을 반환하고 strcpy()로 전환함으로써, 경계가 명확한 NULL 종료 버퍼를 보장합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.