Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain on-path position or spoof DNS/source
-
ExploitForge CoAP probe response omitting sha256sum
-
ExecutionTrigger NULL-pointer read in probe parser
-
ImpactFatal fault halts device on next poll
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the UpdateHub FOTA client to be enabled and actively polling (CONFIG_UPDATEHUB_POLL_INTERVAL), which removes any user-interaction requirement. In the default configuration (CONFIG_UPDATEHUB_DTLS unset), start_coap_client() uses plain CoAP over UDP on port 5683 with no peer authentication and unauthenticated DNS resolution, so an on-path attacker, DNS spoofer, or an off-path attacker who wins the race with a forged source address can deliver the malformed probe response; setting CONFIG_UPDATEHUB_DTLS=y narrows the attacker to a malicious or compromised update server. The crash impact is further gated by the target: it only halts the system where the low address range (0x0) is unmapped or protected - MMU-based architectures, builds with CONFIG_NULL_POINTER_EXCEPTION_DETECTION_DWT/_MPU/_PMP, TrustZone non-secure images, and SoCs such as nRF54L - whereas on classic Cortex-M targets with a readable vector table at address zero the read succeeds and the request is simply rejected, yielding no DoS. |
| Impact | This is a genuine but conditional availability-only issue, not a top-tier priority. The provided CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H, base 5.9) is internally consistent with the description: network-reachable, no authentication (PR:N), no user interaction (polling is automatic), and high attack complexity reflecting that non-DTLS exploitation requires an on-path position, DNS spoofing, or winning a race with a forged source address. No EPSS score was supplied, there is no CISA KEV listing, and no public exploit was referenced, so this is 'no public exploit identified at time of analysis' - the signals do not point to active or widespread exploitation. The most important nuance, which raw CVSS obscures, is that impact is strongly SoC- and configuration-dependent: the primitive is a read at address zero, so it only produces a crash on targets where the low address range is unmapped or protected (MMU-based architectures, CONFIG_NULL_POINTER_EXCEPTION_DETECTION_DWT/_MPU/_PMP builds, TrustZone non-secure images, SoCs like nRF54L); on classic Cortex-M parts with a readable vector table at address zero the read typically succeeds harmlessly and the request is rejected by a later length check. There is no confidentiality or integrity impact (C:N/I:N confirmed and matching the description's 'no write, no info-disclosure' analysis). Net: treat as a medium-priority DoS to patch on affected embedded fleets that use the UpdateHub FOTA client without DTLS, rather than an emergency. |
| Exploit ScenarioDerived | A device running Zephyr's UpdateHub FOTA client with the default CONFIG_UPDATEHUB_DTLS unset periodically polls its update server over plain CoAP/UDP on port 5683 with no peer authentication. An on-path attacker, DNS spoofer, or off-path attacker who wins the race with a forged source address replies to the probe with a malformed metadata payload such as '"objects":[[{}],[{}]]' that omits the sha256sum field, causing a NULL-pointer read in z_impl_updatehub_probe(). On SoCs where address zero is unmapped the load faults and Zephyr's fatal handler halts the system, re-triggerable on every poll; no public exploit code was referenced in the input. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Denial of service in the Zephyr UpdateHub firmware-over-the-air client can be triggered by a malformed CoAP probe response that omits the sha256sum field, causing z_impl_updatehub_probe() to call strlen() on a NULL pointer. The issue affects Zephyr builds with UpdateHub enabled, especially the default plain-CoAP configuration without CONFIG_UPDATEHUB_DTLS, where an unauthenticated on-path, DNS-spoofing, or source-address-racing attacker can inject the response during automatic polling. Impact is availability only and target-dependent: systems that protect or leave unmapped address 0 halt in Zephyr's fatal handler, while classic Cortex-M targets with a readable vector table may merely reject the request; no public exploit has been identified at time of analysis.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed. Apply commit 6fc4f27a74021b52c509e4f7912d68145dfa7728, referenced by advisory GHSA-82gq-cmqw-xgx2 at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-82gq-cmqw-xgx2, which adds explicit sha256sum == NULL checks returning UPDATEHUB_METADATA_ERROR before strlen() in both metadata branches. Until a patched Zephyr release is confirmed, enable CONFIG_UPDATEHUB_DTLS=y so probe responses must come from an authenticated update server, accepting the added provisioning, trust-anchor, and CPU overhead; restrict outbound UDP 5683 to the known update server and harden DNS resolution, with the trade-off that legitimate server migration or DNS changes will break updates; or disable UpdateHub with CONFIG_UPDATEHUB=n where FOTA is not required, accepting loss of remote firmware update capability. Avoid CONFIG_UPDATEHUB_LOG_LEVEL=4 in production because the debug LOG_DBG() path still formats the same pointers with %s before the new checks, leaving a debug-only variant. Do not treat CONFIG_NULL_POINTER_EXCEPTION_DETECTION_DWT/_MPU/_PMP as a fix: it may force a deterministic fault and fatal-handler halt where address zero is protected, which does not prevent the availability impact.
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 root cause is CWE-476, a NULL pointer dereference in Zephyr's UpdateHub subsystem at subsys/mgmt/updatehub/updatehub.c. The client parses the CoAP probe response with Zephyr's JSON library, where json_obj_parse() returns a bitmask of fields actually decoded and treats every descriptor field as optional; a response missing the sha256sum string leaves the corresponding const char * in the zero-initialised struct resp_probe_any_boards or struct resp_probe_some_boards at NULL. Both metadata branches then compute sha256size = strlen(...objects.sha256sum) + 1 before validating the digest length, so the SHA256_HEX_DIGEST_SIZE test runs only after the invalid read has already occurred and cannot prevent it. The metadata is supplied entirely by the network peer: probe_cb() accepts the datagram, runs coap_packet_parse(), and copies the payload with no token matching and no cryptographic check. In the default configuration (CONFIG_UPDATEHUB_DTLS unset), start_coap_client() uses plain CoAP over UDP port 5683 with no peer authentication and unauthenticated DNS resolution, so an on-path attacker, a DNS spoofer, or an off-path attacker who wins a source-address race can deliver a response as simple as "objects":[[{}],[{}]]; updatehub_autohandler() polls on CONFIG_UPDATEHUB_POLL_INTERVAL, so no user interaction is required. With CONFIG_UPDATEHUB_DTLS=y the trigger narrows to a malicious or compromised update server. The primitive is a read at address zero, not a write, so the impact is availability only; on targets where the low address range is unmapped or protected-MMU-based architectures, builds with CONFIG_NULL_POINTER_EXCEPTION_DETECTION_DWT/_MPU/_PMP, TrustZone non-secure images, and SoCs such as nRF54L whose 0x0-0x400 window is unmapped-the load faults and the default fatal handler halts the system. On classic Cortex-M targets where the vector table is readable at address zero, the walk usually terminates immediately and the request is rejected by the length check. There is no memory write, and copied bytes are only compared against the locally computed image hash, so there is no information-disclosure channel. The fix adds an explicit sha256sum == NULL test that returns UPDATEHUB_METADATA_ERROR ahead of strlen() in both metadata branches; debug builds with CONFIG_UPDATEHUB_LOG_LEVEL=4 still format the same pointers with %s in a LOG_DBG() loop that runs before the new checks, so that variant remains in debug configurations only.
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:N/A:H
Network-delivered malformed CoAP metadata with no auth or interaction (AV:N/PR:N/UI:N); default non-DTLS path needs an on-path/race/DNS-spoof position so AC:H; NULL read yields availability-only impact (C:N/I:N/A:H).
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
The UpdateHub firmware-over-the-air client parses the CoAP probe response with Zephyr's JSON library in z_impl_updatehub_probe() (subsys/mgmt/updatehub/updatehub.c). The decoder treats every descriptor field as optional - json_obj_parse() returns a bitmask of the fields it actually decoded and never fails on a missing one - so a response that omits the "sha256sum" string leaves the corresponding const char * in the zero-initialised struct resp_probe_any_boards / struct resp_probe_some_boards at NULL. Both metadata branches then computed sha256size = strlen(...objects.sha256sum) + 1 before any validation, dereferencing that NULL pointer; the SHA256_HEX_DIGEST_SIZE test that follows operates on a value the bad read has already produced and cannot prevent it.
The metadata is supplied entirely by the network peer: probe_cb() accepts the datagram, runs coap_packet_parse() and copies the payload with no token matching and no cryptographic check. With CONFIG_UPDATEHUB_DTLS unset - the default - start_coap_client() uses plain CoAP over UDP on port 5683 with no peer authentication and resolves the server via unauthenticated DNS, so an on-path attacker, a DNS spoofer, or an off-path attacker who wins the race with a forged source address can deliver the malformed metadata. A probe response as simple as "objects":[[{}],[{}]] suffices, and no user interaction is required because updatehub_autohandler() polls on CONFIG_UPDATEHUB_POLL_INTERVAL. When CONFIG_UPDATEHUB_DTLS=y the trigger narrows to a malicious or compromised update server.
The primitive is a read at address zero, not a write, so the impact is availability only. On targets where the low address range is unmapped or protected - MMU-based architectures, builds with CONFIG_NULL_POINTER_EXCEPTION_DETECTION_DWT/_MPU/_PMP, TrustZone non-secure images, and SoCs such as nRF54L whose 0x0-0x400 window is unmapped - the load faults and Zephyr's default fatal handler halts the system, giving a remotely re-triggerable denial of service on every poll. On classic Cortex-M targets where the vector table is readable at address zero the walk usually terminates immediately and the request is rejected by the length check, so the outcome is configuration- and SoC-dependent. There is no memory write, and the copied bytes are only compared against the locally computed image hash, so there is no information-disclosure channel.
The fix adds an explicit sha256sum == NULL test that returns UPDATEHUB_METADATA_ERROR ahead of the strlen() in both metadata branches. Debug builds (CONFIG_UPDATEHUB_LOG_LEVEL=4) still format the same pointers with %s in a LOG_DBG() loop that runs before the new checks, so that variant remains in debug configurations only.
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 null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).
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-104599
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB