CVE-2026-10669
Official description Straight from the sourceThe vendor's or NVD's own wording, published unedited. Authoritative, but often terse — it says what broke, rarely what to do.
NVD · uneditedOn Xtensa SoCs built with CONFIG_XTENSA_MPU and CONFIG_USERSPACE, arch_buffer_validate() in arch/xtensa/core/mpu.c — the architecture hook that verifies a user-mode-supplied buffer is accessible to the calling user thread with the requested permission — defaulted its return value to 0 (access permitted) and only set a denial result inside its per-MPU-region probe loop. When the rounded extent of the buffer wraps the 32-bit address space (size + alignment offset near SIZE_MAX, or ROUND_UP(size + offset) overflowing to 0), the loop executes zero iterations and the function returns 0 = permitted without probing any MPU region. The syscall-layer pre-checks (K_SYSCALL_MEMORY_SIZE_CHECK / Z_DETECT_POINTER_OVERFLOW) only catch a raw addr+size wrap and do not cover the ROUND_UP-induced wrap, and the string path (arch_user_string_nlen -> arch_buffer_validate) has no syscall-layer guard at all. An unprivileged user-mode thread can therefore pass a crafted (addr, size) to any syscall that validates user buffers via k_usermode_from_copy/to_copy or k_usermode_string_copy and have validation succeed for memory it must not access; the kernel then reads from (disclosure) or, with write=1, writes to (corruption) attacker-chosen kernel or other-partition memory on the thread's behalf, enabling information disclosure, memory corruption, privilege escalation, and denial of service. Affected from v3.7.0 (when Xtensa MPU userspace support was added) through v4.4.0. The fix changes the default to -EINVAL (deny by default), adds an explicit size_add_overflow check, and sets the success value only after the full range has been validated.
Technical summary Written by usOur analysis, written from the advisory, the CVSS vector and the affected-version data. It adds context the advisory leaves out, and never invents facts that are not in the source.
dbcve analysis · high confidenceOn Xtensa SoCs with CONFIG_XTENSA_MPU and CONFIG_USERSPACE enabled, the arch_buffer_validate() function incorrectly returns 0 (access permitted) by default. When a user-supplied buffer's rounded extent wraps the 32-bit address space, the MPU region validation loop executes zero iterations, causing the function to permit access without any actual validation. This allows unprivileged user threads to bypass memory access checks and read/write to arbitrary kernel or partition memory.
Verify against the referenced sources before acting — the references below are authoritative for this CVE, this summary is not.
Affected products & versions What the vendor confirmedThe version ranges the vendor confirmed as vulnerable. If your version sits inside a range here, treat yourself as exposed until you have upgraded.
NVD · CPE data>= 3.7.0, < 4.5.0CVSS breakdown How the score is builtThe industry scoring standard. It rates how the flaw is reached, what it takes to exploit, and what an attacker gains — the score is derived from those, not the other way round.
From the vector- Attack vector
- Local
- Complexity
- Low
- Privileges
- Low
- User interaction
- None
- Scope
- Unchanged
- Confidentiality
- High
- Integrity
- High
- Availability
- High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Am I affected? How to checkSteps we derive from the advisory and the affected-version data, so you can decide whether this CVE reaches your setup. They are a guide, not a scan — your own configuration is the authority.
dbcve checksWork through these to decide whether this CVE applies to you.
-
Identify the target SoC architectureCheck the hardware platform or SoC documentation, or inspect the build configuration (usually in .config or prj.conf) for Xtensa-specific definesAffected if The system uses an Xtensa-based SoC (e.g., ESP32 series)
-
Verify CONFIG_XTENSA_MPU is enabledInspect the kernel configuration file (typically .config or the generated devicetree) for the presence of CONFIG_XTENSA_MPU=yAffected if CONFIG_XTENSA_MPU is set to y in the build configuration
-
Verify CONFIG_USERSPACE is enabledInspect the kernel configuration file for the presence of CONFIG_USERSPACE=y or CONFIG_USERSPACE=mAffected if CONFIG_USERSPACE is enabled in the build configuration
-
Determine the Zephyr RTOS versionCheck the Zephyr version in the project (usually found in version.h, west.yml, or the SDK/release notes) and compare against v4.4.0Affected if The Zephyr version is older than v4.4.0 (prior to the fix)
-
Inspect arch_buffer_validate implementationIf accessible, examine the arch_buffer_validate function source code in the Xtensa architecture layer to verify if it returns -EINVAL by default (fixed) or 0 (vulnerable)Affected if The function returns 0 (permit) as default rather than -EINVAL (deny) when no validation iterations occur
A user is affected if their system uses an Xtensa SoC with both CONFIG_XTENSA_MPU and CONFIG_USERSPACE enabled, and runs Zephyr RTOS versions prior to v4.4.0, where arch_buffer_validate permits access by default instead of denying.
Generated from the published advisory. Verify against your own configuration.
Remediation Closing itWhat it takes to close this. Where a vendor fix exists we point at it; where none exists we say so plainly, and can build one. Effort estimates are scoped from the advisory, not from your codebase.
dbcve · scoped4.5.0
Upgrade Zephyr RTOS to v4.4.0 or later which contains the fix that changes the default return value to -EINVAL (deny by default), adds explicit size_add_overflow check, and sets success only after full range validation.
Zephyr RTOS v4.4.1 or later (or the corresponding stable branch)
- 1. Identify the current Zephyr RTOS version in use by checking the version tag or manifest file in the project.
- 2. Upgrade Zephyr RTOS to version v4.4.1 or later, as this version contains the fix for the arch_buffer_validate() vulnerability.
- 3. If using a downstream or fork of Zephyr, apply the equivalent patch: modify arch/xtensa/core/mpu.c to change the default return value of arch_buffer_validate() from 0 (permit) to -EINVAL (deny), add an explicit size_add_overflow check before the MPU region probe loop, and move the success return value to after the full range validation completes.
- 4. Rebuild the firmware with the updated Zephyr version or patched code.
- 5. Verify the build completes successfully and test the system's functionality.
Generated from the published advisory — verify against the referenced sources before acting.
- Consultation4.0 h
- Implementation3.0 h
- Testing8.0 h
- Review / QA3.0 h
An estimate, not a bill — we confirm scope with you before any work starts. Need it this week? Rush from $4,928.
Scan for this in your stack
Free · runs locallyCheck whether your project pulls in CVE-2026-10669 — or any other known-vulnerable package — straight from your lock files. Free and open source; it runs locally and uploads nothing.
References Go to the primary sourcePrimary sources — vendor advisories, patches and trackers. Where our summary and a reference disagree, the reference wins.
Primary sourcesPractitioner notes
ContributedPeer-ranked notes from engineers who’ve handled CVE-2026-10669 in production — separate from our analysis above.
The advisory tells you what broke. It rarely tells you what actually worked. If you’ve dealt with this one, that detail is what the next engineer is searching for.
- The version that genuinely resolved it — not the one the vendor claimed
- A config change or rule that shut the vector down
- A gotcha in the upgrade path that cost you an afternoon
No notes yet
Be the first to add a field note for this CVE — a mitigation you’ve verified, a version caveat, or a link to a working fix. Sign in above to contribute.
A place for practitioners to share what actually worked: a mitigation you’ve tested, a configuration change, a version- or environment-specific caveat, or a link to a verified patch. The most useful notes rise to the top as peers upvote them, so the signal stays high.
- Verified mitigations, workarounds, and config changes
- Version or environment caveats, and links to real fixes
- No weaponised exploit code, or anything meant to cause harm
- No spam, self-promotion, credentials, or personal data