CVE-2026-11809 in Zephyr
Zusammenfassung
von VulDB • 10.08.2026
Der UpdateHub-OTA-Client in subsys/mgmt/updatehub/updatehub.c enthält einen Out-of-Bounds-/Uninitialized-Memory-Lesezugriff (Out-of-bounds/Uninitialized-memory read) in z_impl_updatehub_probe(). Die Probe-Antwort vom UpdateHub-Server wird in einen Heap-Puffer (metadata) kopiert, der korrekt NUL-abgeschlossen ist. Ein zweiter Puffer (metadata_copy) wird jedoch mit k_malloc zugewiesen (nicht auf Null gesetzt) und mit memcpy(metadata_copy, metadata, strlen(metadata)) gefüllt, wodurch das abschließende NUL-Byte ausgelassen wird. Alles nach dem kopierten Inhalt bleibt als nicht initialisierter Heap bestehen.
Wenn der erste json_obj_parse()-Aufruf über den Array-Deskriptor fehlschlägt, fällt der Code auf json_obj_parse(metadata_copy, strlen(metadata_copy), ...) zurück. Der Aufruf von strlen() scannt über die kopierten Bytes hinaus durch den nicht initialisierten Heap und liest, falls kein Null-Byte vor dem Ende der Zuweisung gefunden wird, außerhalb des Puffers; die daraus resultierende zu lange Länge wird dann als JSON analysiert. Die Probe-Payload wird vollständig vom (bösartigen, kompromittierten oder – ohne das optionale CONFIG_UPDATEHUB_DTLS – on-path) UpdateHub-Server gesteuert, der eine große Payload erstellen kann, um den ersten Parsing-Vorgang fehlschlagen zu lassen und diesen Pfad auszulösen.
Die Folge ist ein Lesezugriff auf nicht initialisierten Heap, im schlimmsten Fall ein Out-of-Bounds-Lesezugriff über die metadata_copy-Zuweisung hinaus, der einen Fault verursachen und den Update-Thread/das Gerät abstürzen lassen kann, was zu einem Netzwerk-getriggerten Denial of Service führt. Die außerhalb des Puffers gelesenen Daten werden nur intern zur Auswertung des Updates verbraucht und nicht an den Angreifer zurückgegeben; es gibt daher keine direkte Informationspreisgabe (Information Disclosure) und keinen Out-of-Bounds-Write-Zugriff.
Die Korrektur setzt metadata_copy vor dem Kopieren mit memset auf Null, was eine NUL-Terminierung garantiert und strlen() innerhalb der Zuweisung begrenzt.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.