JVNDB-2026-032969 | |
LinuxのLinux Kernelにおける境界外読み取りに関する脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました。HID: multitouch: mt_io_flagsの範囲外ビットアクセスの修正について説明します。mt_io_flagsは単一のunsigned long型ですが、mt_process_slot()、mt_release_pending_palms()、およびmt_release_contacts()は、これをスロット番号でインデックス付けされたスロット単位のビットマップとして使用しています。そのスロット番号は、デバイスのContactCountMaximum機能レポートから取得され、最大255に達する可能性がありますが、td->maxcontactsによってのみ制限されており、BITS_PER_LONGによっては制限されていません。その結果、大きな接触数を報告するマルチタッチデバイスでは、set_bit()やclear_bit()がmt_io_flags変数の範囲を超えて操作を行い、構造体mt_deviceの隣接メンバーを破損させてしまいます。sticky-fingersのリリースタイマーがこの状態に到達する最も簡単な方法です。mt_release_contacts()は以下のループを実行します。 for (i = 0; i < mt->num_slots; i++) clear_bit(i, &td->mt_io_flags);ここでnum_slotsはmaxcontactsと同じ値です。maxcontactsがおよそ250の場合、このループはtd->applications.nextと重なるビットをクリアし、そのリストヘッドをゼロにしてしまいます。そして、直後のlist_for_each_entry()がNULLを逆参照し、タイマー(softirq)コンテキストでカーネルパニックが発生します。KASANビルドでは、mt_release_contacts()内で0x58オフセット(struct mt_applicationのnum_receivedのoffsetof)へのNULLポインタ逆参照が原因の一般保護違反として検出されます。この状態は、信頼されていないUSBまたはBluetoothのHIDマルチタッチデバイスから到達可能であり、ローカル権限は不要です。スロットごとの有効状態は、maxcontactsに合わせて別途割り当てられたビットマップに格納します。この方式はpending_palm_slotsに既に使用されているものと同じです。mt_io_flagsにはMT_IO_FLAGS_RUNNINGのみを保持します。また、2つの「mt_io_flags & MT_IO_SLOTS_MASK」による起動チェックは、bitmap_empty(td->active_slots, td->maxcontacts)に置き換えます。MT_IO_FLAGS_RUNNINGはビット0に戻しました。以前のコミットでスロットビット用に低バイトを残すためビット32に移動されていましたが、スロットビットが無くなったため再びビット0に収まり、32ビット環境のunsigned longの範囲内に収まります。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 8.8 (重要) [その他]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/07/25 |
| 登録日 | 2026/09/11 |
| 最終更新日 | 2026/09/11 |



