---
id: CVE-2026-11809
title: >-
  UpdateHub probe: uninitialized-heap out-of-bounds read of network-supplied
  metadata
summary: >-
  The UpdateHub OTA client in subsys/mgmt/updatehub/updatehub.c contains an
  out-of-bounds / uninitialized-memory read in z_impl_updatehub_probe(). The
  probe response from the UpdateHub server is copied into a heap buffer
  (metadata) that is…
severity: low
cvss: 3.7
cvssVector: 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L'
cvssSource: cna
cwe:
  - CWE-125
  - CWE-908
vendor: zephyrproject
product: zephyr
affected:
  - zephyr >= 2.0.0 < 4.3.2
  - zephyr >= 4.4.0 < 4.4.2
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-08-11T14:28:34.717496Z'
published: '2026-08-10'
updated: '2026-11-04'
sourceUpdated: '2026-11-04T04:59:16.610Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-11809'
references:
  - url: >-
      https://github.com/zephyrproject-rtos/zephyr/commit/69bbed5e601495a2076f25d822adbf991cae5c01
    label: Fix commit
  - url: >-
      https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-6r86-hvv2-h6g4
    label: GHSA-6r86-hvv2-h6g4
tags:
  - cve.org
epss: 0.00353
epssPercentile: 0.29167
ingestedAt: '2026-11-05T20:33:06.698Z'
---

## Overview

The UpdateHub OTA client in subsys/mgmt/updatehub/updatehub.c contains an out-of-bounds / uninitialized-memory read in z_impl_updatehub_probe(). The probe response from the UpdateHub server is copied into a heap buffer (metadata) that is correctly NUL-terminated, but a second buffer (metadata_copy) is allocated with k_malloc (unzeroed) and filled with memcpy(metadata_copy, metadata, strlen(metadata)), which omits the terminating NUL. Everything after the copied content remains uninitialized heap.

When the first json_obj_parse() over the array descriptor fails, the code falls back to json_obj_parse(metadata_copy, strlen(metadata_copy), ...). The strlen() call scans past the copied bytes through uninitialized heap and, if no zero byte is found before the end of the allocation, reads beyond the buffer; the resulting over-long length is then parsed as JSON. The probe payload is fully controlled by the (malicious, compromised, or — without the optional CONFIG_UPDATEHUB_DTLS — on-path) UpdateHub server, which can craft a large payload that fails the first parse to drive this path.

The consequence is a read of uninitialized heap, with a worst case of an out-of-bounds read past the metadata_copy allocation that can fault and crash the update thread/device, producing a network-triggerable denial of service. The over-read data is consumed only internally to evaluate the update and is not returned to the attacker, so there is no direct information disclosure and no out-of-bounds write.

The fix zeroes metadata_copy with memset before the copy, guaranteeing NUL termination and bounding strlen() within the allocation.

## Affected

- `zephyr >= 2.0.0 < 4.3.2`
- `zephyr >= 4.4.0 < 4.4.2`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
