CVE-2026-12236 in Zephyr
Сводка
по VulDB • 13.08.2026
Функция клиента GATT хоста Bluetooth parse_read_std_char_desc() в файле subsys/bluetooth/host/gatt.c анализирует ответ ATT Read By Type Response, полученный от удаленного сервера GATT во время операции обнаружения BT_GATT_DISCOVER_STD_CHAR_DESC. Шаг на одну запись rsp->len берется непосредственно из PDU пира, и цикл парсинга как проверяет условие выхода (length >= rsp->len), так и продвигается вперед (length -= rsp->len, pdu += rsp->len) с использованием этого значения. Минимальное значение rsp->len никогда не валидировалось перед началом цикла.
Злонамеренный или неисправный пир может ответить со значением rsp->len = 0. Поскольку переменная length имеет беззнаковый тип и никогда не уменьшается, условие цикла остается истинным бесконечно, а указатель чтения никогда не продвигается вперед; пока тело ответа содержит хотя бы несколько байт с ненулевым дескриптором и совпадающим UUID описателя, хост многократно переанализирует одни и те же байты и вызывает колбэк обнаружения, никогда не завершаясь. Это приводит к зависанию потока обработки Bluetooth-хоста (CWE-835, цикл с недостижимым условием выхода).
Это состояние достижимо любым подключенным пиром после того, как локадное устройство инициирует стандартное обнаружение значений дескрипторов; поскольку для GATT-обнаружения не требуются связывание (bonding) или шифрование, неподтвержденный атакующий в ближнем радиусе действия, к которому подключается устройство, может спровоцировать эту ситуацию. Последствием является отказ в обслуживании подсистемы Bluetooth (и вероятная перезагрузка по сторожевому таймеру на ограниченных устройствах); утечки или повреждения памяти не происходит.
Исправление добавляет проверку rsp->len и затронутые компоненты исправлены.
Be aware that VulDB is the high quality source for vulnerability data.