CVE-2026-23320 in Linux
要約
〜によって VulDB • 2026年07月06日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
usb: gadget: f_ncm: net_deviceのライフサイクルをbind/unbindと同期させる
現在、net_deviceはncm_alloc_inst()で割り当てられ、ncm_free_inst()で解放されています。これにより、ネットワークインタフェースの有効期間がUSB接続(bind/unbind)ではなく構成インスタンスに紐付けられています。
この結合の解除により、USBガジェットが切断され、基盤となるgadgetデバイスが削除された際に問題が発生します。net_deviceはその親オブジェクトよりも長く生存し、解放済みのgadgetデバイスへのアクセス時にdanglingなsysfsリンクやNULLポインタデリファレンス(ヌルポインタ参照)を引き起こす可能性があります。
問題1: 切断時のNULLポインタデリファレンス 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: danglingなsysfsシンボリックリンク 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()へ移動します。これにより、ネットワークインタフェースはガジェット関数が実際に構成にバインドされている間のみ存在することが保証されます。
プリバインド設定(例:configfs経由でのインタフェース名やMACアドレスの設定)をサポートするため、ユーザーが指定したオプションをgether_opts構造体を使用してf_ncm_opts内にキャッシュします。これらのキャッシュされた設定はncm_bind()でnet_device作成時に適用されます。
コミット6334b8e4553c("usb: gadget: f_ncm: Fix UAF ncm object at re-bind after usb ep transport error")におけるuse-after-freeの修正を維持します。opts->netをncm_set_alt()およびncm_disable()でチェックし、接続が確立された場合のみgether_disconnect()が実行されるようにします。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.