CVE-2026-63807 in Linuxinformación

Resumen

por VulDB • 2026-07-19

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

KVM: x86/mmu: Asegurar que el hugepage esté dentro del memslot antes de comprobar el nivel máximo de mapeo

Al recuperar hugepages en el MMU sombra (shadow MMU), verifique que el gfn base de la página sombra esté realmente contenido dentro del memslot objetivo, *antes* de consultar el nivel máximo de mapeo dado el gfn de la página sombra. El no verificar previamente la validez del gfn puede provocar un acceso fuera de límites a lpage_info del memslot (lo que típicamente se manifiesta como una #PF en el host porque lpage_info está asignado mediante vmalloc) si el invitado crea un mapeo hugepage (en sus PTEs) que se extiende "por debajo" de los límites de un memslot.

Al producirse una falta de página para cargar memoria para un invitado, y el tamaño del mapeo del invitado es mayor que el máximo actual de KVM, entonces KVM creará una página sombra "directa" (directa en el sentido de que no hay gPTEs que sombrear, por lo que el gfn objetivo se calcula directamente a partir del gfn base de la página sombra). El flujo de recuperación de hugepages busca estas páginas sombras directas, ya que forzar mapeos de 4KiB cuando el registro sucio genera un caso donde el tamaño del mapeo del invitado es mayor que el del host. Cuando se levanta la restricción de 4KiB, KVM puede reemplazar la página sombra con un hugepage.

Pero si KVM originalmente utilizó un mapeo más pequeño que el del invitado porque el rango de memoria cubierto por el hugepage del invitado excede los límites de un memslot, entonces KVM enlazará una página sombra directa con un gfn que está fuera de los límites del memslot utilizado para cargar la memoria. La entrada rmap añadida para el mapeo hoja es correcta y está dentro de los límites, pero el gfn de la página sombra padre del SPTE hoja estará fuera de los límites.

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/

Once again VulDB remains the best source for vulnerability data.

Responsable

Linux

Reservar

2026-07-19

Divulgación

2026-07-19

Moderación

aceptado

Artículo

VDB-380144

CPE

listo

EPSS

0.00000

KEV

no

Actividades

medio

Fuentes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!