製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおける不特定の脆弱性
Title LinuxのLinux Kernelにおける不特定の脆弱性
Summary

Linuxカーネルにおいて、以下の脆弱性が修正されました。Bluetoothのhci_eventに関して、ウェイク理由の格納を検証済みイベントハンドラ内へ移動しました。hci_store_wake_reason()はHCIイベントヘッダの除去直後にhci_event_packet()から呼び出されますが、hci_event_func()がhci_ev_tableに基づくイベントごとの最小ペイロード長を強制する前に呼ばれます。このため、短いHCIイベントフレームが境界チェック前にbacpy()へ到達する可能性がありました。skb解析やイベントごとの長さチェックをhci_store_wake_reason()内で重複して行う代わりに、既存のイベント長検証後に各イベントハンドラ内でウェイクアドレスの格納を行うように変更しました。hci_store_wake_reason()は、hci_dev_lock()を保持している呼び出し側から既に検証済みのbdaddrを格納するだけの小さなヘルパー関数に変換しています。また、検証済みイベントハンドラがウェイクアドレスを記録しなかった場合の既存の予期しないウェイクのフォールバック動作を維持するために、hci_event_func()後にNULLアドレスで同じヘルパーを使用します。ヘルパー関数には__must_hold(&hdev-lock)注釈を付け、将来的な呼び出しパスでロック契約が明示されるようlockdep_assert_held(&hdev-lock)を追加しています。hci_conn_request_evt()、hci_conn_complete_evt()、hci_sync_conn_complete_evt()、le_conn_complete_evt()、hci_le_adv_report_evt()、hci_le_ext_adv_report_evt()、hci_le_direct_adv_report_evt()、hci_le_pa_sync_established_evt()、およびhci_le_past_received_evt()からこのヘルパーを呼び出します。

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

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

Publication Date May 1, 2026, midnight
Registration Date May 13, 2026, 10:25 a.m.
Last Update May 13, 2026, 10:25 a.m.
CVSS3.0 : 重要
Score 8.1
Vector CVSS:3.0/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
Affected System
Linux
Linux Kernel 5.10 以上 6.19.12 未満
Linux Kernel 7.0
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年05月13日]
  掲載
May 13, 2026, 10:25 a.m.

NVD Vulnerability Information
CVE-2026-31771
Summary

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

Bluetooth: hci_event: move wake reason storage into validated event handlers

hci_store_wake_reason() is called from hci_event_packet() immediately
after stripping the HCI event header but before hci_event_func()
enforces the per-event minimum payload length from hci_ev_table.
This means a short HCI event frame can reach bacpy() before any bounds
check runs.

Rather than duplicating skb parsing and per-event length checks inside
hci_store_wake_reason(), move wake-address storage into the individual
event handlers after their existing event-length validation has
succeeded. Convert hci_store_wake_reason() into a small helper that only
stores an already-validated bdaddr while the caller holds hci_dev_lock().
Use the same helper after hci_event_func() with a NULL address to
preserve the existing unexpected-wake fallback semantics when no
validated event handler records a wake address.

Annotate the helper with __must_hold(&hdev->lock) and add
lockdep_assert_held(&hdev->lock) so future call paths keep the lock
contract explicit.

Call the helper from hci_conn_request_evt(), hci_conn_complete_evt(),
hci_sync_conn_complete_evt(), le_conn_complete_evt(),
hci_le_adv_report_evt(), hci_le_ext_adv_report_evt(),
hci_le_direct_adv_report_evt(), hci_le_pa_sync_established_evt(), and
hci_le_past_received_evt().

Publication Date May 2, 2026, 12:16 a.m.
Registration Date May 2, 2026, 4:07 a.m.
Last Update May 3, 2026, 4:16 p.m.
Related information, measures and tools
Common Vulnerabilities List