CVE-2026-23401 Overview
A vulnerability has been identified in the Linux kernel's KVM (Kernel-based Virtual Machine) x86 MMU (Memory Management Unit) subsystem related to improper handling of Shadow Page Table Entries (SPTEs). The flaw occurs when installing an emulated MMIO SPTE without first dropping or zapping the existing shadow-present SPTE, leading to potential system instability and kernel warnings.
Critical Impact
This vulnerability can cause kernel warnings and potential system instability when host userspace modifies a shadowed guest Page Table Entry (gPTE) to switch from a memslot to emulated MMIO, followed by a guest page fault.
Affected Products
- Linux Kernel (KVM x86/mmu subsystem)
- Systems running KVM with Intel VMX/EPT enabled
- QEMU/KVM virtualization environments
Discovery Timeline
- 2026-04-01 - CVE CVE-2026-23401 published to NVD
- 2026-04-02 - Last updated in NVD database
Technical Details for CVE-2026-23401
Vulnerability Analysis
The vulnerability exists in the KVM x86 MMU code responsible for managing Shadow Page Table Entries (SPTEs). When KVM installs an emulated MMIO SPTE, it should first drop or zap any existing shadow-present SPTE. However, the current implementation fails to account for scenarios where host userspace modifies guest memory outside the scope of KVM operations.
Specifically, while commit a54aa15c6bda3 correctly identified that converting a shadow-present SPTE to an MMIO SPTE due to a guest write was impossible, it did not consider cases where host userspace directly modifies a shadowed guest Page Table Entry (gPTE). When the host switches a gPTE from a memslot to emulated MMIO and the guest subsequently triggers a page fault, KVM attempts to install the MMIO SPTE without properly zapping the existing shadow-present SPTE first.
This triggers a kernel warning at mark_mmio_spte+0xb2/0xc0 in the KVM module, specifically checking is_shadow_present_pte(*sptep), indicating an inconsistent SPTE state.
Root Cause
The root cause is incomplete state management in the KVM MMU code when transitioning SPTEs from shadow-present to MMIO type. The code path in mmu_set_spte calls mark_mmio_spte without first validating and clearing any pre-existing shadow-present SPTE. This oversight stems from an assumption that such transitions could only occur through guest-initiated operations, ignoring legitimate host userspace modifications to guest memory mappings.
Attack Vector
The vulnerability can be triggered through the following sequence:
- Host userspace establishes a KVM guest with EPT (Extended Page Tables) enabled
- A guest page is mapped through a normal memslot with a shadow-present SPTE
- Host userspace modifies the shadowed gPTE to redirect from the memslot to emulated MMIO
- The guest triggers a page fault on the affected address
- KVM attempts to install an MMIO SPTE over the existing shadow-present SPTE
- The kernel triggers a warning due to the inconsistent SPTE state
The call trace demonstrates the fault path through ept_page_fault → mmu_set_spte → mark_mmio_spte, where the assertion is_shadow_present_pte(*sptep) fails, indicating an unexpected pre-existing shadow-present SPTE.
Detection Methods for CVE-2026-23401
Indicators of Compromise
- Kernel warning messages containing is_shadow_present_pte(*sptep) assertions
- Warnings originating from mark_mmio_spte function in the KVM module
- Call traces showing ept_page_fault → mmu_set_spte → mark_mmio_spte sequence
- KVM module errors in systems running virtualized workloads with EPT enabled
Detection Strategies
- Monitor kernel logs (dmesg, /var/log/kern.log) for KVM-related warnings and assertions
- Implement audit rules for KVM ioctl operations, particularly kvm_vcpu_ioctl
- Deploy runtime kernel integrity monitoring to detect abnormal KVM behavior
- Use SentinelOne's kernel-level monitoring capabilities to track KVM subsystem anomalies
Monitoring Recommendations
- Enable verbose KVM logging to capture SPTE transition events
- Configure alerting for kernel warnings containing kvm or kvm_intel module references
- Monitor virtual machine stability metrics for unexpected guest faults or exits
- Implement continuous monitoring of /sys/kernel/debug/kvm/ statistics for anomalies
How to Mitigate CVE-2026-23401
Immediate Actions Required
- Update the Linux kernel to a patched version containing the fix
- Review and restrict host userspace access to guest memory mappings where possible
- Monitor KVM-enabled systems for warning messages indicating exploitation attempts
- Consider temporarily disabling affected virtualization features in high-security environments until patched
Patch Information
The vulnerability has been resolved in the Linux kernel through multiple commits that ensure the existing shadow-present SPTE is properly dropped/zapped before installing an MMIO SPTE. The fix modifies the SPTE installation logic in mmu_set_spte to perform the zap operation prior to calling mark_mmio_spte.
Patch commits are available from the kernel.org stable tree:
- Kernel Git Commit 459158151a15
- Kernel Git Commit 695320de6ead
- Kernel Git Commit aad885e77496
- Kernel Git Commit bce7fe59d435
- Kernel Git Commit fd28c5618699
Workarounds
- Limit host userspace operations that modify guest Page Table Entries during active VM execution
- Implement strict access controls on QEMU/KVM management interfaces
- Use kernel live patching solutions to apply the fix without system restart where supported
- Deploy SentinelOne endpoint protection to monitor for kernel-level anomalies and potential exploitation
# Check current kernel version and KVM module status
uname -r
lsmod | grep kvm
# Verify kernel is updated to patched version
# Update kernel through your distribution's package manager
# For Debian/Ubuntu:
sudo apt update && sudo apt upgrade linux-image-$(uname -r)
# For RHEL/CentOS:
sudo yum update kernel
# Restart system to apply kernel updates
sudo reboot
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


