Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessControl peer domain firmware (second core)
-
ExploitSend malformed frame on IPC endpoint
-
ExecutionTrigger unbounded strlen in log packager
-
ImpactLeak adjacent stack/vring memory into log
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK
1 technique across 1 tactic: Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires all of: CONFIG_ZBUS_PROXY_AGENT_IPC built into the firmware; logging enabled at warning level or above (the default); and the attacker holding control over the firmware of a peer domain bound to the ipc_service endpoint - typically a second core on the same SoC. The attacker then sends a frame of exactly sizeof(struct zbus_proxy_msg) bytes with either an out-of-range message_size or a channel_name[] array containing no NUL byte, hitting the rejection path that logs the non-terminated name. Limiting factors: exploitation is local to the SoC's inter-domain IPC (not remotely reachable), demands high privilege in the form of a compromised/malicious peer core (PR:H), and is void if the proxy-agent IPC Kconfig is disabled or logging is below warning level. |
| Impact | This is a genuinely low-priority issue, and the multiple signals agree rather than conflict. The CVSS 3.1 base score is 3.4 (Low) with vector AV:L/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:L, which my independent reading of the description confirms: the vector is local (an IPC endpoint on the same SoC, not network), and exploitation requires PR:H because the attacker must already control the firmware of a peer domain - typically a second core on the same chip. There is no CISA KEV listing and no public exploit identified at time of analysis, and no EPSS score was provided in the input. The technical impact is bounded disclosure of a small amount of adjacent memory (IPC thread stack with the icmsg backend, or shared vring memory with rpmsg backends) into the receiving domain's log sink, with a possible fatal fault - the log packager's own -ENOSPC bound prevents the out-of-bounds read from ever becoming a write. In short, this is a low-CVSS AND low-real-risk issue: it requires a strong precondition (a compromised or malicious peer core), yields only limited info disclosure or a crash, and has no evidence of exploitation. Note one dependency the raw CVSS does not capture: exploitability also requires CONFIG_ZBUS_PROXY_AGENT_IPC to be built and logging at warning level or above (the default), so non-default build configurations may not be affected at all. |
| Exploit ScenarioDerived | In a multi-core Zephyr SoC where one core runs attacker-controlled firmware, the malicious core places a frame of sizeof(struct zbus_proxy_msg) bytes on the bound ipc_service endpoint with either an out-of-range message_size or a channel_name[] array containing no NUL byte. The receiving domain rejects the frame but logs its channel name with a plain %s, causing strlen() to walk past the fixed-size buffer and render adjacent stack or shared-vring bytes into the log, disclosing a small amount of neighboring memory (or faulting if the scan leaves a mapped region). No public exploit code exists, and the attack requires prior control of the peer domain's firmware. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 11, 2026
An out-of-bounds memory read in the Zephyr RTOS zbus proxy agent IPC backend allows a peer domain that already controls its own firmware - typically a second core on the same SoC - to leak a small amount of adjacent memory into the receiving domain's log output. The flaw is a non-NUL-terminated channel_name[] array being printed with a plain %s conversion on the frame-rejection error path; it is only reachable when CONFIG_ZBUS_PROXY_AGENT_IPC is built and logging is at warning level or higher (the default). Impact is bounded to limited information disclosure (CVSS 3.4, AV:L/PR:H, C:L/A:L) and a possible fatal fault if the scan leaves a mapped region; there is no public exploit identified at time of analysis and no confirmed active exploitation.
RemediationAI
Apply the upstream vendor fix, commit fc065f79a568a6c6cc14b89795bd60e5eabd6f02, which bounds the conversion in subsys/zbus/proxy_agent/zbus_proxy_agent_ipc.c with %.*s and MIN(msg->channel_name_len, sizeof(msg->channel_name)); the change is minimal and carries no functional side effects, and the advisory GHSA-48w8-fjhj-r9w8 should be consulted for the vendor's recommended release or backport. Patch availability is per the vendor, but because the reference resolves to an upstream commit rather than a tagged release, a patched version number is not independently confirmed - verify against your Zephyr revision or vendor SDK before assuming a build is fixed. Where patching is not immediately possible, drop the log level below warning so the vulnerable LOG_WRN path is compiled out or suppressed (side effect: loss of proxy-agent error diagnostics), or disable the backend entirely by turning off CONFIG_ZBUS_PROXY_AGENT_IPC and using a different zbus transport (side effect: the proxy agent no longer functions across the IPC boundary). Because exploitation requires a peer core with attacker-controlled firmware, hardening the secure boot and firmware-signing chain for every domain on the SoC - not just the receiving one - removes the PR:H precondition more durably than any single code fix, at the cost of additional provisioning and key-management overhead.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The issue is a CWE-125 out-of-bounds read rooted in the Zephyr zbus proxy agent's inter-domain IPC transport. The wire frame type struct zbus_proxy_msg carries a fixed-size channel_name[] array as its final member, and neither the ipc_service transport nor the frame format guarantees that array is NUL-terminated. Validation of termination lives exclusively in zbus_proxy_agent_receive_cb() in subsys/zbus/proxy_agent/zbus_proxy_agent.c, which rejects the frame exactly in the cases where the name is invalid - meaning the warning in zbus_proxy_agent_ipc_recv_callback() (subsys/zbus/proxy_agent/zbus_proxy_agent_ipc.c) prints the unterminated buffer precisely on the error paths where the name was never validated (or, for an out-of-range message_size, was not inspected at all). Because the log back end expands %s with strlen(), it walks beyond the end of the frame object: on the icmsg backend the frame lives in a stack buffer owned by the IPC work-queue thread, so thread stack bytes are rendered into the log line, while on the rpmsg backends the scan traverses shared vring memory. The log packager's own -ENOSPC bound prevents the overrun from becoming a write, so the primitive is a read-only disclosure, with a possible fatal fault if the scan runs off a mapped region. The upstream fix replaces %s with %.*s bounded by MIN(msg->channel_name_len, sizeof(msg->channel_name)).
Know when Zephyr gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:L
AV:L and PR:H because the attacker must control peer-domain firmware on the same SoC to place frames on the local IPC endpoint; C:L for limited memory disclosure, A:L for possible fatal fault, I:N as no write occurs.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
The zbus proxy agent IPC backend in subsys/zbus/proxy_agent/zbus_proxy_agent_ipc.c logged the channel name of a rejected inter-domain frame with a plain %s conversion. The frame type struct zbus_proxy_msg carries a fixed-size channel_name[] array as its last member, and nothing in the transport guarantees the array is NUL-terminated. The only code that verifies termination is zbus_proxy_agent_receive_cb() in subsys/zbus/proxy_agent/zbus_proxy_agent.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 message_size, had not been inspected at all).
Any peer domain able to place a frame of sizeof(struct zbus_proxy_msg) bytes on the bound ipc_service endpoint can trigger it, by sending a frame with an out-of-range message_size or with channel_name[] containing no NUL byte. Reaching the code requires CONFIG_ZBUS_PROXY_AGENT_IPC 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->channel_name_len, sizeof(msg->channel_name)).
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),
An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on
Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit
Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS
Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner
Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability
Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable
DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul
zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(
Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul
The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte
Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c
EUVD-2026-97104
NVD
CVE.org
EPSS
GitHub
Exploit-DB