CVE: CVE-2026-72483
Продукт: Linux Kernel
Дата публикации: 15.08.2026
Критичность: HIGH
CVSS: 7.8 (3.1)
EPSS: 0,18%; процентиль 7,98%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В драйвере USB-хоста max3421 для Linux Kernel обнаружена уязвимость, позволяющая вызвать неопределенное поведение при сдвиге битов. Злоумышленник с локальными привилегиями может отправить запрос с невалидным параметром, что приводит к повреждению структуры состояния порта и потенциальному обходу внутренних проверок ядра.
Основные характеристики
Уязвимость классифицирована как HIGH (CVSS 7.8). Вектор атаки требует локального доступа (AV:L), низких требований к сложности (AC:L) и наличия прав пользователя (PR:L). Уязвимый компонент — драйвер
drivers/usb/host/max3421-hcd.c, отвечающий за работу с чипом MAX3421E в режиме хоста. Проблема заключается в отсутствии проверки границ параметра value перед выполнением операции побитового сдвига влево.Какие продукты и версии затронуты
Linux Kernel с включенным драйвером USB-хоста max3421. Уязвимость затрагивает системы, использующие аппаратное обеспечение на базе чипа MAX3421E и соответствующий модуль ядра. Точные версии ядер, содержащие уязвимость, определяются наличием кода до применения исправления (commit cff06b03b530ae1fe8a13e93a7848f2130e00fb4 и его backports).
Причина уязвимости
Функция
max3421_hub_control() обрабатывает запросы класса USB-хаба. В ветках default операторов switch для ClearPortFeature и SetPortFeature код модифицирует поле max3421_hcd->port_status, выполняя сдвиг единицы влево на величину, заданную параметром value запроса. Разработчики не проверили, превышает ли значение value ширину поля port_status (32 бита). При значении value >= 32 происходит сдвиг за пределы допустимого диапазона, вызывая неопределенное поведение языка C.Как работает атака
Атакующий использует интерфейс
/dev/bus/usb/.../001 для отправки ioctl-вызова USBDEVFS_CONTROL. В структуре запроса параметр wValue устанавливается в значение 32 или выше. При обработке этого запроса функция max3421_hub_control() выполняет операцию (1 << value). Поскольку value >= 32, результат сдвига не определен и приводит к произвольному повреждению битов в структуре port_status. Это включает биты изменений, которые обычно неизменяемы, что позволяет нарушить внутреннюю логику проверки состояния хаба.Условия успешной эксплуатации
Необходим локальный доступ к системе. Атакующий процесс должен иметь права на чтение/запись устройства
/dev/bus/usb/.../001 (обычно требует принадлежности к группе usb или прав root). Требуется наличие работающего драйвера max3421-hcd и соответствующего аппаратного обеспечения.Возможный сценарий атаки
Локальный пользователь с доступом к USB-устройствам запускает программу, которая открывает устройство корневого хаба и отправляет управляющий запрос с
wValue = 32. Ядро обрабатывает запрос, выполняет некорректный сдвиг и повреждает структуру состояния порта. Это может привести к тому, что ядро будет неверно интерпретировать состояние портов USB, потенциально позволяя обходить проверки безопасности или вызывая нестабильность работы USB-подсистемы.Есть ли публичный эксплойт
Публичный эксплойт или PoC не опубликован. Уязвимость была обнаружена с использованием инструмента символического выполнения на базе KLEE, разработанного для тестирования драйверов ядра. Информация о подтвержденной эксплуатации в дикой природе отсутствует.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для этой уязвимости не определены. Общие признаки могут включать необычные ошибки в журналах ядра (dmesg), связанные с USB-хабом, или нестабильность работы USB-устройств после выполнения локальных программ, взаимодействующих с
/dev/bus/usb. Эти признаки неспецифичны и могут быть вызваны другими причинами.Как обнаружить атаку
Мониторинг вызовов ioctl к устройствам
/dev/bus/usb с аномальными значениями параметров. Анализ журналов ядра на предмет ошибок в модуле max3421-hcd. Проверка целостности файлов ядра и модулей. Использование инструментов статического анализа кода для выявления подобных ошибок в других драйверах.Как проверить свою версию
Для проверки версии ядра используйте команды:
Bash:
uname -r
uname -a
cat /proc/version
Затем проверьте, содержит ли текущее ядро исправление. Это можно сделать, проверив наличие патча в истории git или сравнив код файла
drivers/usb/host/max3421-hcd.c с исправленной версией. Если в коде отсутствует проверка if (value >= 32) goto error; в функциях обработки ClearPortFeature и SetPortFeature, система уязвима.Исправление
Обновите ядро Linux до версии, содержащей исправление CVE-2026-72483. Исправление добавляет проверку
if (value >= 32) goto error; перед выполнением сдвига в функциях max3421_hub_control(). Убедитесь, что установленный пакет ядра включает коммиты, связанные с этим исправлением (например, 00dd025324b56d39d37e57a08f473dab3a660f30 и другие backports).Временные меры защиты
Если обновление ядра невозможно, ограничьте доступ к устройствам
/dev/bus/usb только для необходимых процессов. Используйте ACL или права доступа к файлам, чтобы запретить обычным пользователям доступ к /dev/bus/usb/.../001. Отключите модуль max3421-hcd, если он не требуется для работы системы.Как проверить устранение уязвимости
После обновления проверьте версию ядра командой
uname -r. Убедитесь, что новая версия ядра содержит исправление. Проверьте, что модуль max3421-hcd загружен из нового ядра. Можно также проверить исходный код установленного ядра или использовать инструменты анализа, чтобы убедиться в наличии проверки value >= 32.Вывод
CVE-2026-72483 представляет собой уязвимость в драйвере USB-хоста max3421, позволяющую вызвать неопределенное поведение ядра через локальный запрос. Хотя риск эксплуатации ограничен необходимостью локального доступа и специфичным оборудованием, последствия могут быть серьезными. Рекомендуется своевременное обновление ядра и ограничение доступа к USB-устройствам.
Официальные источники
- NVD — CVE-2026-72483
- FIRST EPSS — CVE-2026-72483
- usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
- usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
- usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
- usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
- usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
- usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
- usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
- usb: host: max3421: Fix shift-out-of-bounds in max3421_hub_control() - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 16.08.2026 — Опубликована первая версия материала.
- 19.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
