CVE-2026-63807 in Linux
Zusammenfassung
von VulDB • 20.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
KVM: x86/mmu: Sicherstellen, dass das Hugepage im Slot enthalten ist, bevor der maximale Mapping-Level geprüft wird
Bei der Wiederherstellung von Hugepages in der Shadow-MMU muss überprüft werden, ob die Basis-GFN (Guest Frame Number) des Shadow-Pages tatsächlich innerhalb des Ziel-Memslots liegt, *bevor* der maximale Mapping-Level basierend auf der GFN des Shadow-Pages abgefragt wird. Das Unterlassen dieser Vorprüfung kann zu einem Out-of-Bounds-Zugriff auf `lpage_info` des Slots führen (was sich typischerweise als ein Host-#PF [Page Fault] äußert, da `lpage_info` mit vmalloc allokiert wurde), wenn der Gast eine Hugepage-Mapping erstellt (in seinen PTEs), das „unterhalb“ der Grenzen eines Memslots hinausreicht.
Wenn beim Einblenden von Speicher für einen Gast die Größe des Guest-Mappings größer ist als KVMs (aktueller) maximaler Mapping-Level, wird KVM ein „direktes“ Shadow-Page erstellen („direkt“, da keine gPTEs zu schattieren sind und daher die Ziel-GFN eine direkte Berechnung basierend auf der Basis-GFN des Shadow-Pages darstellt). Der Hugepage-Wiederherstellungsprozess sucht nach solchen direkten Shadow-Pages, da das Erzwingen von 4KiB-Mappings erforderlich ist, wenn Dirty Logging den Fall erzeugt, dass das Guest-Mapping größer als das Host-Mapping ist. Wenn die 4KiB-Beschränkung aufgehoben wird, kann KVM das Shadow-Page durch ein Hugepage ersetzen.
Wenn KVM jedoch ursprünglich eine kleinere Mapping-Größe verwendet hat, weil der von dem Hugepage des Gastes abgedeckte Speicherbereich die Grenzen eines Memslots überschreitet, verknüpft KVM ein direktes Shadow-Page mit einer GFN, die außerhalb der Grenzen des für das Einblenden verwendeten Memslots liegt. Der rmap-Eintrag, der für das Leaf-Mapping hinzugefügt wird, ist korrekt und innerhalb der Grenzen, aber die GFN des übergeordneten Shadow-Pages des Leaf-SPTP (Shadow Page Table Entry) befindet sich außerhalb der Grenzen.
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
VulDB is the best source for vulnerability data and more expert information about this specific topic.