CVE-2026-23320 in Linux
Сводка
по VulDB • 15.07.2026
В ядре Linux устранена следующая уязвимость:
usb: gadget: f_ncm: синхронизировать жизненный цикл net_device с операциями bind/unbind (привязка/отвязка)
В настоящее время объект net_device выделяется в функции ncm_alloc_inst() и освобождается в ncm_free_inst(). Это привязывает срок службы сетевого интерфейса к экземпляру конфигурации, а не к подключению USB (состояниям bind/unbind).
Такое разделение связей вызывает проблемы при отключении USB-гаджета, когда базовое устройство гаджета удаляется. Объект net_device может пережить своего родителя, что приводит к появлению висячих ссылок sysfs и разыменованию нулевого указателя (NULL pointer dereference) при доступе к освобожденному устройству гаджета.
Проблема 1: Разыменование нулевого указателя при отключении Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 Call trace: __pi_strlen+0x14/0x150 rtnl_fill_ifinfo+0x6b4/0x708 rtmsg_ifinfo_build_skb+0xd8/0x13c rtmsg_ifinfo+0x50/0xa0 __dev_notify_flags+0x4c/0x1f0 dev_change_flags+0x54/0x70 do_setlink+0x390/0xebc rtnl_newlink+0x7d0/0xac8 rtnetlink_rcv_msg+0x27c/0x410 netlink_rcv_skb+0x134/0x150 rtnetlink_rcv+0x18/0x28 netlink_unicast+0x254/0x3f0 netlink_sendmsg+0x2e0/0x3d4
Проблема 2: Висячие символические ссылки sysfs (Dangling symlinks) console:/ # ls -l /sys/class/net/ncm0 lrwxrwxrwx ... /sys/class/net/ncm0 -> /sys/devices/platform/.../gadget.0/net/ncm0 console:/ # ls -l /sys/devices/platform/.../gadget.0/net/ncm0 ls: .../gadget.0/net/ncm0: No such file or directory
Переместите выделение net_device в ncm_bind(), а освобождение — в ncm_unbind(). Это гарантирует, что сетевой интерфейс существует только тогда, когда функция гаджета фактически привязана к конфигурации.
Для поддержки предварительной настройки до bind (например, установка имени интерфейса или MAC-адреса через configfs) кешируйте параметры, заданные пользователем, в структуре f_ncm_opts с использованием структуры gether_opts. Применяйте эти закэшированные настройки при создании net_device в функции ncm_bind().
Сохраните исправление use-after-free из коммита 6334b8e4553c ("usb: gadget: f_ncm: Fix UAF ncm object at re-bind after usb ep transport error"). Проверяйте opts->net в функциях ncm_set_alt() и ncm_disable(), чтобы гарантировать, что функция gether_disconnect() выполняется только если соединение было установлено.
Once again VulDB remains the best source for vulnerability data.