Zephyr RTOS
CVE-2026-10657
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply short-suffix hostname via DNS API
-
DeliveryInvoke dns_resolve_name_internal() with CONFIG_MDNS_RESOLVER
-
Exploitmemcmp reads past NUL terminator
-
ExecutionOver-read crosses unmapped memory boundary
-
ImpactProcessor faults, device crashes
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 | CONFIG_MDNS_RESOLVER must be enabled at compile time - this is the primary gate and is not a default in all Zephyr build configurations. The hostname supplied to getaddrinfo(), dns_get_addr_info(), or dns_resolve_name() must have a final label suffix shorter than 7 bytes (e.g., .org, .com, .net, .io, or a trailing dot). A crash - rather than a silent benign over-read - additionally requires that the hostname buffer be tightly allocated with no trailing slack bytes (specifically, allocated via k_usermode_string_alloc_copy to exactly strlen+1 bytes) AND that the immediately adjacent memory region be unmapped (guard page, MPU memory-domain boundary, or address sanitizer shadow). In the majority of embedded Zephyr deployments without ASAN or strict MPU domain separation, neither crash condition is met and the over-read reads harmless padding. Exploitation is strictly limited to availability (device crash); the over-read bytes are explicitly never returned to the caller, eliminating any confidentiality impact regardless of memory layout. |
| Impact | CVSS 3.7 (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L) is well-calibrated for this vulnerability. The AC:H rating correctly captures that a crash requires two simultaneous runtime conditions beyond attacker control: the hostname buffer must be tightly allocated with no trailing slack (as produced by k_usermode_string_alloc_copy at exactly strlen+1 bytes), and the next allocation boundary must be unmapped. In typical Zephyr embedded deployments without ASAN instrumentation or strict MPU memory-domain isolation, the over-read lands in readable padding and does not fault. EPSS data is absent from the provided intelligence. No KEV listing and no POC availability confirm this is not under active exploitation. A notable data-quality conflict exists: the source tags include 'Information Disclosure', but the CVE description explicitly states 'The over-read bytes are never returned, so there is no information disclosure' - this tag should be disregarded as a tagging error. Real-world exploitability is further gated by the CONFIG_MDNS_RESOLVER compile-time flag, which constrains the affected population to firmware images specifically built with mDNS support. |
| Exploit ScenarioDerived | An application on a Zephyr device resolves a hostname ending in .io or .org - for example, a parsed URL from a remote configuration push - triggering dns_resolve_name_internal() with CONFIG_MDNS_RESOLVER compiled in. If the hostname was copied via k_usermode_string_alloc_copy to a buffer of exactly strlen+1 bytes and the next allocation boundary is an unmapped guard page or MPU domain fence, the 1-2 byte over-read faults the processor, crashing the device. No public exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 05, 2026
Out-of-bounds read in Zephyr RTOS's mDNS detection logic crashes devices resolving short-suffix hostnames when CONFIG_MDNS_RESOLVER is compiled in. The flaw in dns_resolve_name_internal() reads a fixed 7 bytes from a suffix pointer regardless of the actual string length, causing a 1-2 byte over-read past the NUL terminator for suffixes like .org, .com, .net, or .io. Under the specific runtime condition of a tightly-sized allocation adjacent to an unmapped boundary (guard page, MPU domain, or ASAN), the over-read faults and crashes the device; no public exploit has been identified at time of analysis and CVSS 3.7 with AC:H accurately reflects the narrow crash preconditions.
RemediationAI
Apply commit 448a21da12c9ea28f7fd12c6894e03a987b17a27 from the Zephyr repository (https://github.com/zephyrproject-rtos/zephyr/commit/448a21da12c9ea28f7fd12c6894e03a987b17a27), which replaces memcmp(ptr, ".local", 7) with strcmp(ptr, ".local") and eliminates the over-read entirely. The exact tagged release version containing this fix is not confirmed from available data - monitor the advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-76jh-3j5f-9vq4 for the patched release. As a zero-side-effect workaround, disable CONFIG_MDNS_RESOLVER in the project's Kconfig configuration if mDNS resolution is not required by the application; this removes the vulnerable code path at compile time with no impact on standard unicast DNS resolution. If CONFIG_MDNS_RESOLVER must remain enabled and patching is not yet possible, enabling strict MPU memory-domain isolation or ASAN instrumentation in test environments will convert silent over-reads into detectable faults - this aids crash detection and root-cause diagnosis but does not prevent the denial-of-service condition in production firmware.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerable code resides in subsys/net/lib/dns/resolve.c, function dns_resolve_name_internal(). The expression memcmp(strrchr(query, '.'), ".local", 7) locates the final dot in the hostname via strrchr() and then compares exactly 7 bytes - the length of ".local" plus its NUL terminator. CWE-125 (Out-of-bounds Read) applies: when the suffix is shorter than 6 characters (e.g., ".io" = 3 chars, ".org" = 4 chars), memcmp reads 1-3 bytes beyond the NUL terminator into adjacent memory. The affected CPE is cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:*, present since v1.10.0. Crucially, the code path is only compiled when the Kconfig option CONFIG_MDNS_RESOLVER is enabled; firmware images built without this option are unaffected. The fix replaces the unsafe memcmp with strcmp(ptr, ".local"), which terminates at the NUL byte and eliminates the over-read entirely.
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:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Network-reachable via hostname input, AC:H for required tight-allocation plus unmapped-boundary runtime conditions; C:N and I:N confirmed as over-read bytes are never returned.
Primary rating from Vendor (zephyr).
CVSS VectorNVD
Lifecycle Timeline
2DescriptionNVD
Zephyr's DNS resolver detects mDNS (.local) queries in dns_resolve_name_internal() (subsys/net/lib/dns/resolve.c) with memcmp(strrchr(query, '.'), ".local", 7), which always reads a fixed 7 bytes from the suffix pointer. When the resolved hostname's final label is shorter than 7 bytes (e.g. names ending in .org, .com, .net, .io, or a trailing dot), the comparison reads 1-2 bytes past the string's NUL terminator. The hostname (query) is the caller-supplied name passed through the standard getaddrinfo()/dns_get_addr_info()/dns_resolve_name() path and is influenceable by operators or remote inputs (server names from configuration, parsed URLs, or app-facing interfaces). On a tightly-sized buffer with no slack (for example a userspace getaddrinfo call where the hostname is copied with k_usermode_string_alloc_copy to exactly strlen+1 bytes), the over-read crosses the allocation boundary; if that boundary is unmapped (guard page, memory-domain boundary under MPU, or an address sanitizer) the over-read faults, causing a denial of service. The over-read bytes are never returned, so there is no information disclosure. The flaw is compiled only when CONFIG_MDNS_RESOLVER is enabled, exists since v1.10.0, and is fixed by replacing the fixed-length memcmp with a NUL-safe strcmp(ptr, ".local").
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.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Affected Products (CPE)NVD
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
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB