Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri — CVE-2026-10672에 대한 개념 증명 익스플로잇으로, Zephyr RTOS LwM2M 펌웨어 업데이트 풀 클라이언트의 out-of-bounds read(경계를 벗어난 읽기) 취약점입니다. 독립형 C 재현 코드와 테스트용 악성 CoAP/LwM2M 서버를 포함합니다. | Kitploit
도구/GitHubGitHub/hunt-benito/zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri
Embedded Systems SecurityIoT SecurityVulnerability AnalysisExploitationFuzzingPapers & ResearchLearning & EducationBinary Exploitation

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
hunt-benito/zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri

zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri

CVE-2026-10672에 대한 개념 증명 익스플로잇으로, Zephyr RTOS LwM2M 펌웨어 업데이트 풀 클라이언트의 out-of-bounds read(경계를 벗어난 읽기) 취약점입니다. 독립형 C 재현 코드와 테스트용 악성 CoAP/LwM2M 서버를 포함합니다.

저장소 보기
1개월 전아직 검토되지 않음

CVE-2026-10672 — Zephyr LwM2M 펌웨어 업데이트 OOB 읽기 PoC

CVE-2026-10672에 대한 개념 증명(PoC)으로, Zephyr RTOS의 LwM2M 펌웨어 업데이트 풀 클라이언트(subsys/net/lib/lwm2m/lwm2m_pull_context.c)에서 발생하는 범위를 벗어난 읽기(out-of-bounds read)입니다.

취약점

  • CVE: CVE-2026-10672
  • CVSS: 8.2 High (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:L)
  • CWE: CWE-125 (범위 밖 읽기)
  • Component: lwm2m_pull_context.c의 lwm2m_pull_context_start_transfer()
  • 근본 원인: memcpy(context.uri, uri, LWM2M_PACKAGE_URI_LEN)는 서버가 제공한 Package URI(/5/0/1)가 128바이트 이상일 때 char uri[128]에 NUL 종결자 없이 정확히 128바이트를 복사합니다. 이후 strlen(context.uri), http_parser_parse_url(), 그리고 CoAP PROXY_URI 옵션 추가 동작이 버퍼를 벗어나 인접한 구조체 메모리(is_firmware_uri, result_cb/write_cb 함수 포인터, DTLS 연결 컨텍스트)를 읽게 됩니다. 이렇게 초과 읽기된 바이트는 외부로 전송되는 CoAP 요청에서 유출됩니다.
  • Buffer: context.uri[128] (CONFIG_LWM2M_SWMGMT_PACKAGE_URI_LEN, 기본값 128; LWM2M_PACKAGE_URI_LEN은 이 값으로 #define됨)
  • 영향받는 버전: Zephyr v3.0.0 ~ v4.4.0 (복사 로직을 도입한 pull-context 리팩터링이 v3.0.0에 처음 포함됨)
  • 수정된 버전: Zephyr v4.4.1 및 v4.3.1
  • 수정 커밋: 99a164df5cea5af76e32b57c6d51854f018969a2 — strlen(uri) >= sizeof(context.uri) → -ENOMEM 검사를 추가하고 strcpy()로 전환합니다.

내용

파일용도
poc.c취약/수정 코드 경로를 독립적으로 재현하는 C 코드입니다. struct firmware_pull_context(초과 읽기가 발생하는 인접 필드 및 uri[128] 버퍼)와 정보 유출이 일어나는 CoAP 소비자 코드를 충실히 재선언합니다.

C 재현 코드 빌드 및 실행

root@kitploit:~
gcc -O0 -g -o poc poc.c
./poc

예상 결과: 200바이트 Package URI는 141바이트의 CoAP PROXY_URI 옵션을 생성합니다 — 128바이트 URI에 context.is_firmware_uri, 구조체 패딩, result_cb/write_cb 함수 포인터에서 유출된 13바이트가 더해진 것입니다. 수정된 코드 경로는 -ENOMEM으로 URI를 거부하고 아무것도 복사하지 않습니다.

ASan 확인

root@kitploit:~
gcc -O0 -g -fsanitize=address -o poc-asan poc.c
./poc-asan

프로브는 정확히 128바이트를 할당하고, NUL이 아닌 바이트로 채운 후(종결자가 없는 가득 찬 context.uri를 재현) strlen()을 호출합니다:

root@kitploit:~
ERROR: AddressSanitizer: heap-buffer-overflow
READ of size 129 at 0x...
0x... is located 0 bytes after 128-byte region [...,0x...)

악성 LwM2M 서버 실행

root@kitploit:~
# Build and inspect the CoAP packets without sending:
python3 lwm2m_evil_server.py --dry-run --uri-len 200

# Send to a vulnerable client (NoSec CoAP, UDP/5683):
python3 lwm2m_evil_server.py --target 10.0.0.42 --port 5683 --uri-len 200 --listen 2

이 스크립트는 CoAP PUT /5/0/1(Package URI 리소스에 대한 LwM2M Write)을 보낸 다음 CoAP POST /5/0/2(LwM2M Execute Update, 펌웨어 풀을 시작하여 버그를 유발함)을 보냅니다. 실제 LwM2M 환경에서는 세션이 DTLS(UDP/5684)를 통해 실행되며, 공격 범위에 해당하는 대상은 악의적/손상된 관리 서버이거나, DTLS 서버 인증이 적용되지 않는 경우 경로상(on-path) 공격자입니다.

전체 기사

https://www.hunt-benito.com/blog/zephyr-lwm2m-firmware-update-oob-read-cve-2026-10672-truncated-package-uri/

면책 조항

승인된 보안 연구 및 교육 목적으로만 사용하십시오. 소유하지 않았거나 테스트에 대한 명시적 허가를 받지 않은 기기에 이러한 도구를 사용하지 마십시오.

도구 다운로드
PROXY_URI
lwm2m_evil_server.py취약한 클라이언트의 /5/0/1에 UDP(NoSec 모드)로 과대 크기의 Package URI를 전달하는 최소한의 CoAP/LwM2M 서버입니다. 공격의 네트워크 전달 부분을 담당합니다. 외부 의존성이 없습니다.