CVE-2026-63807 in Linuxinformazioni

Riassunto

di VulDB • 19/07/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

KVM: x86/mmu: Assicurarsi che l'hugepage sia contenuta nel memslot prima di verificare il livello massimo di mappatura

Durante il recupero delle hugepage nella shadow MMU, verificare che il gfn base della pagina ombra (shadow page) sia effettivamente contenuto all'interno del target memslot, *prima* di interrogare il livello massimo di mappatura in base al gfn della pagina ombra. La mancata verifica preliminare della validità del gfn può portare a un accesso out-of-bounds verso larray `lpage_info` del memslot (che si manifesta tipicamente come un #PF dell'host, poiché `lpage_info` è allocato tramite vmalloc) se il guest crea una mappatura hugepage (nelle sue PTE) che si estende "al di sotto" dei limiti di un memslot.

Quando viene gestito un fault per l'inserimento in memoria di un guest e la dimensione della mappatura del guest è maggiore della massima mappatura supportata da KVM (attuale), KVM creerà una pagina ombra "diretta" (definita tale perché non ci sono gPTE da ombreggiare, quindi il target gfn è calcolato direttamente a partire dal gfn base della pagina ombra). Il flusso di recupero delle hugepage cerca tali pagine ombra dirette, poiché la forzatura delle mappature 4KiB quando il dirty logging genera un caso in cui la dimensione della mappatura del guest supera quella dell'host. Quando viene rimossa la restrizione dei 4KiB, KVM può sostituire la pagina ombra con una hugepage.

Tuttavia, se KVM ha originariamente utilizzato una mappatura più piccola rispetto a quella del guest perché lintervallo di memoria coperto dalla hugepage del guest supera i limiti di un memslot, allora KVM collegherà una pagina ombra diretta con un gfn che si trova al di fuori dei limiti del memslot utilizzato per gestire il fault. Lentry rmap aggiunta per la mappatura foglia (leaf mapping) è corretta e allinterno dei limiti, ma il gfn della pagina ombra genitore dellSPTE foglia sarà out-of-bounds.

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/0x

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

Responsabile

Linux

Prenotare

19/07/2026

Divulgazione

19/07/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

medio

Fonti

Do you want to use VulDB in your project?

Use the official API to access entries easily!