Skip to main content

Zephyr Kernel EUVDEUVD-2026-61491

| CVE-2026-12631 MEDIUM
Missing Authorization (CWE-862)
2026-08-18 vulnerabilities@zephyrproject.org
6.5
CVSS 3.1 · Vendor: zephyrproject
Share

Severity by source

Vendor (zephyrproject) PRIMARY
6.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:N/A:H
vuln.today AI
6.5 MEDIUM

Requires low-privileged local thread; scope changes to supervisor mode on crash; primary reliable impact is kernel availability loss with no confidentiality breach.

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

Primary rating from Vendor (zephyrproject).

CVSS VectorVendor: zephyrproject

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

Lifecycle Timeline

3
Source Code Evidence Fetched
Aug 19, 2026 - 02:32 vuln.today
Analysis Generated
Aug 19, 2026 - 02:32 vuln.today
Patch available
Aug 18, 2026 - 22:04 EUVD

DescriptionCVE.org

The Zephyr kernel validates the k_thread_join() and k_thread_abort() system calls (declared __syscall in include/zephyr/kernel.h) through thread_obj_validate() in kernel/thread.c. Its default switch branch is the access-denied path, taken when k_object_validate() returns -EPERM (the calling user thread was never granted access to the target thread object) or -EBADF (the supplied pointer is not a registered kernel object of the right type). That branch invoked K_OOPS(K_SYSCALL_VERIFY_MSG(ret, "access denied")), but K_SYSCALL_VERIFY_MSG treats a true expression as success; the non-zero error code ret therefore read as "verified OK", the kernel oops was never raised, and control fell through to CODE_UNREACHABLE.

Because k_thread_join() and k_thread_abort() are system calls, an unprivileged user-mode thread (under CONFIG_USERSPACE) can reach this denial path directly by calling either syscall on a thread object it does not own. Instead of the offending thread being cleanly terminated, execution reaches __builtin_unreachable() while running in supervisor mode inside the syscall handler.

On Clang builds CODE_UNREACHABLE emits an illegal-instruction trap, so a user thread can deterministically crash the kernel - a locally triggerable denial of service that escapes the userspace sandbox. On GCC builds the path is undefined behavior: the compiler may drop the return-value handling for thread_obj_validate(), so it can return an undefined bool; if that is false, the caller proceeds into the real k_thread_join()/k_thread_abort() implementation for a thread the user was never authorized to access, an access-control bypass.

The fix changes the verification expression to ret == 0, so a denied (non-zero) result now correctly raises K_OOPS and terminates the offending caller.

AnalysisAI

Unprivileged user-mode threads in Zephyr RTOS (versions 2.3.0 through 4.4.1) can escape the userspace sandbox by exploiting an inverted boolean check in the syscall access-control handler, yielding two compiler-dependent outcomes: on Clang-compiled builds, a deterministic kernel crash via illegal-instruction trap reachable from any unprivileged thread; on GCC builds, undefined behavior that may suppress the return-value check and allow unauthorized abortion or joining of threads the caller was never granted access to. The CVSS vector (AV:L/PR:L/S:C/A:H) reflects the scope change from user-mode into supervisor context, and no public exploit has been identified at time of analysis - a vendor patch is available as of Zephyr 4.4.2.

Unlock full vulnerability intelligence

  • Risk assessment & exploitation conditions
  • Attack chain visualization
  • Remediation with exact patch versions
  • Threat intelligence from 22 sources
  • Personal watchlist & email alerts

Free forever · No credit card required

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata

Access
technique details hidden
Delivery
technique details hidden
Exploit
technique details hidden
Execution
technique details hidden
Impact
technique details hidden

Vulnerability AssessmentAI

Exploitation Exploitation requires CONFIG_USERSPACE to be enabled at Zephyr build time - this is an explicit opt-in build configuration, not the default for minimal or single-address-space Zephyr deployments. … Additional conditions and limiting factors are described in the full assessment.
Risk Assessment The NVD-assigned CVSS 3.1 score of 6.5 (Medium) with vector AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:N/A:H is a reasonable baseline representation of the Clang-build DoS path. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in.
Exploit Scenario Full exploit scenario with step-by-step reproduction available after sign-in.
Remediation Upgrade to Zephyr 4.4.2 or later, which incorporates the upstream fix at commit bd1828652dfc217ba9f3a2221a7499cd8914ed9c changing K_SYSCALL_VERIFY_MSG(ret, ...) to K_SYSCALL_VERIFY_MSG(ret == 0, ...) in kernel/thread.c. … Detailed patch versions, workarounds, and compensating controls in full report.

Threat intelligence, references, and detailed analysis are available after sign-in.

Share

EUVD-2026-61491 vulnerability details – vuln.today

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