

このドキュメントは、Hyunwoo Kim (@v4bel) によって報告され、パッチが当てられた ITScape (CVE-2026-46316) 脆弱性について説明します。これは、KVM/arm64環境においてゲストがホストへ脱出し、ホスト上でカーネル(root)権限でコマンドを実行できるようにするKVM脱出の脆弱性です。公知の限りでは、これはKVM/arm64を対象とした初のゲストからホストへの脱出エクスプロイト研究です。
ITScapeは、KVM/arm64の**vGIC-ITS (Interrupt Translation Service)**エミュレーションにおける競合状態を悪用します。ゲスト側の操作だけを使ってバグを引き起こし、ホストへ脱出します。また、信頼できないゲストを受け入れるKVM/arm64ホスト、特にマルチテナントのarm64パブリッククラウドのゲストとホストの分離を脅かす可能性があります。
一般に公開されているQEMUエスケープとは異なり、このバグはQEMUユーザースペースではなくカーネル内のKVMに存在します。そのため、QEMUのエミュレーションとは無関係に動作し、ユーザープロセス(QEMUなど)の権限ではなく、ホストカーネル権限でホスト上でコマンドを実行できます。
詳細な技術情報については、こちらを参照してください。
[!NOTE] この脆弱性を[email protected]に報告した後、合意されたエンバーゴが終了したため、このITScapeドキュメントを公開しました。開示のタイムラインについては、技術詳細ドキュメントを参照してください。
安全なテストのため、QEMU TCG環境でPoCを実行することを推奨します。(この脆弱性のトリガーはQEMUとは無関係です。)QEMU TCGで実行すると、PoCは次のような構成になります。
QEMU TCG: emulates an arm64 CPU (including EL2) so an arm64 kernel runs as the KVM host
└─ arm64 Host Kernel: the KVM host and the escape target
└─ poc: opens the HOST's /dev/kvm and creates one guest VM "G" (uid=1000)
└─ 1. G's guest code (run by poc via KVM_RUN) performs GIC/ITS MMIO
2. traps into the HOST's in-kernel KVM -> double-put -> HOST kernel code-exec
このPoCは、arm64クラウド環境ですぐに実行できる完全に武器化されたエクスプロイトではなく、kvm selftest上で脆弱性と完全なエクスプロイトチェーンを再現するデモコードです。対象クラウドの仮想化スタック実装を知っている攻撃者は、武器化への移行自体は難しくないと見込まれますが、それにはselftestのホスト側での直接構築を実際のゲスト駆動パスに移植し、アドレス、ガジェット、オフセット、レースタイミングなどを対象カーネルのバージョンと構成に合わせて調整する必要があります。実際に武器化された実世界のエクスプロイトは存在しますが、公開されていません。
# ./build.sh <linux>/tools/testing/selftests/kvm
# ./qemu.sh <kernel-image> <initramfs>
# ./poc
...
[+] /ITScape created by the host kernel (owner uid=0). verify: ls -la /ITScape
# ls -la /ITScape
-rw-r--r-- 1 0 0 0 Jun 9 00:02 /ITScape
このPoCは正確な情報を提供することを目的としています。テストを許可されていないシステムでは使用しないでください。
ITScape (CVE-2026-46316) は、8201d1028caa (2024-04-25) から 13031fb6b835 (2026-06-05) までの範囲をカバーします。
マルチテナントのゲストを受け入れるarm64 KVMホストを運用している場合、またはその上でインスタンスを利用している場合は、ホストカーネルに13031fb6b835パッチが適用されていることを確認してください(運用者は直接、テナントはプロバイダーを通じて確認します)。また、これは新しい脆弱性クラスであるため、さらなる亜種や後続の脆弱性が予想されるので、警戒を怠らないでください。とはいえ、後続の脆弱性が本当にホスト側の操作なしでゲスト側の操作だけでトリガー可能であるか、実際に悪用可能であるかを見極める必要があります。
いいえ。この脆弱性はarch/arm64/kvm/vgic/にあります。arm64 KVMホストを使用していない場合、この脆弱性について心配する必要はありません。
はい。GIC/ITS MMIOを操作するには、ゲストカーネル(EL1)権限が必要です。パブリッククラウドでインスタンスを割り当てられた場合、通常は自分のVM上でroot権限を持っているため、この条件は満たされます。ゲストrootがないシナリオでは、Dirty Frag などのLPEと連鎖させる必要があります。