
CVE-2026-64561 の PoC エクスプロイト。KVM/x86 シャドウ MMU の use-after-free(解放後使用)脆弱性であり、ゲストからホストへの脱出を可能にし、ホスト上でカーネルルート権限によるコード実行を実現します。

この文書は、Hyunwoo Kim (@v4bel) によって発見され、報告された Zapscape (CVE-2026-64561) 脆弱性について説明します。これは KVM/x86 環境において、ゲストがホストへエスケープし、カーネル (root) 権限でホスト上でコマンドを実行できるようにする KVM エスケープ脆弱性です。
Zapscape は、KVM/x86 のシャドウ MMU エミュレーション、特にシャドウページが回収されるときに実行される再帰的な zap パスにおける use-after-free 脆弱性です。ゲスト側の操作だけでバグをトリガーしてホストカーネルのシャドウページを破壊でき、信頼できないゲストを受け入れてネストされた仮想化を公開している KVM/x86 ホスト、特にマルチテナント x86 パブリッククラウドのゲストとホストの分離を脅かす可能性があります。
詳細な技術情報については、こちら を参照してください。
[!NOTE] この脆弱性を [email protected] に報告した後、合意されたエンバーゴが終了したため、エクスプロイトは oss-security に投稿され、この Zapscape 文書が公開されました。開示のタイムラインについては、技術詳細文書を参照してください。
PoC は AMD をターゲットとして書かれており、安全なテストのためには QEMU TCG 上での実行が推奨されます。PoC は以下の構造になっています。
L0: Linux 7.1.3 + KVM_AMD on an x86_64 CPU (AMD SVM/NPT) emulated by QEMU TCG. The escape target
└─ L1: the guest poc creates. Switching long -> PAE aliases one shadow page as both child and pinned root, and L1 then escalates the UAF into L0 kernel code-exec
└─ L2: the guest L1 VMRUNs. Its memory touches trigger L0's quota reclaim -> recursive zap with no root_count guard -> UAF
この PoC は、クラウド環境ですぐに実行できる武器化されたエクスプロイトではなく、QEMU TCG 上で脆弱性と完全なエクスプロイトチェーンを再現するデモンストレーションコードです。実際のクラウド環境で使用するには、PoC が実行する L1 の操作をゲストカーネルモジュールに移し、エクスプロイトをホストカーネルの kconfig に合わせて移植する必要があります。これは難しい作業ではありません。
# gcc -O2 -g -static -pthread poc.c -o poc
# ./qemu.sh bzImage initramfs.cpio.gz
/$$$$$$$$ /$$$$$$ /$$$$$$$
|_____ $$ /$$__ $$| $$__ $$
/$$/ | $$ \ $$| $$ \ $$
/$$/ | $$$$$$$$| $$$$$$$/
/$$/ | $$__ $$| $$____/
/$$/ | $$ | $$| $$
/$$$$$$$$| $$ | $$| $$
|________/|__/ |__/|__/
[+] /Zapscape created by the target KVM host kernel (owner uid=0, mode=0644).
[+] exploit completed - verify with: ls -la /Zapscape
zapscape(uid=65534)$ ls -la /Zapscape
-rw-r--r-- 1 root root 0 Jul 29 05:27 /Zapscape
zapscape(uid=65534)$
この PoC は正確な情報を提供することを目的としています。テストを許可されていないシステムでは使用しないでください。
Zapscape (CVE-2026-64561) は、f95eec9bed76 (2020-07-08) から 2abd5287f083 (2026-07-21) までの範囲に影響します。
Januscape (CVE-2026-53359) と同じです:
/dev/kvm がワールドライタブル (0666) であるため、非特権ユーザーもこの脆弱性を LPE として使用して root を獲得できます。LPE として使用する場合、ホスト側の VMM ioctl が利用できるため、エクスプロイトはより簡単で安定したものになります。同じシャドウ MMU で発生しますが、根本原因が異なる別の脆弱性です。
とはいえ、Januscape とは異なり、Intel では EPT ページウォーク長 4 と 5 の両方が L1 に公開されている場合にのみトリガーできます。これは影響範囲を評価する際に重要な点なので、正確に理解する必要があります。技術詳細文書を参照してください。
いいえ。Januscape と同様に、カーネル内の KVM で発生するため、QEMU のエミュレーションとは無関係にトリガーされます。このため、独自の仮想化スタックを実装して使用している大規模なパブリッククラウドも脅かす可能性があります。
はい。L1 カーネル権限が必要です。パブリッククラウドでインスタンスが割り当てられると、通常は自分の VM で root を持っているため、この条件は満たされます。ゲスト root がないシナリオでは、Dirty Frag などの LPE とチェーンする必要があります。
はい。ホストハイパーバイザーに対する持続可能なパッチ適用プロセスを確立することをお勧めします。冬は来たる。
そうならないことを願っています。