{"id":41189,"date":"2026-10-19T00:32:31","date_gmt":"2026-10-18T16:32:31","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98717"},"modified":"2026-10-19T00:32:31","modified_gmt":"2026-10-18T16:32:31","slug":"cve-2026-98717","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98717","title":{"rendered":"CVE-2026-98717 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: x86\/mmu: Bail fr"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>KVM: x86\/mmu: Bail from shadow walks if the root is invalid or a dummy<\/p>\n<p>When walking shadow page tables, immediately terminate the walk if the root<br \/>\nis a &#8220;dummy&#8221; root, i.e. a root whose top-level page table is backed by the<br \/>\nzero page, but otherwise doesn&#8217;t exist.  If memslot creation races with a<br \/>\nstage-2 page fault (EPT violation or #NPF) from L2, then if the stars align,<br \/>\nKVM will attempt to walk shadow page tables using the zero page and hit a<br \/>\nNULL pointer deref.<\/p>\n<p>  BUG: kernel NULL pointer dereference, address: 0000000000000021<br \/>\n  #PF: supervisor read access in kernel mode<br \/>\n  #PF: error_code(0x0000) &#8211; not-present page<br \/>\n  PGD 0 P4D 0<br \/>\n  Oops: Oops: 0000 [#1] SMP<br \/>\n  CPU: 30 UID: 1000 PID: 941 Comm: qemu Not tainted 7.2.0-rc2-1b731e5ded48-next-vm #1741 PREEMPTLAZY<br \/>\n  Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02\/06\/2015<br \/>\n  RIP: 0010:__kvm_mmu_invalidate_addr+0xea\/0x210 [kvm]<br \/>\n  Call Trace:<\/p>\n<p>   kvm_mmu_invalidate_addr+0x92\/0xe0 [kvm]<br \/>\n   __kvm_inject_emulated_page_fault+0x67\/0x80 [kvm]<br \/>\n   ept_page_fault+0x160\/0x850 [kvm]<br \/>\n   kvm_mmu_do_page_fault+0x102\/0x1f0 [kvm]<br \/>\n   kvm_mmu_page_fault+0x8e\/0x6b0 [kvm]<br \/>\n   vmx_handle_exit+0x163\/0x640 [kvm_intel]<br \/>\n   kvm_arch_vcpu_ioctl_run+0x960\/0x2120 [kvm]<br \/>\n   kvm_vcpu_ioctl+0x2c7\/0x970 [kvm]<br \/>\n   __x64_sys_ioctl+0x90\/0xd0<br \/>\n   do_syscall_64+0x67\/0x5f0<br \/>\n   entry_SYSCALL_64_after_hwframe+0x4b\/0x53<br \/>\n  RIP: 0033:0x7f606d0b53bb<\/p>\n<p>Opportunistically harden the shadow walks against fully invalid roots, but<br \/>\nWARN, as all callers are expected\/required to pre-check for a valid root.<br \/>\nDon&#8217;t WARN in the dummy root case as the whole point of using a dummy root<br \/>\nis to provide a root that&#8217;s valid enough to enter the guest, i.e. it should<br \/>\nJust Work for all flows except those that *need* to know about dummy roots.<\/p>\n<p>Alternatively, KVM could allocate a dedicated page and associated shadow<br \/>\npage structure for the dummy root, which is very tempting as it such an<br \/>\napproach should be more resilient against unexpected behavior.  But that<br \/>\nwould be a much larger and thus riskier change than simply terminating<br \/>\nwalks of dummy roots.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>KVM: x86\/mmu: Bail from shadow walks if the root is invalid or a dummy<\/p>\n<p>When walking shadow page tables, immediately terminate the <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41189","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=41189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}