Description
In the Linux kernel, the following vulnerability has been resolved:

KVM: x86: Use active memslots for the per-vCPU MMIO cache

KVM tags the per-vCPU MMIO cache with a memslot generation so that a
memslot update invalidates cached MMIO information. Both the fill and
validation paths use kvm_memslots(), which unconditionally selects address
space 0, even when the vCPU is running in SMM and using address space 1.

Commit 56f17dd3fbc4 ("kvm: x86: fix stale mmio cache bug") added the
memslot generation to the cache key so that a memslot update could not
leave a stale entry valid. When commit 699023e23965 ("KVM: x86: add SMM
to the MMU role, support SMRAM address space") added the SMM address space,
these helpers were not converted to use the active memslots.

Consequently, an update to the SMM memslots can leave an entry from the old
SMM address space apparently valid after the vCPU returns to the normal
address space. A guest can then cause an access to valid RAM at the same
GFN to be returned to userspace as KVM_EXIT_MMIO.

Completing that exit through the VMM's RAM address space writes the backing
page without going through KVM's write-tracking path. If the page backs a
nested EPT table, KVM can continue using shadow translations derived from
the old contents. The WARN_ON_ONCE() in kvm_mmu_write_protect_fault()
catches this invalid cache and memslot combination.

Use the vCPU's active memslots when caching and validating the entry.
Memslot generations are unique across address spaces, so the generation
also distinguishes the normal and SMM views. This matches the MMIO SPTE
cache, which already uses kvm_vcpu_memslots().

On an unpatched current-mainline kernel, a regression test that fills the
cache in SMM and updates only the SMM memslots fails the intended RAM write
and triggers the kvm_mmu_write_protect_fault() warning. With this change,
the same test completes the RAM write without a warning. The x86/smm_test,
set_memory_region_test, and memslot_modification_stress_test selftests also
pass.
Published: 2026-10-23
Score: 8.8 High
EPSS: < 1% Very Low
KEV: No
Impact: Privilege Escalation
Action: Immediate Patch
AI Analysis

Impact

The flaw is in the Linux kernel’s KVM subsystem. The per‑vCPU MMIO cache was keyed only on the memslot generation and ignored whether the vCPU was executing in System Management Mode (SMM) or the normal address space. When the host updated the SMM memslots, the cache could still reference an entry from the old SMM view. A guest that accessed the same guest frame number again would then trigger a KVM_EXIT_MMIO and be allowed to write to a host memory page without passing through KVM’s write‑tracking path. If that page backed a nested EPT table, KVM would continue using stale shadow translations, possibly corrupting kernel memory. An attacker can therefore use a guest to overwrite arbitrary host memory and gain privileged execution.

Affected Systems

All Linux kernels that run KVM on x86 architecture are affected until the patch is applied. The vulnerability applies to any kernel version that contains the unpatched code referenced by commit 699023e23965 and earlier; no specific version range is given, so current-mainline kernels before the fix are considered vulnerable.

Risk and Exploitability

The EPSS score is <1% (approximately 0.2%) and the vulnerability is not listed in CISA’s KEV catalog, but the flaw provides a clear path for a guest to write to arbitrary host memory, which is a high‑impact ability. The CVSS severity score of 8.8 indicates high risk. Exploitation requires that the host updates SMM memslots, implying the attack must be performed from a guest VM that can trigger such changes. The risk level is therefore considered high because it gives a guest unrestricted memory write in the host environment, although practical exploitation may be constrained to environments that use SMM or nested virtualization.

Generated by OpenCVE AI on October 27, 2026 at 09:39 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the Linux kernel patch that implements the changes in commit 56f17dd3fbc4 and the subsequent SMM support commit 699023e23965, ensuring that the per‑vCPU MMIO cache uses the active memslots for both filling and validation paths.
  • Upgrade to a kernel version that includes the patch; current‑mainline kernels after the commit have the fix already incorporated.
  • If an immediate kernel upgrade is not possible, restrict guest VMs from using System Management Mode or disable SMM support in the host configuration, thereby preventing the stale memslot scenario from occurring.

Generated by OpenCVE AI on October 27, 2026 at 09:39 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 30 Oct 2026 13:00:00 +0000


Tue, 27 Oct 2026 04:30:00 +0000


Sat, 24 Oct 2026 17:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-787

Sat, 24 Oct 2026 14:15:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H'}


Sat, 24 Oct 2026 01:15:00 +0000

Type Values Removed Values Added
First Time appeared Linux linux
Vendors & Products Linux linux

Fri, 23 Oct 2026 17:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-787

Fri, 23 Oct 2026 13:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: KVM: x86: Use active memslots for the per-vCPU MMIO cache KVM tags the per-vCPU MMIO cache with a memslot generation so that a memslot update invalidates cached MMIO information. Both the fill and validation paths use kvm_memslots(), which unconditionally selects address space 0, even when the vCPU is running in SMM and using address space 1. Commit 56f17dd3fbc4 ("kvm: x86: fix stale mmio cache bug") added the memslot generation to the cache key so that a memslot update could not leave a stale entry valid. When commit 699023e23965 ("KVM: x86: add SMM to the MMU role, support SMRAM address space") added the SMM address space, these helpers were not converted to use the active memslots. Consequently, an update to the SMM memslots can leave an entry from the old SMM address space apparently valid after the vCPU returns to the normal address space. A guest can then cause an access to valid RAM at the same GFN to be returned to userspace as KVM_EXIT_MMIO. Completing that exit through the VMM's RAM address space writes the backing page without going through KVM's write-tracking path. If the page backs a nested EPT table, KVM can continue using shadow translations derived from the old contents. The WARN_ON_ONCE() in kvm_mmu_write_protect_fault() catches this invalid cache and memslot combination. Use the vCPU's active memslots when caching and validating the entry. Memslot generations are unique across address spaces, so the generation also distinguishes the normal and SMM views. This matches the MMIO SPTE cache, which already uses kvm_vcpu_memslots(). On an unpatched current-mainline kernel, a regression test that fills the cache in SMM and updates only the SMM memslots fails the intended RAM write and triggers the kvm_mmu_write_protect_fault() warning. With this change, the same test completes the RAM write without a warning. The x86/smm_test, set_memory_region_test, and memslot_modification_stress_test selftests also pass.
Title KVM: x86: Use active memslots for the per-vCPU MMIO cache
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-30T12:41:37.510Z

Reserved: 2026-09-25T10:25:14.390Z

Link: CVE-2026-99082

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-23T13:17:32.440

Modified: 2026-10-30T13:21:44.220

Link: CVE-2026-99082

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-23T00:00:00Z

Links: CVE-2026-99082 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-27T09:45:06Z

Weaknesses