UBUNTU-CVE-2026-98467: Null Pointer Dereference
In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: nv: Fix null ptr deref on nested wp/unmap, teardown race Commit 7270cc9157f4 ("KVM: arm64: nv: Handle VNCREL2 invalidation from MMU notifiers") introduced VNCREL2 invalidation in both kvmnesteds2unmap() and kvmnesteds2wp(). However at the point of this being performed concurrent stage 2 teardown of a nested guest can cause kvm->arch.mmu.pgt to be set to NULL. This happens in kvmflushshadowall() -> kvmarchflushshadowall() -> kvmfreestage2pgd() and is performed under the kvm->mmulock. Commit ec14c272408a ("KVM: arm64: nv: Unmap/flush shadow stage 2 page tables") introduced the teardown of the entire nested MMU range, which then invokes stage2applyrange() with resched=true: mmunotifierinvalidaterangestart() -> ... -> kvmmmunotifierinvalidaterangestart() -> kvmmmuunmapgfnrange() -> kvmunmapgfnrange() -> kvmnesteds2unmap() -> kvmstage2unmaprange() -> unmapstage2range() -> stage2applyrange() This means that stage2applyrange() can drop the kvm->mmulock and thus concurrent progress can be made in lockstep with kvmarchflushshadowall(). If kvmarchflushshadowall() advances ahead of stage2applyrange() and completes its operation it guarantees a NULL pointer deref. Since kvmfreestage2pgd() is performed under the kvm->mmulock this will either be observed NULL or not and serialised against kvmfreestage2pgd(). Resolve the issue by abstracting the invalidation to a new function, kvminvalidatevncripaall(), and check that the pgt is non-NULL before dereferencing it.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1
Event History
Frequently Asked Questions
Which systems are most likely exposed to this issue?
The issue concerns arm64 KVM nested virtualization paths, specifically nested stage-2 write-protect and unmap handling. It is relevant to the listed Ubuntu kernel packages where nested guests are used.
What would an attacker need to trigger the problem?
The severity vector indicates local access and high privileges are required, with additional attack conditions present. Triggering the race involves nested stage-2 MMU invalidation or unmap activity occurring while a nested guest's stage-2 page tables are being torn down.
What is the likely impact if the race occurs?
A concurrent teardown can leave the stage-2 page-table pointer NULL while nested invalidation code uses it, causing a null-pointer dereference. The supplied severity vector rates availability impact as high and does not indicate confidentiality or integrity impact.