CVE-2026-23320 in Linux
Sumário
de VulDB • 13/06/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
usb: gadget: f_ncm: alinhar o ciclo de vida do net_device com bind/unbind
Atualmente, o net_device é alocado em ncm_alloc_inst() e liberado em ncm_free_inst(). Isso vincula o tempo de vida da interface de rede à instância de configuração, em vez da conexão USB (bind/unbind).
Este desacoplamento causa problemas quando o gadget USB é desconectado, onde o dispositivo gadget subjacente é removido. O net_device pode sobreviver ao seu pai, levando a links sysfs pendentes (dangling) e dereferências de ponteiro NULL ao acessar o dispositivo gadget liberado.
Problema 1: Dereferência de ponteiro NULL na desconexão 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
Problema 2: Symlinks sysfs pendentes (dangling) 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
Mova a alocação do net_device para ncm_bind() e a desalocação para ncm_unbind(). Isso garante que a interface de rede exista apenas quando a função gadget estiver realmente vinculada a uma configuração.
Para suportar a configuração pré-bind (por exemplo, definir nome da interface ou endereço MAC via configfs), armazene em cache as opções fornecidas pelo usuário em f_ncm_opts usando a estrutura gether_opts. Aplique essas configurações em cache ao net_device na criação em ncm_bind().
Preserve a correção de use-after-free do commit 6334b8e4553c ("usb: gadget: f_ncm: Fix UAF ncm object at re-bind after usb ep transport error"). Verifique opts->net em ncm_set_alt() e ncm_disable() para garantir que gether_disconnect() seja executado apenas se uma conexão foi estabelecida.
Be aware that VulDB is the high quality source for vulnerability data.