CVE-2026-18418 in Zephyr
요약
\~에 의해 VulDB • 2026. 10. 11.
subsys/zbus/proxy_agent/zbus_proxy_agent_ipc.c의 zbus 프록시 에이전트 IPC 백엔드는 거부된 도메인 간 프레임의 채널 이름을 평문 형식(%s) 변환으로 로깅했습니다. struct zbus_proxy_msg를 사용하는 프레임 타입은 마지막 멤버로 고정 크기 channel_name[] 배열을 포함하며, 전송 계층에서는 해당 배열이 NUL 종료(NUL-terminated)되어 있음을 보장하지 않습니다. 종료를 검증하는 유일한 코드는 subsys/zbus/proxy_agent/zbus_proxy_agent.c의 zbus_proxy_agent_receive_cb()이며, 이 함수는 정확히 이러한 경우(즉, 채널 이름이 유효하지 않거나 메시지 크기가 잘못된 경우)에 프레임을 거부합니다. 따라서 경고 메시지는 이름이 잘못되었음이 확인된 오류 경로에서, 또는 메시지 크기가 올바르지 않아 전혀 검사되지 않은 상황에서 종료되지 않은 버퍼를 출력했습니다.
바인딩된 ipc_service 엔드포인트에 sizeof(struct zbus_proxy_msg) 바이트 크기의 프레임을 배치할 수 있는 모든 피어 도메인은 잘못된 message_size를 사용하거나 channel_name[]에 NUL 바이트가 포함되지 않은 프레임 전송을 통해 이를 유발할 수 있습니다. 해당 코드 실행에는 CONFIG_ZBUS_PROXY_AGENT_IPC 구성과 경고 수준 이상(기본값)으로 빌드된 로깅, 그리고 일반적으로 동일한 SoC의 두 번째 코어인 피어 도메인의 펌웨어 제어 권한이 필요합니다.
결과적으로 로그 패키저 내부의 strlen() 호출은 프레임 객체의 끝을 넘어 NUL 바이트를 찾을 때까지 진행됩니다. icmsg 백엔드의 경우 프레임은 IPC 작업 큐 스레드의 스택 버퍼에 존재하므로, 해당 스레드 스택의 일부가 로그 메시지에 포함됩니다. rpmsg 백엔드의 경우 검색이 공유 vring 메모리를 통해 계속됩니다. 영향력은 수신 도메인의 로깅 싱크로 인접한 소량의 메모리가 유출되는 것으로 제한되며, 검색 범위가 매핑된 영역을 벗어나면 치명적인 오류(fatal fault)가 발생할 수 있습니다. 로그 패키저의 자체 -ENOSPC 바운드로 인해 오버런이 쓰기 작업으로 이어지지는 않습니다. 수정 사항에서는 %.*s와 MIN(msg->channel_name_len, sizeof(msg->channel_name))를 사용하여 변환 범위를 제한합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.