JVNDB-2026-028280 | |
LinuxのLinux Kernelにおける不特定の脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました。Bluetooth: L2CAP: ecred_reconfigureにおいて、スタックポインタではなくパックされたPDUが送信される問題です。コミット1c08108f3014("Bluetooth: L2CAP: -Wflex-array-member-not-at-end警告を回避")では、l2cap_ecred_reconfigure()内のスタック上のリクエストPDUを明示的なパック構造体からDEFINE_RAW_FLEX()に変換しましたが、l2cap_send_cmd()へのサイズおよびソースポインタ引数の調整が行われていませんでした。具体的には以下の通りです。- 元のコード: struct { struct l2cap_ecred_reconf_req req; __le16 scid; } pdu;- 変更後コード: DEFINE_RAW_FLEX(struct l2cap_ecred_reconf_req, pdu, scid, 1);...l2cap_send_cmd(conn, chan->ident, L2CAP_ECRED_RECONF_REQ, sizeof(pdu), &pdu);DEFINE_RAW_FLEX()は無名共用体pdu_uの宣言と、それを指すローカルポインタpduの宣言に展開されるため、sizeof(pdu)は64ビット環境で構造体ポインタのサイズ(8バイト)、32ビット環境で4バイトとなり、本来の6バイト(mtu, mps, scid[1]の合計)にはなりません。また、&pduはリクエストペイロードのアドレスではなく、ローカルポインタのスタック上のアドレスを指します。l2cap_send_cmd()は(data, count)をl2cap_build_cmd()に渡し、さらにskb_put_data(skb, data, count)を呼び出します。そのため、L2CAP_ECRED_RECONFIGURE_REQパケット本体はカーネルスタック上の&pduからコピーされた8バイトを含み、そのバイト列はpduポインタの値と重なっており、カーネルスタック上のアドレスがペアリング済みBluetoothピアに漏洩します。本来送信されるべき(mtu, mps, scid)フィールドは全く送信されず、ピアはリクエストを不正として拒否し、このコミット以降ローカル側イニシエータのL2CAP_ECRED_RECONFIGURE機能は破損しました。同じコミット内の兄弟箇所l2cap_ecred_conn_req()は正しく変換されており(sizeof(*pdu) + len, pdu)、本問題はこの箇所のみの見逃しによるものです。修正内容は元の意味論を復元し、構造体の完全なサイズをstruct_size(pdu, scid, 1)で渡し、pduポインタ(構造体のアドレス)を送信元として渡しています。実際の呼び出し経路にて、7.0ベースの標準ホストカーネル上で検証済みです。BT_CONNECTED状態のL2CAP_MODE_EXT_FLOWCTLソケットにsetsockopt(SOL_BLUETOOTH, BT_RCVMTU, ...)を行うと、元の問題では6バイトのはずのL2CAP_ECRED_RECONFIGURE_REQの本体が8バイト(スタック上のpduローカル変数の値)となっていました。ホスト上の新規ソケットと新規HCIエミュレータピアによる3回のキャプチャでは、低バイトは呼び出し毎に変化し、高バイトは0xffffで、これはカーネル仮想アドレス(KASLRでランダム化されたスタックスロットであり固定文字列ではありません)を示しています。RECONF_REQ body (ident=0x02 len=8): 42 fb 54 af 0e ca ff ffRECONF_REQ body (ident=0x02 len=8): 52 3d 2e af 0e ca ff ffRECONF_REQ body (ident=0x02 len=8): b2 fc 5b af 0e ca ff ffこのパッチ適用後は期待通りの6バイトとなり、リトルエンディアンで(mtu, mps, scid)を正しく運搬します。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 5.5 (警告) [NVD値]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/07/19 |
| 登録日 | 2026/08/17 |
| 最終更新日 | 2026/08/17 |



