【活用ガイド】

JVNDB-2026-013219

LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。KVMのx86に関して、MMIOフラグメントのスクラッチフィールドを使用して小さな書き込み値を保持します。エミュレートされたMMIO書き込みサービスがユーザースペースに戻る際、データペイロードのサイズが8バイト以下(つまり単一のチャンクに収まる場合)は、フラグメントを直接ソース値に指すのではなく、MMIOフラグメントのスクラッチフィールドに書き込み予定の値をコピーします。これにより、エミュレータがスタック上のローカル変数をソースとして書き込みを開始し、書き込みがページ境界をまたぎ、かつ両方のページがMMIOページである場合に発生するuse-after-freeバグの一種が修正されます。KVMのABIは物理的に連続したMMIOリクエストのみを許可するため、MMIOページをまたぐアクセスは2つのフラグメントに分割され、ユーザースペースに一度に1つずつ送信されます。KVMは最初のフラグメントの後にKVM_RUN応答でユーザースペースMMIOを完了しようとすると、2つ目のフラグメントを検出して2回目のユーザースペース退出を生成し、スタック上の変数を参照します。この問題は、2回目のKVM_RUNが別のタスクによって実行された場合に最も顕著で、その場合は開始したタスクのスタックが実際に解放されたデータとして現れます。バグはKASANのuse-after-freeエラーで検出され、具体的なスタックトレースが示されます。このバグはKVM-Unit-Testでも再現可能で、complete_emulated_mmio()内で大きなスタック変数をゴミ値で上書きするようKVMを改変して再現されます。スクラッチフィールドの使用は8バイト以下の書き込みに限定され、より大きなアクセスや読み取りはエミュレータの実装詳細に影響を与えません。将来的な変更に備えて整合性チェックも追加されています。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 8.8 (重要) [その他]
  • 攻撃元区分: ローカル
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 低
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更あり
  • 機密性への影響(C): 高
  • 完全性への影響(I): 高
  • 可用性への影響(A): 高
影響を受けるシステム


Linux
  • Linux Kernel 3.5 以上 6.6.136 未満
  • Linux Kernel 6.13 以上 6.18.24 未満
  • Linux Kernel 6.19 以上 6.19.14 未満
  • Linux Kernel 6.7 以上 6.12.83 未満
  • Linux Kernel 7.0 以上 7.0.1 未満

想定される影響

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

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

CWEによる脆弱性タイプ一覧  CWEとは?

  1. 解放済みメモリの使用(CWE-416) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-31588
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-31588
  2. 関連文書 : KVM: x86: Use scratch field in MMIO fragment to hold small write values - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/22d2ff69d487a32a8b88f9c970120fc2daa08a77)
  3. 関連文書 : KVM: x86: Use scratch field in MMIO fragment to hold small write values - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/b5a02d37eb0739f462fa12df449ab9b3480c783b)
  4. 関連文書 : KVM: x86: Use scratch field in MMIO fragment to hold small write values - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/2b83d91e9ae92fe1258d7040a32430bbb3bb7d6e)
  5. 関連文書 : KVM: x86: Use scratch field in MMIO fragment to hold small write values - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/3a7b6d75c8f85b09dea893f64a85a356bcf6c3fe)
  6. 関連文書 : KVM: x86: Use scratch field in MMIO fragment to hold small write values - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/0b16e69d17d8c35c5c9d5918bf596c75a44655d3)
  7. 関連文書 : KVM: x86: Use scratch field in MMIO fragment to hold small write values - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/dc6a6c3db3a4eca7e747cfc46e22c08d016c68f7)
更新履歴

  • [2026年04月30日]
      掲載