Skip to main content

Zephyr ESP-Hosted EUVDEUVD-2026-84179

| CVE-2026-17054 MEDIUM
Out-of-bounds Read (CWE-125)
2026-09-21 zephyr
5.3
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Attacker within Wi-Fi range floods AP scan list
  2. Delivery
    Time traffic to drop first fragment via half-duplex SPI race
  3. Exploit
    Driver misreads oversized TLV data_length from continuation bytes
  4. Execution
    pb_decode reads ~62KB past stack buffer
  5. Persist
    Device faults or RX thread blocks permanently
  6. Impact
    Wi-Fi reception dead until reboot

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK

1 technique across 1 tactic: Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires a Zephyr build (4.2.0 through 4.4.1) that compiles the ESP-hosted SPI Wi-Fi driver (drivers/wifi/esp_hosted/) with an ESP co-processor over SPI and CONFIG_NANOPB_ENABLE_MALLOC selected. Exploitation is unauthenticated (PR:N) but adjacent (AV:A): the attacker must be within Wi-Fi radio range to influence the size/content of legitimate control responses, notably by increasing the number and SSID length of nearby access points to grow the scan-list response. The critical limiting factor (AC:H) is the timing race - the attacker must arrange for the first fragment of a fragmented control response to be queued while the host is mid-transmit so the pre-fix half-duplex transfer discards it, leaving the driver to parse continuation bytes as a TLV header. Impact is limited to denial of service (device fault or permanent RX-thread block requiring reboot); no data disclosure or code execution.

Impact

This is a genuine but modest-priority DoS. The vendor CVSS of 5.3 (AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H) is internally consistent and matches the description: an adjacent (radio-range) unauthenticated attacker, high attack complexity, no privileges/UI, and availability-only impact. AC:H is well justified - exploitation depends on winning a timing race in the half-duplex SPI transfer so the first fragment of a fragmented control response is silently discarded, then influencing the AP scan-list size/content so misaligned continuation bytes yield a large TLV data_length. No EPSS score, KEV listing, or POC was provided; per precision rules this is 'no public exploit identified at time of analysis.' Note the input Tags include 'Information Disclosure,' which directly CONTRADICTS the description - the author states 'The impact is denial of service rather than disclosure' and explains the OOB bytes never reach the application (pb_decode starts mid-stream and fails, and any decoded output must survive an exact msg_id match plus a success-response check). Treat the confidentiality impact as C:N, consistent with the CVSS vector. Overall: a low-to-medium real-world risk gated by a specific driver build, physical proximity, and a race window - not a high-priority flaw despite the memorable 62KB out-of-bounds figure.

Exploit ScenarioDerived

An attacker within Wi-Fi radio range of a Zephyr device using the ESP-hosted SPI driver stands up many/dense access points to inflate the AP scan-list response, then times traffic so the co-processor queues the first fragment of that fragmented response while the host is transmitting (half-duplex, so it is discarded). The driver then parses the next fragment as a fresh frame, reads a garbage 16-bit TLV data_length from raw protobuf continuation bytes, and pb_decode reads far past the end of the 3188-byte stack object - faulting the device or blocking the sole RX thread. No public exploit code was identified; the attack is adjacent (AV:A) and high-complexity (AC:H) due to the required race and fragmentation conditions.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 21, 2026

Denial of service in the Zephyr ESP-hosted Wi-Fi driver (drivers/wifi/esp_hosted/) lets a Wi-Fi-adjacent, unauthenticated attacker fault the device or permanently stop Wi-Fi reception in Zephyr builds (assessed range 4.2.0 through 4.4.1) that run an ESP co-processor over SPI with CONFIG_NANOPB_ENABLE_MALLOC selected. The driver takes a 16-bit TLV data_length straight off the wire and passes it to pb_istream_from_buffer() without validating it against the frame length, so pb_decode() can read roughly 62 KB past a 3188-byte stack object (CWE-125); the underlying half-duplex SPI aliasing bug lets the attacker steer the parser onto misaligned protobuf continuation bytes by getting the first fragment of a fragmented control response dropped mid-transmit, and the AP scan list the attacker can grow is the most convenient lever. Impact is limited to availability (CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H, 5.3) with no disclosure or code execution; the high attack complexity reflects the timing race, no public exploit code identified at time of analysis, and the vendor has published a fix.

RemediationAI

Upgrade to a Zephyr release containing the upstream fix: the ENISA EUVD affected range lists Zephyr 4.2.0 < 4.4.2, so 4.4.2 or later carries the correction, and the specific fixing change is commit 93c32f240c9661f321233c134cfdd07f8dc97bb8 with details in advisory https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-mq9g-c5j9-79v5. The patch validates each fragment's length, offset (must equal ESP_FRAME_HEADER_SIZE) and checksum, caps reassembly at ESP_FRAME_MAX_PAYLOAD * 2, splits the RX and TX paths onto independent message queues (WIFI_ESP_HOSTED_RX_QUEUE_SIZE / WIFI_ESP_HOSTED_TX_QUEUE_SIZE, default 8), and stops aliasing the RX buffer onto the TX buffer in esp_hosted_hal_spi_transfer(); backporting that commit is the recommended route where a full upgrade is not possible. If the driver cannot be updated immediately, there is no configuration switch that removes the vulnerable parse path, so the practical compensating controls are to avoid the affected transport (use a different Wi-Fi driver or a UART/SDIO ESP-hosted transport instead of half-duplex SPI, at the cost of throughput/latency changes) and to reduce the attacker's ability to inflate control responses, since the reachable proof is the AP scan list that grows with the number and SSID length of nearby access points - limiting scan scope or disabling background scans narrows the window but degrades roaming and connection setup. Because either of the secondary defects blocks the sole RX thread with no watchdog or restart path in the driver, recovery requires a reboot: provision an external hardware watchdog or supervisor that power-cycles the SoC, accepting a full connectivity interruption when it fires. Note that the CVE data records patch availability from the vendor but does not name a tagged release beyond the EUVD range, so confirm the fix is present in the exact Zephyr revision you deploy.

Affected VersionsENISA

Zephyr 4.2.0 <4.4.2

Affected Packages

euvd zephyr fix: 4.4.2

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

The affected code is Zephyr's ESP-hosted Wi-Fi driver, which speaks a framed serial protocol to an ESP co-processor over SPI. Control responses use a TLV header carrying a 16-bit data_length, and the receive thread esp_hosted_event_task() fed that value directly into nanopb's pb_istream_from_buffer(frame.data_value, frame.data_length) with no comparison against the actual frame length or receive buffer size. Because frame.data_value sits 26 bytes into a 3188-byte stack object, a claimed length of 0xFFFF makes pb_decode() walk roughly 62 KB beyond the object, the classic CWE-125 out-of-bounds read. Two protocol-level defects make the bug reachable: only the first fragment of a fragmented control response carries a TLV header, and the pre-fix HAL performed half-duplex SPI transfers that aliased the RX buffer onto the TX buffer, silently discarding any frame the co-processor queued while the host was transmitting. When that dropped frame is the first fragment, the next fragment is treated as a fresh frame; its per-fragment header and checksum are genuine so validation passes, and the driver reads a TLV header out of raw protobuf continuation bytes whose size and content an adjacent, unauthenticated attacker can influence (most notably the AP scan list, which grows with the number and SSID length of nearby access points). With CONFIG_NANOPB_ENABLE_MALLOC selected, garbage length prefixes also drive heap allocations. The out-of-bounds bytes do not reach the application: pb_decode() starts mid-stream and almost always fails, and any decoded message would still have to satisfy esp_hosted_response()'s exact msg_id match and esp_hosted_ctrl_response()'s success check. Two adjacent defects in the same receive path make the resulting denial of service permanent: the fragment reassembly guard was sized with ESP_FRAME_SIZE instead of ESP_FRAME_MAX_PAYLOAD and, when tripped, returned from the sole RX thread rather than dropping the frame, and unhandled control events were queued with k_msgq_put(..., K_FOREVER) onto an eight-entry queue that nothing drains, blocking that same thread. The driver ships no watchdog or restart path, so either condition halts all Wi-Fi reception until reboot. The upstream fix (commit 93c32f240c9661f321233c134cfdd07f8dc97bb8) renames the frame type to esp_hosted_frame_t, introduces an esp_hosted_tlv_t view plus esp_hosted_frame_append() that validates length, offset and checksum and caps reassembly at ESP_FRAME_MAX_PAYLOAD * 2, splits RX/TX paths into separate message queues, and stops aliasing the RX buffer onto the TX buffer in esp_hosted_hal_spi_transfer().

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 5.3 MEDIUM
AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 5.3 MEDIUM

Adjacent radio-range attacker (AV:A), no auth or UI (PR:N/UI:N), but a fragmentation/half-duplex timing race makes it AC:H; impact is DoS-only (A:H, C:N, I:N).

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

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

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

DescriptionCVE.org

The Espressif ESP-hosted Wi-Fi driver (drivers/wifi/esp_hosted/) parses frames received over SPI from the ESP co-processor in esp_hosted_event_task(). For control frames it took the 16-bit TLV field data_length straight off the wire and passed it to pb_istream_from_buffer(frame.data_value, frame.data_length) without checking it against the frame length or the receive buffer. frame.data_value sits 26 bytes into a 3188-byte stack object, so a data_length of up to 0xFFFF makes pb_decode() read up to roughly 62 KB past the end of that object.

Only the first fragment of a fragmented control response carries a TLV header; the pre-fix driver performed half-duplex SPI transactions and silently discarded any frame the co-processor queued while the host was transmitting (esp_hosted_hal_spi_transfer() aliased the RX buffer onto the TX buffer). When the discarded frame is the first fragment of a fragmented response, the driver treats the next fragment as a new frame - its per-fragment header and checksum are genuine, so both validation steps pass - and reads the TLV header out of raw protobuf continuation bytes. Those bytes come from control responses whose size and content an adjacent, unauthenticated attacker can influence, notably the AP scan list, which grows with the number and SSID length of access points in radio range.

The impact is denial of service rather than disclosure. Reading past the end of the RAM region faults the device, and CONFIG_NANOPB_ENABLE_MALLOC is selected by the driver, so garbage length prefixes read out of bounds also drive heap allocations. The out-of-bounds bytes themselves do not reach the application: pb_decode() is started mid-stream on raw protobuf continuation bytes and so almost always fails outright, and anything that did decode would still have to pass esp_hosted_response(), which requires an exact msg_id match against the pending request, and then esp_hosted_ctrl_response(), which requires a success resp - an attacker influences the size and content of legitimate control responses, not the structure decoded out of misaligned bytes. Two related defects in the same receive path make the denial of service permanent: the fragment reassembly guard was sized with ESP_FRAME_SIZE instead of ESP_FRAME_MAX_PAYLOAD and, when tripped, returned from the sole RX thread instead of dropping the frame, and unhandled control events were queued with k_msgq_put(..., K_FOREVER) on an eight-entry queue that nothing drains, blocking that same thread. The driver has no watchdog or restart path, so either condition ends all Wi-Fi reception until the device is rebooted.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Low
niche ESP-hosted SPI Wi-Fi driver in Zephyr; only affects builds enabling it
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Controlled
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
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.

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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