CVE-2026-18746 in Zephyr정보

요약

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

subsys/net/lib/lwm2m/lwm2m_message_handling.c의 parse_write_op() 함수는 Block1 옵션을 포함하는 inbound CoAP WRITE/CREATE 요청을 처리합니다. 전송의 첫 번째 블록에 대해 이 함수는 init_block_ctx()를 호출한 후, 반환 코드를 검사하기 전에 peer가 선택한 block 크기를 block_ctx->ctx.block_size = block_size로 즉시 저장합니다. init_block_ctx()는 정적 pool인 static block1_contexts[]에서 사용 가능한 엔트리가 없거나 시간이 초과된 경우 caller의 포인터를 NULL로 설정하고 -ENOMEM을 반환하므로, 이후 store 연산은 NULL pointer를 dereference하게 됩니다.

이 pool에는 CONFIG_LWM2M_NUM_BLOCK1_CONTEXT 개(기본값 3)의 항목이 보유되며, 전송이 완료되거나 실패하거나 30초가 경과할 때까지 해당 엔트리는 회수되지 않습니다. 따라서 LwM2M 소켓에 도달 가능한 peer는 CoAP More 비트를 설정하여 세 개의 서로 다른 object 경로에서 block-wise writes를 시작하고 이를 미완료 상태로 남겨둔 후, 새로운 경로의 네 번째 write에 대한 첫 번째 블록을 전송하여 보호되지 않은 dereference 지점에 도달할 수 있습니다. 접근 가능성은 연결된 UDP 소켓의 source-address filter에만 의해 제한되며(기본값이 없는 CONFIG_LWM2M_DTLS_SUPPORT가 활성화되어 있지 않다면), NoSec 배포 환경에서는 on-path 공격자나 주소 스푸핑(attacker)에게 자격 증명이 필요하지 않습니다. 동일한 시퀀스는 bootstrap 서버 또는 신뢰도가 낮은 서버에서도 도달 가능하며, 네 개의 동시 block 전송을 실행하는 정당한 서버에 의해 우연히 발생하기도 합니다.

이 write는 0에서 7 사이의 값을 가진 고정된 저주소(low address)를 대상으로 하므로, 사용 가능한 memory-corruption primitive가 아닌 치명적인 메모리 오류(BusFault 또는 corrupted low memory로 인한 fault)가 발생합니다: 장치가 크래시하거나 리셋됩니다. 기밀성(confidentiality)과 무결성(integrity)에는 영향을 미치지 않습니다. 수정 사항은 store를 가드 아래로 이동하고, 반환 코드가 아닌 context pointer 자체를 유효성 검사하여 context가 실제로 유효한 경우에만 접근하도록 합니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

책임이 있는

Zephyr

예약하다

2026. 08. 03.

모더레이션

수락

항목

VDB-411218

EPSS

0.00000

활동

낮음

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!