
KVM/x86 ゲストからホストへのエスケープエクスプロイト (CVE-2026-53359)。shadow MMUエミュレーションにおけるuse-after-freeを悪用。Intel/AMDアーキテクチャ上でホストカーネルパニックと完全なエスケープを誘発するPoCを含む。

このドキュメントは、Hyunwoo Kim (@v4bel) によって発見・報告された Januscape (CVE-2026-53359) 脆弱性について説明します。これはKVM/x86環境においてゲストからホストへの脱出を可能にするKVMエスケープ脆弱性です。公に知られている限り、これはIntelとAMDの両方でトリガー可能な初のゲスト-to-ホストエクスプロイト研究であり、単一アーキテクチャに限定されません。
JanuscapeはKVM/x86のシャドウMMUエミュレーションにおけるuse-after-free脆弱性です。ゲスト側の操作のみでバグをトリガーし、ホストカーネルのシャドウページを破壊することができ、信頼できないゲストを受け入れ、ネステッド仮想化を公開するKVM/x86ホスト、特にマルチテナントx86パブリッククラウド(GCP、AWSなど)のゲスト-ホスト分離を脅かす可能性があります。
実際、JanuscapeはGoogle kvmCTFで0-dayエクスプロイトとして使用されました。
詳細な技術情報はこちらを参照してください。
[!NOTE] この脆弱性を[email protected]に報告した後、合意されたエンバーゴが終了したため、エクスプロイトはoss-securityに投稿され、このJanuscapeドキュメントが公開されています。開示のタイムラインについては、技術詳細ドキュメントを参照してください。
ゲストVM内でPoCを実行すると、ホストカーネルパニックを引き起こす可能性があります。制御された環境で動作する完全なエスケープエクスプロイトも存在しますが、現時点ではリリースされておらず、非常に遠い将来にリリースされる予定です。
RHELなどのディストリビューションでは、/dev/kvmがワールド書き込み可能 () であるため、特権のないユーザーもこの脆弱性を信頼性の高いLPE(権限昇格)に利用してrootを取得できます。ただし、そうすることはゴミのために金を払うようなものなので、取り上げるつもりはありません。
0666# sudo apt-get install -y build-essential linux-headers-$(uname -r)
# make
[Intel]
# sudo rmmod kvm_intel; sudo insmod poc.ko
[AMD]
# sudo rmmod kvm_amd; sudo insmod poc.ko amd=1
[*] poc step 4/4: race live -- host DoS triggering
...
kernel BUG at arch/x86/kvm/mmu/mmu.c (pte_list_remove)
Comm: qemu-kvm
このPoCは正確な情報を提供することを目的としています。テストを許可されていないシステムでは使用しないでください。
Januscape (CVE-2026-53359) は、2032a93d66fa (2010-08-01) から 81ccda30b4e8 (2026-06-16) までの範囲をカバーします。
言い換えれば、この脆弱性は約「16年間」休眠状態にありました。
合計で2つの影響があります。
/dev/kvmがワールド書き込み可能 (0666) であるため、特権のないユーザーもこの脆弱性を信頼性の高いLPEとして使用してrootを取得できます。マルチテナントゲストを受け入れ、ネステッド仮想化をサポートするx86 KVMホストを運用している場合、またはその上のインスタンスを使用している場合は、ホストカーネルに81ccda30b4e8パッチが適用されていることを確認してください。
いいえ。この脆弱性はIntelおよびAMDアーキテクチャでのみトリガーされます。ただし、以前公開されたITScape (CVE-2026-46316)にまだパッチを適用していない場合、arm64ホストも脆弱なので、速やかにパッチを適用してください。
いいえ。一般的に公開されるQEMUエスケープ脆弱性とは異なり、Januscapeはカーネル内のKVMで発生するため、QEMUのエミュレーションとは独立してトリガーされます。このため、独自の仮想化スタックを実装・使用する大規模なパブリッククラウドも脅かす可能性があります。
はい。モジュールを挿入するにはゲストカーネルの権限が必要です。パブリッククラウドでインスタンスを割り当てられた場合、通常は自分のVM上でrootを持っているため、この条件は満たされます。ゲストルートがないシナリオでは、Dirty FragなどのLPEと連鎖させる必要があります。