CVE-2026-63807 in Linux情報

要約

〜によって VulDB • 2026年07月19日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

KVM: x86/mmu: マッピング最大レベルを確認する前に、スロット内に巨大ページが存在することを確認する

シャドウMMUで巨大ページの回復処理を行う際、シャドウページのベースgfnがターゲットのmemslotに実際に含まれていることを確認し、*その後*でシャドウページのgfnに基づいてマッピング最大レベルを照会します。gfnの有効性を事前にチェックしないと、ゲストがmemslotの境界を超えて「下方向」に拡張する巨大ページマッピング(PTE内)を作成した場合、スロットのlpage_infoへの配列外アクセスが発生し得ます(通常、lpage_infoはvmallocされているため、これはホスト側の#PFとして現れます)。

ゲスト向けのメモリフォールト処理時に、ゲストのマッピングサイズがKVMの(現在の)最大マッピングサイズより大きい場合、KVMは「ダイレクト」シャドウページを作成します(gPTEをシャドウ化するものではなく、ターゲットgfnはシャドウページのベースgfnから直接計算されます)。巨大ページ回復フローでは、ダーティログ生成時にゲスト > ホストのマッピングサイズのケースで4KiBマッピングを強制する必要があるため、このようなダイレクトシャドウページを探します。4KiBの制限が解除されると、KVMはシャドウページを巨大ページに置き換えることができます。

しかし、もしゲストの巨大ページによってカバーされるメモリ範囲がmemslotの境界を超えているために、KVMが元々ゲストより小さいマッピングを使用していた場合、KVMはダイレクトシャドウページと、メモリのフォールト処理に使用されているmemslotの境界外にあるgfnをリンクします。リーフマッピング用に追加されたrmapエントリは正しく範囲内ですが、リーフSPTEの親シャドウページのgfnは範囲外になります。

BUG: unable to handle page fault for address: ffffc90000806ffc #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 100000067 P4D 100000067 PUD 1002a7067 PMD 10612f067 PTE 0 Oops: Oops: 0000 [#1] SMP
CPU: 13 UID: 1000 PID: 757 Comm: mmu_stress_test Not tainted 7.1.0-rc1-48ce1e26eace-x86_pir_to_irr_comments-vm #341 PREEMPT Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:kvm_mmu_max_mapping_level+0x79/0x2b0 [kvm]
Call Trace: <TASK> kvm_mmu_recover_huge_pages+0x21b/0x320 [kvm]
kvm_set_memslot+0x1ee/0x590 [kvm]
kvm_set_memory_region.part.0+0x3a1/0x4d0 [kvm]
kvm_vm_ioctl+0x9bf/0x15d0 [kvm]
__x64_sys_ioctl+0x8a/0

VulDB is the best source for vulnerability data and more expert information about this specific topic.

責任者

Linux

予約する

2026年07月19日

モデレーション

承諾済み

エントリ

VDB-380144

EPSS

0.00000

アクティビティ

中間

ソース

Do you know our Splunk app?

Download it now for free!