Skip to main content

Zephyr RTOS EUVDEUVD-2026-49398

| CVE-2026-10682 HIGH
Out-of-bounds Write (CWE-787)
2026-07-27 zephyr
7.8
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Execute unprivileged user thread on target device
  2. Delivery
    Invoke log_filter_set syscall with negative src_id (e.g., -1)
  3. Exploit
    Bypass signed comparison in z_vrfy_log_filter_set verifier
  4. Execution
    Implicit uint32_t widening converts -1 to 0xFFFFFFFF in get_dynamic_filter
  5. Persist
    Supervisor-mode OOB read-modify-write to attacker-offset kernel address
  6. Impact
    Corrupt 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv2 – 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)
v1 Jul 27, 2026 - 19:20 CVSS 6.6

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

Zephyr 3.0.0 <4.5.0

Affected Packages

euvd zephyr fix: 4.5.0

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

Vendor (zephyr) PRIMARY MEDIUM
NVD 7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.8 HIGH

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.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (zephyr).

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

3
Analysis Updated
Aug 12, 2026 - 14:44 vuln.today
v2 - CVSS changed
Severity Changed
Aug 12, 2026 - 14:37 NVD
MEDIUM HIGH
CVSS changed
Aug 12, 2026 - 14:37 NVD
6.6 (MEDIUM) 7.8 (HIGH)

DescriptionNVD

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Low
niche RTOS for embedded and IoT, limited enterprise footprint
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

39
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +39
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

More in Zephyr

View all
CVE-2023-4260 CRITICAL POC
10.0 Sep 27

Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),

CVE-2026-1678 CRITICAL POC
9.8 Mar 05

An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on

CVE-2023-5055 CRITICAL POC
9.8 Nov 21

Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit

CVE-2023-4257 CRITICAL POC
9.8 Oct 13

Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS

CVE-2023-3725 CRITICAL POC
9.8 Oct 06

Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner

CVE-2021-3323 CRITICAL POC
9.8 Oct 12

Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability

CVE-2021-3625 CRITICAL POC
9.8 Oct 05

Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable

CVE-2021-3319 CRITICAL POC
9.8 Oct 05

DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul

CVE-2018-1000800 CRITICAL POC
9.8 Sep 06

zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(

CVE-2023-4264 CRITICAL POC
9.6 Sep 27

Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul

CVE-2024-1638 CRITICAL POC
9.1 Feb 19

The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte

CVE-2023-5753 HIGH POC
8.8 Oct 25

Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy