CVE-2026-72483 в Linux Kernel: сдвиг за границами в драйвере USB max3421

CVE: CVE-2026-72483
Продукт: Linux Kernel
Дата публикации: 15.08.2026
Критичность: не определена
CVSS: нет данных
EPSS: 0,25%; процентиль 16,42%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В драйвере USB-хоста max3421 для Linux Kernel обнаружена уязвимость, позволяющая вызвать неопределенное поведение (shift-out-of-bounds) при обработке запросов к виртуальному корневому хабу. Локальный пользователь с доступом к устройству может повредить внутреннее состояние порта, обойдя проверки целостности.

Основные характеристики​


Ошибка локализована в функции max3421_hub_control() файла drivers/usb/host/max3421-hcd.c. При обработке запросов ClearPortFeature и SetPortFeature код выполняет побитовый сдвиг без проверки ширины типа данных. Это приводит к повреждению структуры port_status, включая биты изменений, которые обычно защищены. Уязвимость требует локального доступа к интерфейсу USB-хаба. Оценка EPSS составляет 0.25%, что указывает на низкую статистическую вероятность эксплуатации.

Какие продукты и версии затронуты​


Linux Kernel с активным драйвером max3421-hcd (поддержка чипа MAX3421E). Уязвимость присутствует в версиях ядра, не содержащих исправление, добавляющее проверку value >= 32. Затронуты системы, использующие USB-хабы на базе MAX3421E или эмуляцию такого хаба.

Причина уязвимости​


Функция max3421_hub_control() использует параметр value из запроса пользователя как количество позиций для сдвига влево (1 << value). Исходный код не проверял, превышает ли value ширину типа port_status (32 бита). При value >= 32 операция вызывает неопределенное поведение языка C, что приводит к непредсказуемому изменению битовой маски статуса порта.

Как работает атака​


Атакующий открывает файл устройства /dev/bus/usb/.../001 и отправляет ioctl с командой USBDEVFS_CONTROL. В поле wValue передается значение >= 32. Ядро передает это значение в max3421_hub_control(), где происходит сдвиг за границами. Результат — произвольное изменение бит в port_status, включая биты, отвечающие за фиксацию изменений состояния. Это позволяет обойти внутренние проверки драйвера и рассинхронизировать состояние хаба.

Условия успешной эксплуатации​


  1. Локальный доступ к системе с правами на чтение/запись к /dev/bus/usb/.../001 (обычно группа usb или root).
  2. Наличие активного USB-хаба на базе MAX3421E.
  3. Загруженный модуль max3421-hcd.
  4. Отсутствие патча, ограничивающего value диапазоном 0-31.

Возможный сценарий атаки​


Локальный процесс открывает /dev/bus/usb/.../001 и отправляет запрос SetPortFeature или ClearPortFeature с wValue = 32. Ядро выполняет сдвиг за границами, повреждая port_status. Внутренняя логика драйвера начинает работать с некорректными данными, что может привести к зависанию порта, ложным срабатываниям обработчиков или отказу в обслуживании. Прямая эскалация привилегий не подтверждена.

Есть ли публичный эксплойт​


Публичный эксплойт или PoC не зафиксирован. Уязвимость обнаружена с помощью инструмента символьного выполнения на базе KLEE. Механика ошибки проста и воспроизводима локально, но готовых инструментов для массовых атак нет.

Признаки эксплуатации​


Специфичные IOC отсутствуют. Общие признаки:

  • Ошибки в dmesg, связанные с драйвером max3421.
  • Аномальное поведение USB-портов (отключение/подключение без физического вмешательства).
  • Локальные процессы, обращающиеся к /dev/bus/usb/.../001 с нестандартными параметрами ioctl.
  • Зависания системы при использовании USB-хаба MAX3421.

Как обнаружить атаку​


  1. Мониторинг логов ядра (dmesg, /var/log/kern.log) на предмет ошибок max3421.
  2. Аудит прав доступа к /dev/bus/usb/*.
  3. Использование auditd для отслеживания вызовов ioctl с USBDEVFS_CONTROL.
  4. Проверка целостности конфигурации USB-хабов.

Как проверить свою версию​


Проверьте версию ядра и наличие модуля:

Bash:
uname -r
uname -a
cat /proc/version
lsmod | grep max3421

Если модуль загружен, система потенциально уязвима, если версия ядра не содержит исправления.

Исправление​


Установите последние обновления ядра Linux. Патч добавляет проверку if (value >= 32) goto error; перед операциями сдвига. Обновление должно быть выполнено на всех системах с USB-хабами MAX3421E. После обновления перезагрузите систему.

Временные меры защиты​


  1. Отключите модуль max3421-hcd, если использование хаба не критично:

    Bash:
    rmmod max3421-hcd

    Добавьте blacklist max3421-hcd в /etc/modprobe.d/.
  2. Ограничьте доступ к /dev/bus/usb/.../001 только для root.
  3. Используйте AppArmor/SELinux для ограничения вызовов ioctl к USB-устройствам.

Как проверить устранение уязвимости​


Проверьте версию ядра:

Bash:
uname -r

Убедитесь, что модуль работает корректно:

Bash:
lsmod | grep max3421
dmesg | grep max3421

Отсутствие ошибок в логах подтверждает применение исправления.

Вывод​


CVE-2026-72483 — локальная уязвимость в драйвере USB-хаба MAX3421E, позволяющая повредить состояние ядра через невалидированный сдвиг. Риск массового использования низок, но локальные атакующиес доступом к USB могут эксплуатировать ошибку. Обновление ядра обязательно. Временное отключение модуля снижает поверхность атаки.

Официальные источники​


  1. NVD — CVE-2026-72483
  2. FIRST EPSS — CVE-2026-72483
  3. usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
  4. usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
  5. usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
  6. usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
  7. usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
  8. usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
  9. usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
  10. usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree

История обновлений статьи​


  • 16.08.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ