Description
The user-space system-call verifier z_vrfy_z_log_msg_static_create() in subsys/logging/log_msg.c was a pure pass-through: it forwarded the caller-supplied source, desc, package, and data arguments directly to the kernel-mode implementation z_impl_z_log_msg_static_create() without performing any of the mandatory K_SYSCALL_* checks. Because z_log_msg_static_create() is declared __syscall, under CONFIG_USERSPACE any unprivileged user-mode thread can invoke it directly with fully attacker-controlled arguments.

The kernel-mode handler dereferences each of these untrusted values: frontend_runtime_filtering() reads through the source pointer as a struct log_source_dynamic_data, cbprintf_package_copy() reads desc.package_len bytes from the package pointer, and z_log_msg_finalize() performs a memcpy() of desc.data_len bytes from the data pointer. With no verification, a user thread can supply arbitrary kernel addresses and arbitrary lengths, and the kernel will read from them.

The impact is a kernel-mode denial of service (the kernel faults dereferencing an attacker-chosen pointer) and, where a log backend output is observable to the attacker, disclosure of arbitrary kernel memory copied into the emitted log message — a confidentiality breach across the user/kernel boundary that the userspace sandbox is meant to enforce. The reads do not corrupt kernel memory, so there is no out-of-bounds write primitive.

The fix adds the required validation to the verifier: it bounds desc.package_len against Z_LOG_MSG_MAX_PACKAGE, rejects non-NULL/length mismatches, and applies K_SYSCALL_MEMORY_READ() to package, data, and (when runtime filtering with a frontend is enabled) source, so any out-of-bounds or kernel pointer now raises K_OOPS instead of being honored.
Published: 2026-08-14
Score: 8.4 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability resides in the user‑space verifier of the Zephyr logging system. The verifier simply forwards user‑supplied arguments to the kernel implementation without performing any K_SYSCALL_* checks. An unprivileged thread can therefore provide arbitrary kernel pointers and lengths. When the kernel processes these values, it dereferences and copies from them, which leads to a fault (kernel‑mode denial of service) and, if a log backend is visible, the leakage of arbitrary kernel memory. The flaw does not corrupt kernel memory, so there is no out‑of‑bounds write.

Affected Systems

Zephyr RTOS, as distributed by the zephyrproject:zephyr vendor, is affected when it contains the unpatched logging subsystem. The exact version is not specified, but any build that includes the current log_msg.c implementation before the patch commit 77aa26d8 is vulnerable.

Risk and Exploitability

Because the call is marked __syscall, any unprivileged user thread can invoke it, making exploitation straightforward from user space. The CVSS score of 8.4 reflects a high severity, yet the EPSS score is unknown; the vulnerability is not listed in CISA’s KEV catalog. An attacker that can read the back‑end logs can obtain kernel data, and an attacker that can trigger a fault can cause a denial of service. The lack of a write primitive limits the damage to reading and crash rather than crash‑and‑deface.

Generated by OpenCVE AI on August 14, 2026 at 19:22 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the patch from commit 77aa26d8b940f39778154f02563caf15d02efdac or upgrade Zephyr to a release that contains this change.
  • If an immediate update is not possible, disable or restrict the use of z_log_msg_static_create in unprivileged contexts and consider removing the logging backend that outputs to observable targets.
  • After applying the patch or disabling the feature, reboot or restart affected services to ensure the updated code is loaded.

Generated by OpenCVE AI on August 14, 2026 at 19:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 14 Aug 2026 19:45:00 +0000

Type Values Removed Values Added
First Time appeared Zephyrproject
Zephyrproject zephyr
Vendors & Products Zephyrproject
Zephyrproject zephyr

Fri, 14 Aug 2026 18:15:00 +0000

Type Values Removed Values Added
Description The user-space system-call verifier z_vrfy_z_log_msg_static_create() in subsys/logging/log_msg.c was a pure pass-through: it forwarded the caller-supplied source, desc, package, and data arguments directly to the kernel-mode implementation z_impl_z_log_msg_static_create() without performing any of the mandatory K_SYSCALL_* checks. Because z_log_msg_static_create() is declared __syscall, under CONFIG_USERSPACE any unprivileged user-mode thread can invoke it directly with fully attacker-controlled arguments. The kernel-mode handler dereferences each of these untrusted values: frontend_runtime_filtering() reads through the source pointer as a struct log_source_dynamic_data, cbprintf_package_copy() reads desc.package_len bytes from the package pointer, and z_log_msg_finalize() performs a memcpy() of desc.data_len bytes from the data pointer. With no verification, a user thread can supply arbitrary kernel addresses and arbitrary lengths, and the kernel will read from them. The impact is a kernel-mode denial of service (the kernel faults dereferencing an attacker-chosen pointer) and, where a log backend output is observable to the attacker, disclosure of arbitrary kernel memory copied into the emitted log message — a confidentiality breach across the user/kernel boundary that the userspace sandbox is meant to enforce. The reads do not corrupt kernel memory, so there is no out-of-bounds write primitive. The fix adds the required validation to the verifier: it bounds desc.package_len against Z_LOG_MSG_MAX_PACKAGE, rejects non-NULL/length mismatches, and applies K_SYSCALL_MEMORY_READ() to package, data, and (when runtime filtering with a frontend is enabled) source, so any out-of-bounds or kernel pointer now raises K_OOPS instead of being honored.
Title Missing user-space pointer validation in logging syscall z_log_msg_static_create allows kernel memory disclosure and denial of service
Weaknesses CWE-822
References
Metrics cvssV3_1

{'score': 8.4, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:H'}


Subscriptions

Zephyrproject Zephyr
cve-icon MITRE

Status: PUBLISHED

Assigner: zephyr

Published:

Updated: 2026-08-14T19:23:46.604Z

Reserved: 2026-06-16T03:53:43.597Z

Link: CVE-2026-12364

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-14T18:17:21.820

Modified: 2026-08-14T18:17:21.820

Link: CVE-2026-12364

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-14T19:30:04Z

Weaknesses
  • CWE-822

    Untrusted Pointer Dereference