Linuxカーネルにおいて、usb: gadget: u_etherのgether_disconnect()とeth_stop()間の競合状態の脆弱性が修正されました。gether_disconnect()がエンドポイントを解放している間にeth_stop()が同時に実行されると、eth_stop()は解放済みのエンドポイント記述子にアクセスし、NULLポインタの参照違反(NPE)が発生します。具体的には、カーネルでNULLポインタ参照不能エラーが発生し、以下のコールトレースが記録されます:__dwc3_gadget_ep_enable+0x60/0x788、dwc3_gadget_ep_enable+0x70/0xe4、usb_ep_enable+0x60/0x15c、eth_stop+0xb8/0x108。さらに、eth_stop()はdev-lockを保持したままクラッシュするため、gether_disconnect()を実行しているスレッドが同じロックを取得できず永久にスピンし続け、ハードロックアップが発生します。これに関するコアのハードロックアップのデバッグ情報とコールトレースは次のとおりです:queued_spin_lock_slowpath+0x94/0x488、_raw_spin_lock+0x64/0x6c、gether_disconnect+0x19c/0x1e8、ncm_set_alt+0x68/0x1a0、composite_setup+0x6a0/0xc50。原因はgether_disconnect()内でdev-port_usbのクリアが関数の最後まで遅延されていることにあります。このクリア処理をgether_disconnect()の先頭に移動し、dev-lockを保持したまま実行することで接続を即座に切断し、eth_stop()がdev-port_usbがNULLであることを認識して安全に処理を中止できるようになりました。
Linux Linux Kernel 2.6.27 以上 5.10.253 未満 Linux Kernel 5.11 以上 5.15.203 未満 Linux Kernel 5.16 以上 6.1.169 未満 Linux Kernel 6.13 以上 6.18.22 未満 Linux Kernel 6.19 以上 6.19.12 未満 Linux Kernel 6.2 以上 6.6.134 未満 Linux Kernel 6.7 以上 6.12.81 未満 Linux Kernel 7.0
当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。
競合状態(CWE-362) [NVD評価]
CVE-2026-31728
National Vulnerability Database (NVD) : CVE-2026-31728 関連文書 : usb: gadget: u_ether: Fix race between gether_disconnect and eth_stop - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/f6813c2b2ae78def76b69e0f9d72f80e4a1c4aca) 関連文書 : usb: gadget: u_ether: Fix race between gether_disconnect and eth_stop - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/8ff689edfeceb5e3ec1623e09af2b2aa0f1098a8) 関連文書 : usb: gadget: u_ether: Fix race between gether_disconnect and eth_stop - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/e1e7a66584bf0aff3becb73c19fa31527889fc9e) 関連文書 : usb: gadget: u_ether: Fix race between gether_disconnect and eth_stop - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/a259ba0bce3b192c04334499690372a250f7d0b1) 関連文書 : usb: gadget: u_ether: Fix race between gether_disconnect and eth_stop - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/bbb09bb89ffa571475f66daca9482b974cd29d6a) 関連文書 : usb: gadget: u_ether: Fix race between gether_disconnect and eth_stop - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/6ad77458637b78ec655e3da5f112c862e6690a9d) 関連文書 : usb: gadget: u_ether: Fix race between gether_disconnect and eth_stop - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/e1eabb072c75681f78312c484ccfffb7430f206e) 関連文書 : usb: gadget: u_ether: Fix race between gether_disconnect and eth_stop - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/f02980594deef751e42133714aee25228f1494c6)
[2026年05月11日] 掲載