Skip to main content

Zephyr UpdateHub CVE-2026-76787

| EUVDEUVD-2026-104599 MEDIUM
NULL Pointer Dereference (CWE-476)
2026-10-19 zephyr
5.9
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain on-path position or spoof DNS/source
  2. Exploit
    Forge CoAP probe response omitting sha256sum
  3. Execution
    Trigger NULL-pointer read in probe parser
  4. Impact
    Fatal 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Zephyr 2.4.0 <4.5.0

Affected Packages

euvd zephyr fix: 4.5.0

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

Vendor (zephyr) PRIMARY 5.9 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 5.9 MEDIUM

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).

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

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

EPSS Score
0.3%
Top 80% exploitable
Prevalence
Medium
widely-used embedded RTOS, but UpdateHub FOTA client is an optional subsystem
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

More in Zephyr

View all
CVE-2023-4260 CRITICAL POC
10.0 Sep 27

Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),

CVE-2026-1678 CRITICAL POC
9.8 Mar 05

An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on

CVE-2023-5055 CRITICAL POC
9.8 Nov 21

Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit

CVE-2023-4257 CRITICAL POC
9.8 Oct 13

Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS

CVE-2023-3725 CRITICAL POC
9.8 Oct 06

Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner

CVE-2021-3323 CRITICAL POC
9.8 Oct 12

Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability

CVE-2021-3625 CRITICAL POC
9.8 Oct 05

Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable

CVE-2021-3319 CRITICAL POC
9.8 Oct 05

DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul

CVE-2018-1000800 CRITICAL POC
9.8 Sep 06

zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(

CVE-2023-4264 CRITICAL POC
9.6 Sep 27

Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul

CVE-2024-1638 CRITICAL POC
9.1 Feb 19

The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte

CVE-2023-5753 HIGH POC
8.8 Oct 25

Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy