Skip to content

NULL-pointer dereference in UpdateHub OTA agent on empty inner metadata array (remote DoS)

High
d3zd3z published GHSA-jfpc-324j-84ww Aug 10, 2026

Software

zephyr

Affected versions

>= 3.7.0, <= 4.4.1

Patched versions

4.4.2

Description

The UpdateHub firmware-update agent's probe handler (z_impl_updatehub_probe() in subsys/mgmt/updatehub/updatehub.c) parses the JSON metadata returned by the update server into a fixed two-level nested-array struct. After parsing it validates only the outer array length (objects_len != 2) and then dereferences objects[1].objects[0].objects.sha256sum via strlen() without checking that the inner object array of element [1] is non-empty.

The metadata is attacker-influenceable network input: the agent fetches it over CoAP from the configured UpdateHub server during its routine OTA probe. A malicious or compromised update server (or, when DTLS is disabled, a network man-in-the-middle) can return a response whose second outer object array is empty. Because the parse target is zero-initialised, the corresponding objects[1].objects[0].objects.sha256sum pointer is NULL, and the subsequent strlen() dereferences address zero. The same defect exists in both the 'any boards' and 'some boards' metadata layouts.

The resulting CPU fault is fatal under Zephyr's default error handling, halting or resetting the device, so the flaw is a remotely triggerable denial of service. Impact is limited to availability; it is a read from NULL with no out-of-bounds write, memory corruption, or information disclosure. The fix rejects metadata whose inner object array is empty before any dereference, on both layouts.

Affected components

  • subsys/mgmt/updatehub

Affected versions

All releases shipping the UpdateHub agent up to and including v4.4.0 (vulnerable code present in v4.3.0 and v4.4.0)

Fix

Fixed (merged) in 3424082

Projected fixed version: 4.5.0 (the fix is merged on main but not yet released; this forecast should be confirmed against the actual release).

Introduced by: Pre-v4.3.0: unchecked strlen over objects[1].objects[0].objects.sha256sum present since the JSON-array handling (commit 5fb62ca) and the outer objects_len!=2 check (2020-08-31, 9974a2a)

Evidence

  • subsys/mgmt/updatehub/updatehub.c:880-893 — pre-fix flow: validates only outer objects_len!=2, then strlen() on objects[1].objects[0].objects.sha256sum (NULL when inner array empty)
  • subsys/mgmt/updatehub/updatehub.c:886-890,926-930 — the added inner-length guard that closes the path on both layouts
  • subsys/mgmt/updatehub/updatehub.c:770-771 — metadata_*_boards locals are zero-initialised, so an empty inner array yields a NULL sha256sum pointer
  • subsys/mgmt/updatehub/updatehub_priv.h:90-114 — struct layout: objects[2] outer, objects[4]+objects_len inner; sha256sum is const char*
  • subsys/mgmt/updatehub/updatehub.c:836-862 — server CoAP response payload (probe_cb) is the parsed metadata, i.e. attacker-controlled network input
  • subsys/mgmt/updatehub/updatehub.c:195-206 — DTLS optional (CONFIG_UPDATEHUB_DTLS); default transport plain CoAP to CONFIG_UPDATEHUB_SERVER

Patches

Branch Pull request Status
main #104704 merged
v4.4-branch #112445 merged
v4.3-branch #112444 open
v3.7-branch #112443 merged

For more information

If you have any questions or comments about this advisory:

embargo: 2026-08-08

Severity

High

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

CVE ID

CVE-2026-11810

Weaknesses

NULL Pointer Dereference

The product dereferences a pointer that it expects to be valid but is NULL. Learn more on MITRE.