CVE-2026-18418: Out-of-bounds read when the zbus proxy agent IPC backend logs a rejected peer frame's channel name

Published Oct 11, 2026
·
Updated

The zbus proxy agent IPC backend in subsys/zbus/proxyagent/zbusproxyagentipc.c logged the channel name of a rejected inter-domain frame with a plain %s conversion. The frame type struct zbusproxymsg carries a fixed-size channelname[] array as its last member, and nothing in the transport guarantees the array is NUL-terminated. The only code that verifies termination is zbusproxyagentreceivecb() in subsys/zbus/proxyagent/zbusproxyagent.c, which rejects the frame in precisely those cases — so the warning printed a non-terminated buffer exactly on the error paths where the name had been found invalid (or, for an invalid messagesize, had not been inspected at all).

Any peer domain able to place a frame of sizeof(struct zbusproxymsg) bytes on the bound ipcservice endpoint can trigger it, by sending a frame with an out-of-range messagesize or with channelname[] containing no NUL byte. Reaching the code requires CONFIGZBUSPROXYAGENTIPC and logging built at warning level or above (the default), and requires control over the firmware of the peer domain — typically a second core on the same SoC.

The resulting strlen() inside the log packager walks past the end of the frame object until it finds a zero byte. With the icmsg backend the frame lives in a stack buffer of the IPC work-queue thread, so bytes of that thread's stack are rendered into the log message; with the rpmsg backends the scan continues through the shared vring memory. Impact is bounded to disclosure of a small amount of adjacent memory into the receiving domain's log sink, plus a possible fatal fault if the scan leaves a mapped region; the log packager's own -ENOSPC bound prevents the overrun from becoming a write. The fix bounds the conversion with %.s and MIN(msg->channelnamelen, sizeof(msg->channelname)).

Affected Software

1 affected component
Zephyr Project Zephyr RTOS

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Compensating control

    In subsys/zbus/proxy_agent/zbus_proxy_agent_ipc.c, replace the plain %s conversion used to log a rejected frame's channel name with a bounded %.*s conversion, limiting the length to MIN(msg->channel_name_len, sizeof(msg->channel_name)).

Event History

Oct 11, 2026
CVE Published
via MITRE·05:15 PM
Data Sourced
via MITRE·05:15 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Which deployments are exposed?

Only deployments that enable CONFIG_ZBUS_PROXY_AGENT_IPC and have logging compiled at warning level or above are affected. Warning-level logging is the default, but the IPC proxy-agent backend must also be enabled.

2

What access does an attacker need?

An attacker needs control of firmware in a peer domain that can send a frame of sizeof(struct zbus_proxy_msg) bytes to the bound ipc_service endpoint. This is typically another core on the same SoC, rather than a remote unauthenticated party.

3

What input triggers the issue?

A peer can trigger the out-of-bounds read by sending a frame with an out-of-range message_size or a channel_name array with no NUL byte. The vulnerable logging occurs while reporting the rejected frame.

4

What can be done if the update cannot be applied immediately?

Avoid enabling CONFIG_ZBUS_PROXY_AGENT_IPC where it is not needed, and prevent untrusted or compromised peer-domain firmware from placing frames on the bound IPC endpoint. The vulnerable path also depends on warning-level-or-higher logging being compiled in.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203