Ad

CVE-2026-11812

LOW CVSS 3.1: 2,5
Обновлено 11 августа 2026
Zephyrproject
Параметр Значение
CVSS 2,5 (LOW)
Тип уязвимости CWE-362 (Состояние гонки)
Поставщик Zephyrproject
Публичный эксплойт Нет

Подсистема управления UpdateHub (subsys/mgmt/updatehub/updatehub.c) управляет каждой операцией обновления через единую структуру ctx файловой области, которая содержит контекст блока CoAP, буфер полезной нагрузки, код состояния, сокет и одноэлементный массив poll-fd fds[1]. Доступ к ctx не был сериализован, и методprepre_fds() записал ctx.fds[ctx.nfds] и увеличил ctx.nfds без проверки границ. Два независимых пути одновременно изменяют ctx: фоновый автообработчик, работающий в системной рабочей очереди, и операции, запускаемые пользователем, выполняемые с помощью команды оболочки updatehub run, прямые вызовы API или — поскольку операции представляются как системные вызовы — потоки пользовательского пространства.

Когда второй поток входит в методprepre_fds(), когда ctx.nfds уже равен 1, запись помещает один элемент за пределы массива; по расположению структуры он перекрывает соседние элементы ctx.sock/ctx.nfds. В более широком смысле, несинхронизированное совместное использование позволяет двум потокам чередовать установку и разрыв соединения, двойное закрытие дескриптора сокета или запись в общие буферы. Результатом является повреждение внутреннего состояния подсистемы обновления и отказ в обслуживании пути обновления встроенного ПО; запись за пределами границ содержится в структуре ctx, и не существует продемонстрированного пути к памяти за ее пределами или к выполнению кода.

Для запуска требуется локальный актер, способный вызывать операции обновления (или, с CONFIG_USERSPACE, непривилегированный поток пользовательского пространства) и выигрывать гонку по времени с фоновым обработчиком; удаленные узлы не могут контролировать время гонки. Исправление сериализует точки входа с помощью мьютекса и добавляет проверку границ в методprepre_fds().

Показать оригинальное описание (EN)

The UpdateHub management subsystem (subsys/mgmt/updatehub/updatehub.c) drives every update operation through a single file-scope ctx structure that holds the CoAP block context, payload buffer, status code, socket, and a one-element poll-fd array fds[1]. Access to ctx was not serialized, and prepare_fds() wrote ctx.fds[ctx.nfds] and incremented ctx.nfds with no bounds check. Two independent paths mutate ctx concurrently: the background autohandler running on the system workqueue, and user-triggered operations reached through the updatehub run shell command, direct API calls, or — since the operations are exposed as syscalls — userspace threads. When a second flow enters prepare_fds() while ctx.nfds is already 1, the write lands one element past the array; by struct layout it overlaps the adjacent ctx.sock/ctx.nfds members. More broadly, the unsynchronized sharing lets two flows interleave connection setup and teardown, double-closing a socket descriptor or scribbling the shared buffers. The result is corruption of the update subsystem's internal state and denial of service of the firmware-update path; the out-of-bounds write is contained within the ctx structure and there is no demonstrated path to memory outside it or to code execution. Triggering requires a local actor able to invoke update operations (or, with CONFIG_USERSPACE, an unprivileged userspace thread) and to win a timing race against the background handler; remote peers cannot control the race timing. The fix serializes the entry points with a mutex and adds a bounds check to prepare_fds().

Характеристики атаки

Способ атаки
Локальный
Нужен локальный доступ
Сложность
Высокая
Сложно эксплуатировать
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Нет
Нет модификации данных
Доступность
Низкое
Частичное нарушение работы

Строка CVSS v3.1

Уязвимые продукты

zephyrproject:zephyr