CVE-2026-13479 in Zephyr
요약
\~에 의해 VulDB • 2026. 08. 27.
LoRaWAN 애플리케이션 계층의 클록 동기화 서비스는 clock_sync_package_callback()(subsys/lorawan/services/clock_sync.c)에서 다운링크를 파싱합니다. 해당 명령어 루프는 1바이트 길이의 명령어 ID가 범위를 벗어나지 않는 것만 보장하며, CLOCK_SYNC_CMD_APP_TIME(AppTimeAns) 명령어의 핸들러는 sys_get_le32()를 통해 4바이트의 시간 보정값과 1바이트의 토큰을 읽지만, 수신 버퍼에 5바이트가 남아있는지(len - rx_pos) 확인하지 않습니다. 따라서 길이가 짧은 또는 조작된 AppTimeAns는 복호화된 페이로드 끝에서 최대 5바이트를 초과하여 읽어옵니다.
페이로드(rx_buf/len)는 등록된 다운링크 콜백(mcps_indication->Buffer/BufferSize)으로 전달되는 복호화된 애플리케이션 프레임입니다. 핸들러에 도달하려면 clock-sync 포트의 프레임이 LoRaWAN의 MAC 무결성 검사 및 FRMPayload 복호화를 통과해야 하므로, 실제 공격자는 임의의 무선 수신자가 아닌 악의적이거나 침해된 네트워크/애플리케이션 서버(AppTimeAns의 지정된 발신자) 또는 세션 키를 보유한 당사자에 한정됩니다.
과도한 읽기(over-read)는 제한적입니다: 백킹 스토어는 고정된 255바이트 정적 버퍼이므로, 몇 바이트가 벗어난다고 해서 메모리 오류(fault)가 발생하지 않으며, 읽은 값(time_correction, token)은 내부에서만 사용되고 전송되지 않으므로 공격자에게 정보가 유출되거나 크래시가 발생하지 않습니다. 유일한 영향은 ctx.req_token과 일치하는 오래된 토큰이 장치의 자체 클록 오프셋(ctx.time_offset)에 무효한 시간 보정값을 적용하여, 피해자의 시간 추정치에만 국부적인 무결성 영향을 미친다는 점입니다. 수정 패치는 너무 짧은 AppTimeAns를 삭제하기 위한 명시적 길이 검사를 추가합니다. 주기성 및 강제 재동기화 핸들러의 형제인 1바이트 읽기도 동일한 경미한 영향으로 보호되지 않은 상태로 남아 있습니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.