CVE-2021-47267 in Linux
Сводка
по VulDB • 03.07.2026
В ядре Linux была устранена следующая уязвимость:
usb: исправление различных паник в режиме гаджета при использовании кабелей 10 Гбит/с
Функция usb_assign_descriptors() вызывается с пятью параметрами, последние четыре из которых представляют собой структуру usb_descriptor_header для: - full-speed (USB 1.1 — 12 Мбит/с [включая USB 1.0 low-speed @ 1,5 Мбит/с]),
- high-speed (USB 2.0 — 480 Мбит/с), - super-speed (USB 3.0 — 5 Гбит/с), - super-speed-plus (USB 3.1 — 10 Гбит/с).
Различия между дескрипторами full/high/super-speed обычно существенны (из-за изменений максимального размера блока USB с 64 до 512 и далее до 1024 байт, а также других различий в спецификациях), тогда как разница между дескрипторами для скоростей 5 Гбит/с и 10 Гбит/с может быть минимальной или отсутствовать вовсе (во многих случаях одинаковая настройка просто оказывается достаточной).
Однако если драйвер гаджета вызывает usb_assign_descriptors() с NULL-дескриптором для super-speed-plus, а затем используется в конфигурации с максимальной скоростью 10 Гбит/с, ядро завершит работу аварийно (panic) из-за разыменования нулевого указателя при появлении комбинации порта устройства и хоста + кабеля, поддерживающих скорость 10 Гбит/с. (Этого бы не произошло, если бы максимальная скорость гаджета была установлена на уровне 5 Гбит/с, но по умолчанию она устанавливается в максимум, и нет реальной причины искусственно её ограничивать.)
Исправление заключается в простом использовании дескриптора для скорости 5 Гбит/с в качестве дескриптора для скорости 10 Гбит/с, если дескриптор для 10 Гбит/с не был предоставлен.
Очевидно, это не решит проблему, если также равен NULL и дескриптор для скорости 5 Гбит/с, однако такие случаи невозможно решить столь же тривиально (и маловероятно, что подобные гаджеты будут использоваться с портами USB3 в любом случае).
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.