概要
Linuxカーネルの仮想化基盤であるKVM(Kernel-based Virtual Machine)のshadow MMU(メモリ管理ユニット)に、約16年間にわたって潜んでいたuse-after-free脆弱性「Januscape」(CVE-2026-53359)が公表された。悪意あるゲストVMがホストのカーネルメモリを破壊し、ゲストからホストへのエスケープを引き起こせる深刻な問題で、IntelとAMDの両x86プラットフォームに影響する。多くのクラウド事業者がKVMを仮想化基盤として利用しているため、マルチテナント環境における潜在的な脅威として注目されている。
この脆弱性は研究者Hyunwoo Kim(@v4bel)によって発見され、Googleが運営するKVM向けバグバウンティプログラム「kvmCTF」にゼロデイとして提出された。Kimはこの2ヶ月の間に3件のLinuxカーネル脆弱性を公表しており、5月には「Dirty Frag」、6月にはARM64向けの「ITScape」を報告している。同時期には別のshadow MMU use-after-freeであるCVE-2026-46113も修正されており、KVMのメモリ管理まわりに複数の類似した問題が集中して見つかっている状況だ。
技術的な詳細
KVMは仮想マシンのメモリレイアウトを追跡するため、独自のシャドウページテーブルを管理している。Januscapeの根本原因は、同じメモリアドレスを共有する異なる種類のページを、KVMが正しく区別せずに再利用していたことにある。研究者の説明によれば「2つの異なるタイプが同じアドレスを共有できるが、まったく異なる機能を実行する」状況が発生し、これがuse-after-freeを引き起こしていた。
この脆弱性は2010年8月リリースのカーネル2.6.36から存在しており、2026年6月19日にメインラインへマージされたcommit 81ccda30b4e8で修正されるまで、実に16年近く見逃されていた。修正内容はkvm_mmu_get_child_sp()関数にrole.wordとgfnの両方をチェックする処理をわずか1行追加するというもので、根本原因の単純さに対して発見までの期間の長さが際立っている。
攻撃を成立させるには、ゲストVM内でのroot権限とネストされた仮想化(nested virtualization)の有効化が前提条件となる。公開されているPoCは読み込み可能なカーネルモジュールを用い、数秒から数分のレース条件によって確実にホストをパニックさせるところまでを実証する内容にとどまる。一方、非公開とされる完全なエクスプロイトでは、ホスト上でのroot権限によるコード実行が可能になり、同一物理マシン上で稼働する他のゲストVMへのアクセスにもつながるとされている。
対策とパッチ状況
修正パッチは2026年7月4日リリースの各安定版カーネルに反映されており、Linux 7.1.3、6.18.38、6.12.95、6.6.144、6.1.177、5.15.211、5.10.260が対応バージョンとなる。該当するカーネルを利用しているクラウド事業者やオンプレミス環境の管理者は、速やかなアップデートが推奨される。
即座に取れる緩和策としては、ネストされた仮想化を無効化すること(kvm_intel.nested=0またはkvm_amd.nested=0)が挙げられる。ネスト仮想化を利用しない環境であれば、この設定変更だけで攻撃経路を遮断できるため、パッチ適用までの一時的な対策として有効だ。