CVE-2026-13480 in Zephyr정보

요약

\~에 의해 VulDB • 2026. 08. 27.

LoRaWAN TS004의 Fragmented Data Block Transport 핸들러인 subsys/lorawan/services/frag_transport.c 내 frag_transport_package_callback() 함수는 각 접근 전에 충분한 페이로드 바이트가 남아 있는지 검증하지 않고 다운링크 명령어 바이트를 파싱합니다. 루프의 유일한 경계 조건은 rx_pos < len이며, 1바이트 길이의 명령어 ID를 소모한 후 핸들러는 rx_buf + rx_pos를 10바이트 구조체인 frag_transport_setup_req로 캐스팅하고, DATA_FRAGMENT 명령어의 경우 &rx_buf[rx_pos]를 프래먼트 디코더에 전달합니다. 이 디코서는 ctx.frag_size 바이트 정확히 읽으며, 두 경우 모두 남은 길이 확인이 없습니다.

프래먼트 크기는 선행 FRAG_SESSION_SETUP 명령어에서 공격자가 선택할 수 있습니다(ctx.frag_size = req->frag_size로 설정되며, CONFIG_LORAWAN_FRAG_TRANSPORT_MAX_FRAG_SIZE(기본값 232)로 제한됨). rx_buf는 loramac-node MAC 레이어의 255바이트 정적 MacCtx.RxPayload 버퍼를 가리키며, len은 실제 복호화된 페이로드 길이입니다. 공격자는 인덱스가 일치하지 않는 DATA_FRAGMENT 채움 명령어(각각 rx_pos를 3바이트씩 증가시키지만 응답을 생성하지 않음)로 다운링크를 패딩하고, 페이로드 끝부분 근처에 인덱스가 일치하는 프래먼트 하나를 추가함으로써 디코더가 RxPayload 끝보다 최대 약 frag_size 바이트까지 읽게 할 수 있습니다. 이를 통해 인접한 정적 메모리가 디코더 버퍼 및 FUOTA 플래시 이미지로 복사됩니다.

이 핸들러는 LoRaWAN 프레임 MIC와 FRMPayload 복호화를 이미 통과한 다운링크에서만 실행되므로, 이 결함은 장치의 세션 키를 보유한 당사(FUOTA 서버 또는 해당 키를 침해한 공격자)에게만 접근 가능합니다. 오버플로우된 바이트는 송신자에게 반환되지 않으며(발생하는 유일한 업링크는 프래먼트 개수를 포함하는 상태 응답임), 직접적인 정보 유출 채널이 없습니다. 또한 일반적인 평면 메모리 구조의 LoRaWAN MCU에서는 과읽기가 매핑된 메모리 영역 내에 머무르므로 크래시가 발생할 가능성은 낮습니다. 따라서 영향력은 제한된 기밀성 결과와 쓰기 또는 제어 흐름 원시 연산(write or control-flow primitive) 부재를 가진 경계 초과 읽기(bounded out-of-bounds read)입니다. 수정 패치는 각 접근 전에 남은 길이 검사(guards)를 추가합니다.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

책임이 있는

Zephyr

예약하다

2026. 06. 27.

모더레이션

수락

항목

VDB-395788

EPSS

0.00000

출처

Want to stay up to date on a daily basis?

Enable the mail alert feature now!