CVE-2026-76787
Received Received - Intake

Null Pointer Dereference in Zephyr UpdateHub

Vulnerability report for CVE-2026-76787, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-10-19

Last updated on: 2026-10-19

Assigner: Zephyr Project

Description

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-10-19
Last Modified
2026-10-19
Generated
2026-10-20
AI Q&A
2026-10-20
EPSS Evaluated
N/A
NVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
zephyrproject zephyr 2.4.0

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-476 The product dereferences a pointer that it expects to be valid but is NULL.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability involves a firmware-over-the-air client called UpdateHub parsing a CoAP probe response incorrectly. The client fails to validate a required 'sha256sum' field in the response, leading to a NULL pointer dereference when computing the SHA256 size. This causes a read at address zero, resulting in a system halt or denial of service on affected devices.

Detection Guidance

Detect this vulnerability by monitoring for crashes or reboots in UpdateHub clients, especially on systems with CONFIG_UPDATEHUB_DTLS unset. Check logs for NULL pointer dereferences or faults at address zero. Use network monitoring tools to inspect CoAP traffic on UDP port 5683 for malformed probe responses.

Impact Analysis

The impact is primarily availability-related. On some systems, it can cause a remotely triggered denial of service by crashing the device. The vulnerability requires no user interaction and can be exploited by an attacker on the same network or via DNS spoofing. However, it does not allow unauthorized access or data disclosure.

Mitigation Strategies

Enable CONFIG_UPDATEHUB_DTLS to enforce DTLS encryption and peer authentication. Apply the official patch adding sha256sum == NULL checks. Disable automatic polling if not required. Monitor for suspicious CoAP traffic on port 5683.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-76787. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart