CVE-2026-12364: memory-safety in zephyrproject zephyr
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.
AI Analysis
Technical Summary
The vulnerability exists because the user-space system-call verifier function z_vrfy_z_log_msg_static_create() in Zephyr OS's logging subsystem did not perform required K_SYSCALL_* validation checks on its arguments before passing them to the kernel-mode implementation. This allowed unprivileged user-mode threads to supply arbitrary pointers and lengths for source, desc, package, and data parameters. The kernel-mode handler then dereferenced these pointers without verification, leading to out-of-bounds reads of kernel memory. The impact includes kernel-mode denial of service due to faults on invalid pointer dereferences and potential disclosure of arbitrary kernel memory in log messages, violating the user/kernel memory isolation. The vulnerability does not permit kernel memory corruption or writes. The fix involves adding bounds checking on desc.package_len, rejecting mismatched non-NULL/length parameters, and applying K_SYSCALL_MEMORY_READ() checks to the pointers to ensure only valid user memory is accessed, causing kernel faults on invalid accesses instead of unsafe reads.
Potential Impact
An unprivileged user-mode thread can invoke the vulnerable syscall with crafted arguments to cause the kernel to dereference arbitrary kernel addresses, resulting in a denial of service via kernel faults. Additionally, if the log backend output is observable by the attacker, arbitrary kernel memory can be disclosed in emitted log messages, breaching confidentiality across the user/kernel boundary. There is no kernel memory corruption or privilege escalation possible through this vulnerability.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The described fix adds mandatory validation and bounds checking to the syscall verifier to prevent out-of-bounds reads and kernel faults. Until an official fix is available, restrict unprivileged user-mode thread access to this syscall if possible. Monitor vendor channels for patch releases and apply updates promptly once available.
CVE-2026-12364: memory-safety in zephyrproject zephyr
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.
CVSS v3.1
Score 8.4high
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability exists because the user-space system-call verifier function z_vrfy_z_log_msg_static_create() in Zephyr OS's logging subsystem did not perform required K_SYSCALL_* validation checks on its arguments before passing them to the kernel-mode implementation. This allowed unprivileged user-mode threads to supply arbitrary pointers and lengths for source, desc, package, and data parameters. The kernel-mode handler then dereferenced these pointers without verification, leading to out-of-bounds reads of kernel memory. The impact includes kernel-mode denial of service due to faults on invalid pointer dereferences and potential disclosure of arbitrary kernel memory in log messages, violating the user/kernel memory isolation. The vulnerability does not permit kernel memory corruption or writes. The fix involves adding bounds checking on desc.package_len, rejecting mismatched non-NULL/length parameters, and applying K_SYSCALL_MEMORY_READ() checks to the pointers to ensure only valid user memory is accessed, causing kernel faults on invalid accesses instead of unsafe reads.
Potential Impact
An unprivileged user-mode thread can invoke the vulnerable syscall with crafted arguments to cause the kernel to dereference arbitrary kernel addresses, resulting in a denial of service via kernel faults. Additionally, if the log backend output is observable by the attacker, arbitrary kernel memory can be disclosed in emitted log messages, breaching confidentiality across the user/kernel boundary. There is no kernel memory corruption or privilege escalation possible through this vulnerability.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The described fix adds mandatory validation and bounds checking to the syscall verifier to prevent out-of-bounds reads and kernel faults. Until an official fix is available, restrict unprivileged user-mode thread access to this syscall if possible. Monitor vendor channels for patch releases and apply updates promptly once available.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- zephyr
- Date Reserved
- 2026-06-16T03:53:43.597Z
- Cvss Version
- 3.1
- State
- PUBLISHED
- Remediation Level
- null
Threat ID: 6a7f5a78bf8831d53982103d
Added to database: 08/14/2026, 18:12:08 UTC
Last enriched: 08/14/2026, 18:27:49 UTC
Last updated: 08/15/2026, 02:03:23 UTC
Views: 8
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.