Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify Zephyr device performing DNS lookups
-
DeliveryInduce or await semaphore timeout and query retry
-
ExploitInject spoofed UDP DNS response with matching 16-bit id
-
ExecutionTrigger dns_resolve_cb() against out-of-scope stack frame
-
PersistWrite through stale ai_state pointer
-
ImpactCrash or corrupt reused stack memory
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory lifecycle management
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The target application must call the BSD-sockets getaddrinfo() against an asynchronous DNS resolver, and the socket-layer semaphore wait must time out (-EAGAIN) so the pre-fix retry path ('goto again') executes - which the advisory states happens when the resolver's timeout work is delayed by workqueue contention, or in the documented configuration where CONFIG_NET_SOCKETS_DNS_TIMEOUT exceeds CONFIG_NET_SOCKETS_DNS_BACKOFF_INTERVAL (the multi-retry case). The attacker must then deliver a UDP DNS response whose 16-bit transaction id matches the orphaned query (spoofable/replayable by an on- or off-path attacker), or rely on the resolver's own delayed query-timeout work to fire. Limiting factors: exploitation hinges on winning this race window (hence CVSS AC:H), requires the device to actually be resolving names, and reliable memory corruption (versus a crash) is constrained by what reused stack data the attacker can influence; no authentication or user interaction is required (PR:N/UI:N). |
| Impact | The CVSS 3.1 vector CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H (7.4 High) is internally consistent with the description: the trigger is network-influenceable (AV:N), needs no authentication (PR:N) or user interaction (UI:N), but depends on a timing race - the semaphore wait must time out due to workqueue contention or a specific multi-retry timeout configuration, and the attacker must land a response with a matching 16-bit id - which justifies AC:H. Impact is correctly modeled as no confidentiality loss (C:N) but high integrity/availability (I:H/A:H) via stack memory corruption and DoS. No EPSS score, KEV listing, or public POC was provided, so real-world exploitation pressure appears low-to-unproven today; the practical risk is dominated by reliability/DoS on devices that perform DNS resolution, with reliable code-controlled memory corruption being substantially harder than the crash case. The honest priority read: a genuine network-influenceable bug worth patching on internet-exposed or hostile-network embedded devices, but the AC:H race and absence of exploitation signals make it a measured rather than emergency patch for most fleets. Missing data to note explicitly: no EPSS, no KEV, no confirmed patched release tag - only a fix commit and a GHSA advisory. |
| Exploit ScenarioDerived | An attacker on or off the network path observes or guesses that a Zephyr device is performing getaddrinfo() lookups and floods spoofed UDP DNS responses carrying matching 16-bit transaction ids while the device is under workqueue load or using the multi-retry timeout configuration. After the socket semaphore times out and the query is retried, a delayed callback fires against the freed stack frame and writes through the stale pointer, crashing the device or corrupting reused stack memory. No public exploit is identified at time of analysis, and CVSS AC:H reflects the timing/race precision required. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 28, 2026
Memory corruption and denial of service in Zephyr RTOS (v4.0.0 through v4.4.0) arises in the BSD-sockets getaddrinfo() implementation, where a timed-out DNS query is retried without cancelling the prior query, leaving a callback holding a pointer into a stack frame that goes out of scope after getaddrinfo() returns. A network-delivered DNS response matched by its spoofable 16-bit transaction id, or the resolver's own delayed timeout work, then writes through that stale pointer, enabling crashes or reused-stack corruption. There is no public exploit identified at time of analysis and the issue is not in CISA KEV; exploitation is gated by a timing/race window reflected in CVSS AC:H.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply Zephyr commit cd27da58eedb8d0fe380dd340b81ca5afa35de45 (referenced by advisory GHSA-h752-vhmf-29w6) or upgrade to the first tagged release after v4.4.0 that contains it once published. The fix cancels the timed-out query by name and type via the new dns_cancel_addr_info_with_name() helper and resets the local semaphore before retrying, removing the stale callback path. If you cannot patch immediately, reduce the chance of the retry/race by configuring CONFIG_NET_SOCKETS_DNS_TIMEOUT so it does not exceed CONFIG_NET_SOCKETS_DNS_BACKOFF_INTERVAL (avoiding the documented multi-retry path) and by relieving workqueue contention that delays the resolver's timeout work - trade-off: tighter timeouts can cause more legitimate lookups to fail on slow networks. Additionally, restrict DNS to a trusted resolver and filter/validate UDP DNS responses at the network boundary to limit an attacker's ability to inject spoofed responses, accepting that this does not close the off-path race entirely. Build and verify against the vendor advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-h752-vhmf-29w6.
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 defect is a CWE-416 use-after-free, more precisely a use-after-return: subsys/net/lib/sockets/getaddrinfo.c registers a pointer to a stack-allocated 'struct getaddrinfo_state ai_state' as the user_data for an asynchronous DNS resolver query and waits on a per-call semaphore. The socket layer sizes its semaphore timeout slightly longer than the resolver's per-query timeout to normally avoid cancellation, but if the semaphore still returns -EAGAIN, the pre-fix code executes 'goto again' to retry, overwriting ai_state->dns_id (so the old query can no longer be cancelled) without resetting the semaphore. The orphaned query remains active inside the DNS resolver subsystem; when a UDP DNS response is matched by transaction id in dispatcher_cb()/dns_read(), or the resolver's delayed query-timeout work fires, dns_resolve_cb() dereferences the now-invalid stack pointer and writes to state->status, state->idx, state->ai_arr[], and calls k_sem_give(). The affected product per CPE is cpe:2.3:a:zephyrproject:zephyr, the open-source real-time operating system and its native BSD-sockets/DNS networking stack.
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:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H
Network-influenceable via spoofable DNS id (AV:N) needing no auth or interaction (PR:N/UI:N) but gated by a timeout/race window (AC:H); stack corruption gives I:H/A:H with no confidentiality impact (C:N).
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
Zephyr's BSD-sockets getaddrinfo() implementation (subsys/net/lib/sockets/getaddrinfo.c) passes a pointer to a stack-allocated state object (struct getaddrinfo_state ai_state) as the user_data of an asynchronous DNS resolver query. The socket layer waits on a semaphore with a timeout deliberately set slightly longer than the resolver's own per-query timeout. When that semaphore wait nonetheless times out (-EAGAIN) - which can occur when the resolver's timeout work is delayed by workqueue contention, or in the documented multi-retry configuration where CONFIG_NET_SOCKETS_DNS_TIMEOUT exceeds CONFIG_NET_SOCKETS_DNS_BACKOFF_INTERVAL - the pre-fix code retries the query (goto again) without cancelling the previous one and without resetting the semaphore. The previous query slot remains active in the resolver with its callback and the stack pointer as user_data, and ai_state-dns_id is overwritten so the stale query can no longer be cancelled. A subsequent DNS response delivered over UDP and matched by its 16-bit transaction id (in dispatcher_cb()/dns_read()), or the resolver's own delayed query-timeout work, then invokes dns_resolve_cb() against the now out-of-scope stack frame, writing through the stale pointer (state-status, state-idx, state-ai_arr[], and k_sem_give()). Because the triggering response is network-delivered and its 16-bit id is spoofable/replayable by an on- or off-path attacker, this is a network-influenceable use-after-return that can corrupt reused stack memory, leading to crashes/denial of service or memory corruption. The fix cancels the timed-out query by name and type before retrying and resets the local semaphore, eliminating the stale callback path. Affected: Zephyr v4.0.0 through v4.4.0.
Executive ViewAI
Zephyr RTOS versions 4.0.0 through 4.4.0 contain a memory corruption vulnerability in DNS query handling that can cause denial of service or enable stack memory reuse attacks when processing network-delivered DNS responses. Organizations deploying these versions in IoT or embedded networked devices face risk to system availability and potential for privilege escalation or information disclosure.
Apply vendor patch.
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.
Use-after-free vulnerabilities occur when a program continues to access memory through a pointer after that memory has been deallocated.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Related Vulnerabilities in Zephyr RTOS Memory Safety and Audio Flaws
View all 3Potential 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-39980
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB