Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker within Wi-Fi range floods AP scan list
-
DeliveryTime traffic to drop first fragment via half-duplex SPI race
-
ExploitDriver misreads oversized TLV data_length from continuation bytes
-
Executionpb_decode reads ~62KB past stack buffer
-
PersistDevice faults or RX thread blocks permanently
-
ImpactWi-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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
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).
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
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
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
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.
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-84179
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB