CVE-2026-76787 in ZephyrИнформация

Сводка

по VulDB • 19.10.2026

Клиент прошивки UpdateHub-over-the-air парсит ответ CoAP probe с использованием библиотеки JSON Zephyr в функции z_impl_updatehub_probe() (subsys/mgmt/updatehub/updatehub.c). Декодер рассматривает каждое поле дескриптора как необязательное — json_obj_parse() возвращает битовую маску фактически декодированных полей и никогда не завершается ошибкой при отсутствии поля, поэтому ответ, в котором отсутствует строка «sha256sum», оставляет соответствующий указатель const char * в структуре resp_probe_any_boards / struct resp_probe_some_boards (инициализированной нулями) равным NULL. Оба ветвления обработки метаданных затем вычисляют sha256size = strlen(...objects.sha256sum) + 1 до какой-либо проверки, разыменовывая этот указатель NULL; проверка SHA256_HEX_DIGEST_SIZE, следующая за этим, оперирует значением, уже сформированным в результате некорректного чтения (bad read), и не может предотвратить его.

Метаданные полностью поставляются сетевым пиром: probe_cb() принимает дейтаграмму, запускает coap_packet_parse() и копирует полезную нагрузку без проверки токена и без криптографической проверки. При невыставленном CONFIG_UPDATEHUB_DTLS (по умолчанию) start_coap_client() использует обычный CoAP поверх UDP на порту 5683 без аутентификации пира и разрешает имя сервера через неаутентицированный DNS, поэтому атакующий в пути (on-path attacker), спуфер DNS или атакующий вне пути (off-path attacker), выигравший гонку с поддельным исходным адресом, может доставить некорректные метаданные. Достаточно даже такого простого ответа probe: «objects»:[[{}],[{}]], и взаимодействие с пользователем не требуется, поскольку updatehub_autohandler() опрашивает сервер в соответствии с CONFIG_UPDATEHUB_POLL_INTERVAL. При включенном CONFIG_UPDATEHUB_DTLS=y триггер сводится к злонамеренному или скомпрометированному серверу обновлений.

Примитивом является чтение по адресу ноль, а не запись, поэтому воздействие ограничивается только доступностью (availability). На целевых платформах, где диапазон низких адресов отображен в память или защищен — архитектуры на базе MMU, сборки с CONFIG_NULL_POINTER_EXCEPTION_DETECTION_DWT/_MPU/_PMP, образы TrustZone non-secure и SoC, такие как nRF54L, у которых окно 0x0–0x400 не отображено в память (unmapped) — загрузка вызывает ошибку (fault), а стандартный обработчик фатальных ошибок Zephyr останавливает систему, обеспечивая удаленно перезапускаемую атаку на отказ в обслуживании (DoS) при каждом опросе. На классических целевых платформах Cortex-M, где таблица векторов доступна для чтения по адресу ноль, итерация обычно завершается немедленно, а запрос отклоняется проверкой длины, поэтому результат зависит от конфигурации и SoC. Записи в память не происходит, а скопированные байты сравниваются только с локально вычисленным хэшем образа, поэтому канал утечки информации отсутствует.

Исправление добавляет явную проверку sha256sum == NULL, которая возвращает UPDATEHUB_METADATA_ERROR до вызова strlen() в обоих ветвлениях обработки метаданных. В сборках для отладки (CONFIG_UPDATEHUB_LOG_LEVEL=4) те же указатели все еще форматируются с помощью %s в цикле LOG_DBG(), который выполняется перед новыми проверками, поэтому этот вариант остается только в конфигурациях для отладки.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Ответственный

Zephyr

Резервировать

19.08.2026

Раскрытие

20.10.2026

Модерация

принято

Вход

VDB-422537

EPSS

0.00000

KEV

Нет

Деятельности

Низкий

Источники

Want to stay up to date on a daily basis?

Enable the mail alert feature now!