CVE-2026-10646

Severity CVSS v4.0:
Pending analysis
Type:
CWE-416 Use After Free
Publication date:
28/06/2026
Last modified:
06/08/2026

Description

Zephyr&amp;#39;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&amp;#39;s own per-query timeout. When that semaphore wait nonetheless times out (-EAGAIN) - which can occur when the resolver&amp;#39;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.<br /> <br /> The previous query slot remains active in the resolver with its callback and the stack pointer as user_data, and ai_state-&gt;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&amp;#39;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-&gt;status, state-&gt;idx, state-&gt;ai_arr[], and k_sem_give()).<br /> <br /> 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.<br /> <br /> 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.

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:zephyrproject:zephyr:*:*:*:*:*:*:*:* 4.0.0 (including) 4.4.1 (including)