CVE-2026-98467 in Linuxinformación

Resumen

por VulDB • 2026-10-18

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

KVM: arm64: nv: Corregir desreferencia a puntero nulo en nested wp/unmap y carrera de teardown (desmantelamiento)

El commit 7270cc9157f4 ("KVM: arm64: nv: Handle VNCR_EL2 invalidation from MMU notifiers") introdujo la invalidación de VNCR_EL2 tanto en kvm_nested_s2_unmap() como en kvm_nested_s2_wp().

Sin embargo, en el momento en que esto se realiza, un desmantelamiento concurrente (teardown) del stage 2 de una máquina virtual anidada puede hacer que kvm->arch.mmu.pgt sea establecido a NULL.

Esto ocurre en kvm_flush_shadow_all() -> kvm_arch_flush_shadow_all() -> kvm_free_stage2_pgd() y se ejecuta bajo el bloqueo kvm->mmu_lock.

El commit ec14c272408a ("KVM: arm64: nv: Unmap/flush shadow stage 2 page tables") introdujo el desmantelamiento de todo el rango MMU anidado, lo que luego invoca a stage2_apply_range() con resched=true:

mmu_notifier_invalidate_range_start() -> ... -> kvm_mmu_notifier_invalidate_range_start() -> kvm_mmu_unmap_gfn_range() -> kvm_unmap_gfn_range() -> kvm_nested_s2_unmap() -> kvm_stage2_unmap_range() -> __unmap_stage2_range() -> stage2_apply_range()

Esto significa que stage2_apply_range() puede liberar el bloqueo kvm->mmu_lock y, por lo tanto, se puede avanzar concurrentemente en paralelo con kvm_arch_flush_shadow_all().

Si kvm_arch_flush_shadow_all() avanza más allá de stage2_apply_range() y completa su operación, garantiza una desreferencia a puntero NULL.

Dado que kvm_free_stage2_pgd() se realiza bajo el bloqueo kvm->mmu_lock, esto será observado como NULL o no, y estará serializado frente a kvm_free_stage2_pgd().

Resolver el problema abstrayendo la invalidación en una nueva función, kvm_invalidate_vncr_ipa_all(), y verificar que pgt sea distinto de NULL antes de desreferenciarlo.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsable

Linux

Reservar

2026-09-25

Divulgación

2026-10-18

Moderación

aceptado

Artículo

VDB-422119

EPSS

0.00166

KEV

no

Actividades

muy bajo

Fuentes

Do you want to use VulDB in your project?

Use the official API to access entries easily!