製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおけるリソースのロックに関する脆弱性
Title LinuxのLinux Kernelにおけるリソースのロックに関する脆弱性
Summary

Linuxカーネルにおいて、以下の脆弱性が修正されました。USBのdummy-hcdにおけるロックや同期エラーが修正されています。Syzbotのテストにより、drivers/usb/gadgets/udc/core.c内のusb_gadget_udc_reset()ルーチンにおいて、2番目の「driver」引数がNULLで呼び出されたことに起因するアドレッシング例外とクラッシュが発生することが確認されました。問題の原因となった呼び出し元はdummy_hcd.cのset_link_state()であり、この問題はUSBリセットとドライバーのバインド解除の競合によって発生していました。これらの競合は本来発生してはならず、コミット7dbd8f4cabd9(「USB: dummy-hcd: 誤った同期変更の修正」)およびいくつかのフォローアップコミットはこれらの競合を防止するために書かれたものです。しかしながら、コードには少なくとも2つのエラーが残っており、本パッチはそのうちの1つを修正します。Syzbotのクラッシュの原因となったエラーは、stop_activity()ルーチンが時としてdum-lockスピンロックを一度解放してから再取得するために発生していました。emulated USBリセットを処理中にset_link_state()でstop_activity()が呼ばれますが、その呼び出しはdum-ints_enabledのテスト後でdum-callback_usageのインクリメント前に行われます。そのため、別スレッド(ドライバーのバインド解除を行う)がスピンロックを奪い、dum-ints_enabledとdum-driverをクリアする機会を得てしまいました。通常、この別スレッドはdum-callback_usageが0になるまで待機しなければdum-driverをクリアできませんが、今回はまだインクリメントされていなかったため待機する必要がありませんでした。修正としては、stop_activity()を呼ぶ前にdum-callback_usageをインクリメントする方法が取られました。これにより、バインド解除を行うスレッドはusb_gadget_udc_reset()が安全に戻れるようになり、dum-callback_usageが減算されるまではdum-driverをクリアしなくなります。

Possible impacts 当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
Solution

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。

Publication Date May 8, 2026, midnight
Registration Date May 18, 2026, 11:28 a.m.
Last Update May 18, 2026, 11:28 a.m.
CVSS3.0 : 警告
Score 5.5
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Affected System
Linux
Linux Kernel 3.16.52 以上 3.17 未満
Linux Kernel 3.2.97 以上 3.3 未満
Linux Kernel 4.1.46 以上 4.2 未満
Linux Kernel 4.14 以上 5.10.253 未満
Linux Kernel 4.4.92 以上 4.5 未満
Linux Kernel 4.9.55 以上 4.10 未満
Linux Kernel 5.11 以上 5.15.203 未満
Linux Kernel 5.16 以上 6.1.168 未満
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
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年05月18日]
  掲載
May 18, 2026, 11:28 a.m.

NVD Vulnerability Information
CVE-2026-43327
Summary

In the Linux kernel, the following vulnerability has been resolved:

USB: dummy-hcd: Fix locking/synchronization error

Syzbot testing was able to provoke an addressing exception and crash
in the usb_gadget_udc_reset() routine in
drivers/usb/gadgets/udc/core.c, resulting from the fact that the
routine was called with a second ("driver") argument of NULL. The bad
caller was set_link_state() in dummy_hcd.c, and the problem arose
because of a race between a USB reset and driver unbind.

These sorts of races were not supposed to be possible; commit
7dbd8f4cabd9 ("USB: dummy-hcd: Fix erroneous synchronization change"),
along with a few followup commits, was written specifically to prevent
them. As it turns out, there are (at least) two errors remaining in
the code. Another patch will address the second error; this one is
concerned with the first.

The error responsible for the syzbot crash occurred because the
stop_activity() routine will sometimes drop and then re-acquire the
dum->lock spinlock. A call to stop_activity() occurs in
set_link_state() when handling an emulated USB reset, after the test
of dum->ints_enabled and before the increment of dum->callback_usage.
This allowed another thread (doing a driver unbind) to sneak in and
grab the spinlock, and then clear dum->ints_enabled and dum->driver.
Normally this other thread would have to wait for dum->callback_usage
to go down to 0 before it would clear dum->driver, but in this case it
didn't have to wait since dum->callback_usage had not yet been
incremented.

The fix is to increment dum->callback_usage _before_ calling
stop_activity() instead of after. Then the thread doing the unbind
will not clear dum->driver until after the call to
usb_gadget_udc_reset() safely returns and dum->callback_usage has been
decremented again.

Publication Date May 8, 2026, 11:16 p.m.
Registration Date May 9, 2026, 4:13 a.m.
Last Update May 12, 2026, 11:10 p.m.
Related information, measures and tools
Common Vulnerabilities List