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.
{
"cna_assigner": "zephyr",
"cwe_ids": [
"CWE-125",
"CWE-908"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/11xxx/CVE-2026-11809.json"
}"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-11809.json"
[
{
"deprecated": false,
"digest": {
"line_hashes": [
"22470137530760958787346568958329170648",
"289945072566693874136390425725813968618",
"237803188783043352706909215538264548020"
],
"threshold": 0.9
},
"id": "CVE-2026-11809-724fe937",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/zephyrproject-rtos/zephyr/commit/69bbed5e601495a2076f25d822adbf991cae5c01",
"target": {
"file": "subsys/mgmt/updatehub/updatehub.c"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "206123001600531116997198328001841450746",
"length": 5068
},
"id": "CVE-2026-11809-98655773",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/zephyrproject-rtos/zephyr/commit/69bbed5e601495a2076f25d822adbf991cae5c01",
"target": {
"file": "subsys/mgmt/updatehub/updatehub.c",
"function": "z_impl_updatehub_probe"
}
}
]
"2026-08-28T14:32:52Z"