LinuxのLinux Kernelにおける境界外書き込みに関する脆弱性
タイトル LinuxのLinux Kernelにおける境界外書き込みに関する脆弱性
概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。Bluetoothのhci_syncサブシステムにあるhci_le_big_create_sync関数内のスタックバッファオーバーフローの問題です。hci_le_big_create_sync()関数は、DEFINE_FLEXを使用してスタック上に0x11(17)個分のBISエントリを格納するstruct hci_cp_le_big_create_syncを割り当てています。しかし、conn-num_bisは最大HCI_MAX_ISO_BIS(31)個のエントリを保持可能であり、呼び出し元のhci_conn_big_create_sync()関数ではISO_MAX_NUM_BIS(0x1f)と照合されています。conn-num_bisが18から31の間の場合、conn-bisをcp-bisにコピーするmemcpyは、スタックバッファを最大14バイトも越えて書き込み、隣接するスタックメモリを破損します。この問題は簡単に再現可能であり、ISOソケットをbc_num_bis = ISO_MAX_NUM_BIS(31)でバインドし、listen()関数を呼び出すと、最終的にHCIコマンド同期ワーカーからhci_le_big_create_sync()がトリガーされ、KASANによって検出可能なスタック範囲外書き込みが発生します。バグの内容の例として、"BUG: KASAN: stack-out-of-bounds in hci_le_big_create_sync+0x256/0x3b0 Write of size 31 at addr ffffc90000487b48 by task kworker/u9:0/71"というエラーが報告されています。修正は、誤った0x11のDEFINE_FLEXのカウントを、conn-bisが実際に保持可能なBISエントリ最大数であるHCI_MAX_ISO_BISに変更することで行われました。

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

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

公表日 2026年5月1日0:00
登録日 2026年5月13日10:25
最終更新日 2026年5月13日10:25
CVSS3.0 : 重要
スコア 7.8
ベクター CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
影響を受けるシステム
Linux
Linux Kernel 6.11.11 以上 6.12 未満
Linux Kernel 6.12.2 以上 6.12.81 未満
Linux Kernel 6.13
Linux Kernel 6.13.1 以上 6.18.22 未満
Linux Kernel 6.19 以上 6.19.12 未満
Linux Kernel 7.0
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年05月13日]
  掲載
2026年5月13日10:25

NVD脆弱性情報
CVE-2026-31772
概要

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

Bluetooth: hci_sync: fix stack buffer overflow in hci_le_big_create_sync

hci_le_big_create_sync() uses DEFINE_FLEX to allocate a
struct hci_cp_le_big_create_sync on the stack with room for 0x11 (17)
BIS entries. However, conn->num_bis can hold up to HCI_MAX_ISO_BIS (31)
entries — validated against ISO_MAX_NUM_BIS (0x1f) in the caller
hci_conn_big_create_sync(). When conn->num_bis is between 18 and 31,
the memcpy that copies conn->bis into cp->bis writes up to 14 bytes
past the stack buffer, corrupting adjacent stack memory.

This is trivially reproducible: binding an ISO socket with
bc_num_bis = ISO_MAX_NUM_BIS (31) and calling listen() will
eventually trigger hci_le_big_create_sync() from the HCI command
sync worker, causing a KASAN-detectable stack-out-of-bounds write:

BUG: KASAN: stack-out-of-bounds in hci_le_big_create_sync+0x256/0x3b0
Write of size 31 at addr ffffc90000487b48 by task kworker/u9:0/71

Fix this by changing the DEFINE_FLEX count from the incorrect 0x11 to
HCI_MAX_ISO_BIS, which matches the maximum number of BIS entries that
conn->bis can actually carry.

公表日 2026年5月2日0:16
登録日 2026年5月2日4:07
最終更新日 2026年5月3日16:16
関連情報、対策とツール
共通脆弱性一覧