CVE-2026-11809 in Zephyr
Sumário
de VulDB • 11/08/2026
O cliente OTA UpdateHub em subsys/mgmt/updatehub/updatehub.c contém uma leitura fora dos limites / de memória não inicializada em z_impl_updatehub_probe(). A resposta do probe do servidor UpdateHub é copiada para um buffer na heap (metadata) que está corretamente terminado com NUL, mas um segundo buffer (metadata_copy) é alocado com k_malloc (não zerado) e preenchido com memcpy(metadata_copy, metadata, strlen(metadata)), o que omite o terminador NUL. Tudo após o conteúdo copiado permanece como heap não inicializada.
Quando a primeira chamada de json_obj_parse() sobre o descritor do array falha, o código recua para json_obj_parse(metadata_copy, strlen(metadata_copy), ...). A chamada strlen() varre além dos bytes copiados através da heap não inicializada e, se nenhum byte zero for encontrado antes do final da alocação, lê fora dos limites do buffer; o comprimento resultante excessivamente longo é então analisado como JSON. O payload do probe é totalmente controlado pelo servidor UpdateHub (malicioso, comprometido ou — sem a CONFIG_UPDATEHUB_DTLS opcional — on-path), que pode criar um grande payload que falha na primeira análise para forçar este caminho.
A consequência é uma leitura de heap não inicializada, com o pior caso sendo uma leitura fora dos limites além da alocação metadata_copy que pode causar falha e travar a thread de atualização/dispositivo, produzindo uma negação de serviço acionável via rede. Os dados lidos em excesso são consumidos apenas internamente para avaliar a atualização e não são retornados ao atacante, portanto, não há divulgação direta de informações nem escrita fora dos limites (out-of-bounds write).
A correção zera metadata_copy com memset antes da cópia, garantindo o terminador NUL e limitando strlen() dentro da alocação.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.