CVE-2026-64347 in LinuxИнформация

Сводка

по VulDB • 25.07.2026

В ядре Linux устранена следующая уязвимость:

usb: gadget: composite: исправлена неработающая проверка на пустоту в обработчике USB_DT_OTG

Разветвление OTG функции composite_setup() переходит к первой конфигурации, если ни одна не выбрана:

if (cdev->config) config = cdev->config; else config = list_first_entry(&cdev->configs, struct usb_configuration, list); if (!config) goto done; ... memcpy(req->buf, config->descriptors[0], value);

Функция list_first_entry() никогда не возвращает NULL. На пустом списке она возвращает результат container_of() для заголовка списка. Таким образом, проверка «if (!config)» является неработающей (dead code).

Когда список cdev->configs пуст, указатель config указывает на заголовок внутри структуры usb_composite_dev. Чтение из config->descriptors[0] обращается к произвольным данным по этому смещению. Функция memcpy копирует до w_length байт этих данных в буфер ответа.

Список cdev->configs может оказаться пустым в двух случаях. Первый — это состояние гонки (race condition) при размонтировании устройства (gadget unbind), когда выполняется управляющий запрос (control transfer). Второй случай возникает, если драйвер устанавливает флаг is_otg до добавления конфигурации. Воспроизводящий пример, который оставляет cdev->configs пустым, вызывает ошибку KASAN в данном ветвлении кода.

Использование функции list_first_entry_or_null() позволяет существующей проверке выполнять свою задачу корректно.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

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

Linux

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

19.07.2026

Раскрытие

25.07.2026

Модерация

принято

Вход

VDB-383145

EPSS

0.00220

KEV

Нет

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

Низкий

Источники

Do you need the next level of professionalism?

Upgrade your account now!