Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessExecute unprivileged user thread on target device
-
DeliveryInvoke log_filter_set syscall with negative src_id (e.g., -1)
-
ExploitBypass signed comparison in z_vrfy_log_filter_set verifier
-
ExecutionImplicit uint32_t widening converts -1 to 0xFFFFFFFF in get_dynamic_filter
-
PersistSupervisor-mode OOB read-modify-write to attacker-offset kernel address
-
ImpactCorrupt kernel data structure to escalate privileges
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Two non-default Zephyr Kconfig build options must both be active in the target firmware image: CONFIG_USERSPACE=y, which enables Zephyr's user/kernel memory separation and the syscall dispatcher mechanism, and CONFIG_LOG_RUNTIME_FILTERING=y, which enables the log_filter_set syscall and the vulnerable z_vrfy_log_filter_set() verifier. Firmware built without either option does not contain the vulnerable code path. Beyond the build requirements, the attacker must be executing code as a Zephyr user-thread (low-privilege local access, consistent with CVSS PR:L/AV:L) - not an operator, supervisor thread, or remote network actor. The constrained nature of the write (3 bits within a targeted 32-bit word) means practical privilege escalation additionally requires knowledge of kernel memory layout to select a useful target address, raising real-world exploitation difficulty beyond what AC:L alone implies. Limits on exploitation: local-only attack surface, non-default build configuration required, constrained write width demands kernel internals knowledge for reliable weaponization. |
| Impact | The CVSS 3.1 score of 7.8 (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) accurately captures the local, low-privilege attack profile: a meaningful barrier in single-tenant embedded deployments but a realistic threat in scenarios where untrusted application code runs alongside privileged firmware. The EPSS score of 0.10% (1st percentile) and SSVC decision of exploitation:none/automatable:no/technical-impact:partial are consistent with each other and indicate no current mass-exploitation activity; the low automatable rating reflects the requirement for device-local code execution rather than a network-reachable interface. The SSVC technical-impact rating of 'partial' may modestly understate the theoretical ceiling - the write primitive executes in supervisor mode and targets a kernel-controlled address, providing a credible privilege escalation path even though the write is constrained to 3 bits - but it is defensible given zero observed exploitation. Even a mid-sized municipal IT team in bytom operating Zephyr-based embedded control systems should treat this as a priority remediation if their firmware builds enable both CONFIG_USERSPACE and CONFIG_LOG_RUNTIME_FILTERING, since those builds are fully exposed regardless of network isolation. The gap between the CVSS full CIA:H impact and the SSVC 'partial' assessment is worth flagging: CVSS assumes successful exploitation to maximum effect, while SSVC reflects real-world exploitation evidence - both are informative, neither should be dismissed. Net assessment: high theoretical severity on affected configurations, very low current exploitation probability, and a straightforward patch is available. |
| Exploit ScenarioDerived | An attacker with the ability to execute unprivileged user-thread code on a Zephyr device - for instance, a sandboxed application on a multi-application embedded platform - calls the log_filter_set syscall with a negative src_id value such as -1. The userspace verifier passes the signed comparison, the value enters kernel code unchecked, and the implicit uint32_t conversion produces index 0xFFFFFFFF, directing a supervisor-mode 3-bit write to an address immediately before the log_dynamic section. By choosing the src_id offset to target a kernel data structure (such as a thread capability set or memory domain entry), a sophisticated attacker could convert this constrained write into full privilege escalation. No public exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Aug 12, 2026
Kernel privilege escalation in Zephyr RTOS v3.3.0-v4.4.1 is enabled by a signed/unsigned integer comparison error in the userspace syscall verifier for log_filter_set. An unprivileged user thread can supply a negative src_id value that bypasses the userspace bounds check, propagates into supervisor-mode kernel code, and - after implicit widening to uint32_t - indexes far out of bounds into kernel memory adjacent to the log_dynamic linker section, producing a constrained but attacker-directed read-modify-write primitive exploitable for privilege escalation. No public exploit has been identified at time of analysis; the fix, which replaces the flawed signed comparison with an unsigned one, is available in commit 56a15114.
Earlier versions of this analysis (1)
We need to produce a JSON with the exact fields. First, parse the CVE data:
CVE ID: CVE-2026-10682 Description: The userspace verifier z_vrfy_log_filter_set() for the log_filter_set syscall in subsys/logging/log_mgmt.c performed a signed comparison against the int16_t src_id parameter: src_id < (int16_t)log_src_cnt_get(domain_id). Any negative value for src_id (e.g. -1) trivially satisfied this check and was forwarded into z_impl_log_filter_set, where it propagated to filter_set() and ultimately to get_dynamic_filter(), which uses source_id as an unsigned index into the linker-section array &TYPE_SECTION_START(log_dynamic)[source_id].filters. After implicit conversion through uint32_t, an int16_t -1 becomes 0xFFFFFFFF, indexing log_dynamic far out of bounds and causing the kernel to perform an OOB read and an OOB read-modify-write (LOG_FILTER_SLOT_GET/SET) against memory adjacent to the log_dynamic section. The written value is a constrained 3-bit log level slot within the targeted 32-bit word, but the target address is attacker-chosen (a small negative offset from log_dynamic) and the write occurs in supervisor mode following a syscall from an unprivileged user thread, providing a kernel memory-corruption / privilege-escalation primitive. The defect is reachable on any build with CONFIG_USERSPACE=y and CONFIG_LOG_RUNTIME_FILTERING=y. Present from Zephyr v3.3.0 through v4.4.1. The fix replaces the signed bound check with an unsigned comparison: (uint32_t)src_id < log_src_cnt_get(domain_id), which correctly rejects negative inputs.
CVSS Score: 6.6 CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:H CWE: CWE-787
Multi-source intelligence: Patch: Available from vendor Reported by: zephyr CPE (affected products): cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:* Tags: Memory Corruption, Buffer Overflow, Zephyr References: [cveorg] (patch) https://github.com/zephyrproject-rtos/zephyr/commit/56a15114c6acbab2067fe406dc3adda8608f3def [cveorg] (None) https://github
RemediationAI
Upgrade to Zephyr 4.5.0 or later, which incorporates the fix in commit 56a15114c6acbab2067fe406dc3adda8608f3def (https://github.com/zephyrproject-rtos/zephyr/commit/56a15114c6acbab2067fe406dc3adda8608f3def); the upstream patch is a single-line change replacing the signed comparison with an unsigned one in z_vrfy_log_filter_set(). The vendor security advisory is at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-6vqh-mg7h-58qh. For deployments that cannot immediately rebuild and redeploy firmware, two Kconfig-level workarounds exist: disabling CONFIG_LOG_RUNTIME_FILTERING eliminates the vulnerable syscall path entirely at the cost of losing runtime log-level filtering capability, which may affect diagnostic workflows but carries no security downside; alternatively, disabling CONFIG_USERSPACE removes the entire user/kernel separation model, which eliminates the attack surface but also removes Zephyr's memory protection architecture - a significant security regression that should only be used as a last resort on hardware with no untrusted code paths. Both workarounds require a firmware rebuild and physical or OTA redeployment.
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
Zephyr RTOS is an open-source real-time operating system maintained by the Zephyr Project (CPE: cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:*), primarily targeting embedded and IoT platforms. The defect is classified CWE-787 (Out-of-Bounds Write) and resides in z_vrfy_log_filter_set(), the userspace syscall verifier in subsys/logging/log_mgmt.c. The verifier is responsible for validating syscall arguments before forwarding them to the kernel-side implementation z_impl_log_filter_set(). The flaw is a classic signed-to-unsigned integer widening bug: the comparison src_id < (int16_t)log_src_cnt_get(domain_id) treats src_id as signed, so any negative value (e.g., -1) satisfies the check and is forwarded unchecked. Once inside the kernel, get_dynamic_filter() implicitly converts the int16_t to uint32_t - per C promotion rules, -1 becomes 0xFFFFFFFF - and uses that value as a direct index into the linker-section array TYPE_SECTION_START(log_dynamic)[source_id]. The resulting LOG_FILTER_SLOT_GET/SET operations perform a 3-bit read-modify-write to a supervisor-mode address controlled by the signed offset, corrupting kernel memory. The fix (commit 56a15114c6acbab2067fe406dc3adda8608f3def) corrects the comparison to (uint32_t)src_id < log_src_cnt_get(domain_id), which correctly rejects all negative inputs via unsigned arithmetic.
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:L/UI:N/S:U/C:H/I:H/A:H
Local unprivileged code execution is the sole runtime prerequisite once both Kconfig options are compiled in; full CIA impact reflects the supervisor-mode kernel memory corruption primitive.
Primary rating from Vendor (zephyr).
CVSS VectorNVD
Lifecycle Timeline
3DescriptionNVD
The userspace verifier z_vrfy_log_filter_set() for the log_filter_set syscall in subsys/logging/log_mgmt.c performed a signed comparison against the int16_t src_id parameter: src_id < (int16_t)log_src_cnt_get(domain_id). Any negative value for src_id (e.g. -1) trivially satisfied this check and was forwarded into z_impl_log_filter_set, where it propagated to filter_set() and ultimately to get_dynamic_filter(), which uses source_id as an unsigned index into the linker-section array &TYPE_SECTION_START(log_dynamic)[source_id].filters.
After implicit conversion through uint32_t, an int16_t -1 becomes 0xFFFFFFFF, indexing log_dynamic far out of bounds and causing the kernel to perform an OOB read and an OOB read-modify-write (LOG_FILTER_SLOT_GET/SET) against memory adjacent to the log_dynamic section.
The written value is a constrained 3-bit log level slot within the targeted 32-bit word, but the target address is attacker-chosen (a small negative offset from log_dynamic) and the write occurs in supervisor mode following a syscall from an unprivileged user thread, providing a kernel memory-corruption / privilege-escalation primitive.
The defect is reachable on any build with CONFIG_USERSPACE=y and CONFIG_LOG_RUNTIME_FILTERING=y. Present from Zephyr v3.3.0 through v4.4.1. The fix replaces the signed bound check with an unsigned comparison: (uint32_t)src_id < log_src_cnt_get(domain_id), which correctly rejects negative inputs.
Executive ViewAI
Zephyr RTOS versions 3.3.0 through 4.4.1 contain a kernel vulnerability that enables unprivileged users to escalate privileges and gain unauthorized elevated access. This affects organizations using Zephyr in embedded systems, IoT devices, and control systems where privilege escalation could lead to complete system compromise, unauthorized access to sensitive operations, or data theft. Immediate remediation is critical to prevent exploitation of this high-severity vulnerability.
Apply vendor patch.
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.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
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-49398
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB