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

Сводка

по VulDB • 11.10.2026

Реализация процедуры Link Layer Control Procedure (LLCP) в контроллере Bluetooth LE программного обеспечения Zephyr сохраняет узел приема, который содержал принятый LL_PHY_UPDATE_IND, чтобы его можно было повторно использовать для уведомления хоста при наступлении указанного момента времени (функция llcp_rx_node_retain() в файле subsys/bluetooth/controller/ll_sw/ull_llcp.c; узел намеренно не возвращается в пул, пока помечен как NODE_RX_TYPE_RETAIN). Обработчики ошибок с недопустимыми PDU для функций llcp_lp_pu_rx() и llcp_rp_pu_rx() в файле subsys/bluetooth/controller/ll_sw/ull_llcp_phy.c завершают процедуру через llcp_lr_complete() / llcp_rr_complete(), не освобождая ранее сохраненный узел. В результате контекст процедуры — единственная оставшаяся ссылка на этот узел — освобождается, пока узел все еще удерживается вне пула приема.

Устройство-партнер в рамках установленного соединения LE может детерминированно эксплуатировать эту уязвимость без сопряжения или шифрования. В отношении периферийного устройства оно отправляет LL_PHY_REQ, получает LL_PHY_RSP, затем отправляет допустимый LL_PHY_UPDATE_IND с указанием момента времени через несколько событий подключения в будущем (что приводит к сохранению узла), и перед наступлением этого момента отправляет любой другой PDU управления LL, например LL_LENGTH_REQ; функция ull_cp_rx() маршрутизирует его в активную процедуру обновления PHY удаленного устройства, которая проходит по ветке обработки недопустимых PDU. Зеркальный сценарий применим к инициированной локально процедуре обновления PHY, за которой следует LL_REJECT_IND.

В конфигурации по умолчанию (когда CONFIG_BT_ASSERT и CONFIG_BT_CTLR_ASSERT_DEBUG имеют значение y) нарушение инварианта в функциях llcp_lr_check_done() / llcp_rr_check_done() вызывает срабатывание утверждения контроллера, что приводит к k_oops() (или k_panic()) — одна специально созданная последовательность PDU из радиуса действия выводит устройство из строя. При отключении этих проверок во время компиляции каждая попытка тихо утекает один узел приема PDU и его ссылку memq; поскольку пул приема контроллера мал (PDU_RX_CNT, управляемый параметром CONFIG_BT_CTLR_RX_BUFFERS, который по умолчанию равен 1), а стоимость каждой попытки для атакующего ограничивается только повторным подключением, несколько повторов истощают пул и делают Bluetooth неработоспособным до перезагрузки. В релизах v3.4.0 через v3.7.x утверждение никогда не достигается независимо от конфигурации, поэтому каждая попытка приводит к тихой утечке памяти.

Воздействие ограничивается доступностью: осиротевший узел не оставляет висячих указателей, которые впоследствии разыменовываются, и никогда не передается хосту, поэтому отсутствует повреждение памяти или раскрытие информации. Тот же pull request применяет аналогичное исправление к процедурам обновления соединения (Connection Update) и создания CIS, чьи ветки обработки недопустимых PDU содержали ту же ошибку.

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

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

Zephyr

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

13.08.2026

Раскрытие

11.10.2026

Модерация

принято

Вход

VDB-416742

EPSS

0.00000

KEV

Нет

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

Очень низкий

Источники

Might our Artificial Intelligence support you?

Check our Alexa App!