Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify target built with CONFIG_USERSPACE=y
-
DeliveryObtain SPI device object access (via prior grant)
-
ExploitCraft spi_config with frequency=0
-
InstallCall spi_transceive syscall
-
C2Bypass syscall verify handler validation
-
ExecuteTrigger divide-by-zero in spi_dw_configure
-
ImpactCPU exception causes kernel fault and system halt
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Division safety checks
|
| Exploitation Conditions | Exploitation requires two non-default, deployment-specific conditions that must both be present simultaneously. First, the firmware must be compiled with CONFIG_USERSPACE=y, a build-time option that enables the Zephyr userspace isolation model; this is not enabled in the default Zephyr configuration and must be explicitly selected by the integrator. Second, the attacking userspace thread must have already been granted access to the specific DesignWare SPI device kernel object via an explicit k_object_access_grant() call in application code - meaning the application developer or firmware integrator must have intentionally authorized that thread for SPI access. Exploitation is limited to local code execution within an already-running, already-authorized thread; remote exploitation is not possible. There is no impact on confidentiality or integrity, and the fault does not enable privilege escalation or code injection. These conditions collectively limit real-world exposure to multi-tenant embedded applications where partially-trusted tasks coexist and SPI device access has been shared. |
| Impact | The CVSS 3.1 base score of 3.3 (AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L) accurately captures the limited blast radius: local access, low complexity once prerequisites are met, partial availability impact only, and no confidentiality or integrity consequence. The description explicitly confirms there is no memory-corruption or information-disclosure path, consistent with C:N/I:N. No EPSS data was provided and no CISA KEV listing exists, meaning no confirmed or widespread exploitation is known. Practical risk is further constrained by two hard prerequisites - CONFIG_USERSPACE=y must be selected at build time (it is not the default Zephyr configuration) and the attacking thread must have been explicitly granted the SPI kernel object via k_object_access_grant() or equivalent, meaning an already-privileged configuration path must have been deliberately taken by a developer or integrator. This positions the vulnerability as low operational priority for most embedded deployments: an attacker exploiting this already has locally authorized access and can only cause a controlled kernel fault. The sole realistic concern is a malicious or compromised task within a multi-tenant embedded application deliberately crashing the device. |
| Exploit ScenarioDerived | A malicious or compromised unprivileged thread in a Zephyr application built with CONFIG_USERSPACE=y and granted access to a DesignWare SPI device kernel object calls spi_transceive with a crafted spi_config where the frequency field is set to zero. The syscall verify handler copies the struct without validation, spi_dw_configure() computes BAUDR as clock_frequency/0, and the Cortex-M UsageFault or ARC divide-by-zero exception handler triggers a kernel fault, halting the device. No public exploit code is known to exist. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 22, 2026
Divide-by-zero in Zephyr's DesignWare SPI driver exposes kernel crash to locally-authorized userspace threads on all releases through v4.4.0. The spi_transceive syscall verify handler in spi_handlers.c copies the caller-supplied spi_config from userspace without validating the frequency field, allowing a thread with SPI device object access to pass frequency=0 and trigger an unsigned integer divide-by-zero in spi_dw_configure(), which raises a CPU exception on Cortex-M Mainline and ARC platforms and halts the system. No public exploit has been identified at time of analysis; exploitation is gated behind a non-default build configuration and explicit privilege grant.
RemediationAI
Upgrade to Zephyr v4.5.0 or any subsequent release that incorporates commit 65935885622b0e4a5dbe5b82504c30097eb75ce0, which adds two input-validation guards in spi_dw_configure(): rejection of zero frequency with -EINVAL and rejection of frequencies exceeding clock_frequency/DW_SPI_MIN_SCKDIV (where DW_SPI_MIN_SCKDIV=2, per the DesignWare SSI databook) also with -EINVAL. The patch and advisory are at https://github.com/zephyrproject-rtos/zephyr/commit/65935885622b0e4a5dbe5b82504c30097eb75ce0 and https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3qcm-qwh2-v4hq respectively. If upgrading is not immediately feasible, two compensating controls are available: first, rebuild the firmware with CONFIG_USERSPACE=n, which eliminates the syscall boundary entirely and prevents untrusted threads from reaching the vulnerable path (trade-off: disables the userspace isolation model across the entire application); second, audit all calls to k_object_access_grant() and k_thread_access_grant() for SPI devices and ensure no untrusted thread receives SPI device object access (trade-off: requires manual code review and does not prevent privileged threads from triggering the fault via misconfiguration).
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 is a small-footprint RTOS targeting embedded and IoT platforms (CPE: cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:*). The DesignWare SPI driver (drivers/spi/spi_dw.c) computes the BAUDR clock divider register value as info->clock_frequency / config->frequency; CWE-369 (Divide By Zero) arises because the divisor is never range-checked. The spi_transceive function is a Zephyr __syscall, meaning it crosses the userspace/kernel boundary under CONFIG_USERSPACE=y. Its verify handler (drivers/spi/spi_handlers.c) marshals the caller's spi_config struct from userspace memory but omits validation of the frequency field, allowing a zero value to propagate into the kernel. On Cortex-M Mainline, SCB->CCR.DIV_0_TRP is armed in z_arm_fault_init(), converting the divide-by-zero into a UsageFault/kernel fault. On ARC, a dedicated __ev_div_zero exception vector triggers equivalently. The DesignWare SSI databook mandates a minimum SCKDIV of 2, so the fix also rejects frequencies above clock_frequency/2. There is no heap or stack corruption pathway; this is a pure availability-class defect.
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:N/I:N/A:H
Local attack vector with low-privilege SPI device grant required; trivially simple once prerequisites met; availability-only kernel fault with no confidentiality or integrity impact.
Primary rating from Vendor (zephyr).
CVSS VectorNVD
Lifecycle Timeline
2DescriptionNVD
The DesignWare SPI driver (drivers/spi/spi_dw.c) computed the SPI BAUDR clock divider as info->clock_frequency / config->frequency without validating config->frequency.
spi_transceive is a Zephyr __syscall and its verify handler (drivers/spi/spi_handlers.c) copies the caller-supplied spi_config from userspace without checking the frequency field, so a userspace thread that has been granted access to a DesignWare SPI device kernel object can pass frequency = 0 and trigger an unsigned integer divide-by-zero in spi_dw_configure().
On Cortex-M Mainline (SCB->CCR.DIV_0_TRP is set in z_arm_fault_init()) and on ARC (a dedicated __ev_div_zero vector) this raises a CPU exception, resulting in a kernel fault and local denial of service.
The fix rejects zero frequency and frequencies above clock_frequency / 2 (the DesignWare SSI databook minimum SCKDIV of 2) with -EINVAL. The defect affects all Zephyr releases up to and including v4.4.0; exploitation requires CONFIG_USERSPACE=y and an unprivileged thread already granted SPI driver permission. There is no memory-corruption or information-disclosure impact.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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-46448
NVD
CVE.org
EPSS
GitHub
Exploit-DB