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

Сводка

по VulDB • 11.10.2026

Драйвер генератора энтропии NXP MCUX TRNG в файле drivers/entropy/entropy_mcux_trng.c передает количество байтов от вызывающей стороны напрямую в функцию SDK поставщика TRNG_GetRandomData(). На чипах i.MX RT5xx и RT6xx SDK компилирует вариант TRNG_SW_HEALTH_TESTS, который всегда копирует целые 32-битные слова и извлекает энтропию, округленную до кратного значения 128 байт. Его проверка «буфер вызывающей стороны заполнен» тести dataSize == 0, поэтому запрос с длиной, не кратной четырем, вызывает переполнение вниз (underflow) переменной dataSize за пределы нуля, и SDK продолжает запись в буфер вызывающей стороны на протяжении всего процесса извлечения: запрос на 1 байт приводит к записи 128 байт, а любая длина, не являющаяся кратной слову, вызывает переполнение (overflow) до 127 байт.

Функция entropy_get_entropy() является системным вызовом, и ее верификатор в drivers/entropy/entropy_handlers.c проверяет только запрошенную длину через K_SYSCALL_MEMORY_WRITE(). При включенной опции CONFIG_USERSPACE непривилегированный поток пользовательского режима, которому предоставлен доступ к устройству энтропии, может выбрать как адрес назначения, так и такую длину, как 1 байт, заставив ядро записать до 127 байт за пределами региона, право владения которым оно подтвердило. На этих целевых платформах Cortex-M33 отсутствует MMU (модуль защиты памяти), поэтому пользовательские разделы и данные ядра разделяют одну SRAM, и переполнение может затронуть смежное состояние ядра. Тот же дефект достигается из режима ядра любым вызывающим объектом, запрашивающим длину, не кратную слову, включая getentropy() и, в сборках, где sys_csrand_get()/sys_rand_get() разрешаются к аппаратному генератору, функции sys_rand8_get() и sys_rand16_get().

Воздействие заключается в повреждении памяти объемом до 127 байт непосредственно после предоставленного буфера — обычно это стек вызывающей стороны при использовании в режиме ядра или память вне раздела вызывающего объекта при управлении через системный вызов. Смещение переполнения полностью определяется запрошенной длиной и, следовательно, является детерминированным, тогда как записываемое содержимое представляет собой неконтролируемый вывод TRNG; практические последствия варьируются от сбоев (crashes) и непредсказуемого повреждения состояния до opportunistической эскалации привилегий при перезаписи таких данных учета ядра, как битовые карты разрешений объектов. Затронуты устройства, на которых SDK MCUX включает TRNG_SW_HEALTH_TESTS (MIMXRT595S, MIMXRT555S, MIMXRT533S, MIMXRT685S, MIMXRT633S), где TRNG является выбранным узлом zephyr,entropy; другие SoC, использующие этот драйвер, используют путь SDK, который ограничивает (clamps) размер копирования, и не подвержены данному уязвимости.

Исправление направляет любой невыровненный префикс и любую хвостовую часть меньше слова через локальное промежуточное слово (bounce word) и передает в SDK только размеры, кратные слову, поэтому записи SDK с гранулярностью по словам больше не могут выходить за пределы буфера вызывающей стороны.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

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

Zephyr

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

13.08.2026

Раскрытие

11.10.2026

Модерация

принято

Вход

VDB-416745

EPSS

0.00000

KEV

Нет

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

Низкий

Источники

Interested in the pricing of exploits?

See the underground prices here!