Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-46071

CVE-2026-46071: Linux Kernel KVM Privilege Escalation Flaw

CVE-2026-46071 is a privilege escalation vulnerability in the Linux kernel's KVM nSVM component that affects VMCB_LBR handling. This article covers the technical details, affected versions, security impact, and mitigation strategies.

Published:

CVE-2026-46071 Overview

CVE-2026-46071 is a Linux kernel vulnerability in the KVM (Kernel-based Virtual Machine) nested SVM (Secure Virtual Machine) subsystem. The issue resides in the handling of Last Branch Record (LBR) virtualization on AMD processors. Specifically, svm_copy_lbrs() unconditionally marks the VMCB_LBR clean bit as dirty in the destination Virtual Machine Control Block (VMCB). When nested_svm_vmexit() copies LBRs to vmcb12, this behavior clears clean bits in vmcb12, which is not architecturally defined for the guest-managed VMCB. The fix moves the vmcb_mark_dirty() call to the appropriate callers and removes it for vmcb12.

Critical Impact

Improper clean-bit handling in nested SVM may lead to undefined VMCB state when guests use nested virtualization with LBR virtualization enabled.

Affected Products

  • Linux kernel (KVM/AMD SVM subsystem)
  • Systems running AMD CPUs with nested virtualization enabled
  • Hypervisor hosts using KVM with LBR virtualization

Discovery Timeline

  • 2026-05-27 - CVE-2026-46071 published to NVD
  • 2026-05-27 - Last updated in NVD database

Technical Details for CVE-2026-46071

Vulnerability Analysis

The vulnerability exists in the AMD SVM nested virtualization code path within the Linux kernel. KVM uses VMCBs to track guest state during virtual machine execution. The VMCB clean bits inform the processor which portions of cached VMCB state can be reused, optimizing world switches between host and guest.

The svm_copy_lbrs() helper duplicates LBR-related fields between two VMCBs and marks VMCB_LBR dirty in the destination. This behavior is correct when the destination is a hardware-loaded VMCB. However, nested_svm_vmexit() invokes svm_copy_lbrs() to write LBR state back into vmcb12, which represents the L1 hypervisor's view of the L2 guest VMCB.

Clearing clean bits inside vmcb12 is not part of the AMD architectural specification. The fix relocates vmcb_mark_dirty() to call sites where the destination is genuinely a hardware-tracked VMCB and omits it for vmcb12. This also prepares the code for refactoring that avoids passing the full VMCB to svm_copy_lbrs().

Root Cause

The root cause is incorrect placement of clean-bit invalidation logic inside a shared LBR copy helper. The helper assumes its destination VMCB is the active hardware VMCB, but nested VM-exit paths use it to populate vmcb12, which has different semantics for clean bits.

Attack Vector

The issue is a correctness bug in nested virtualization handling rather than a directly exploitable code-execution path. No public exploit is available, and no CVSS score has been assigned. The condition is reachable only on AMD hosts running KVM with nested SVM and LBR virtualization enabled.

The vulnerability is described in the kernel commits referenced in the Kernel Git Commit Log and additional fixes at Kernel Git Commit a3f0981a and Kernel Git Commit b53ab516.

Detection Methods for CVE-2026-46071

Indicators of Compromise

  • No specific runtime IOCs are associated with this kernel correctness issue.
  • Unexpected guest VM instability or LBR-related state inconsistencies on AMD KVM hosts running nested virtualization.

Detection Strategies

  • Inventory Linux hosts running KVM on AMD processors and identify kernels predating the upstream fix commits referenced in the kernel git log.
  • Compare installed kernel package versions against distribution security advisories for stable backports of the svm_copy_lbrs() fix.
  • Audit virtualization workloads that enable nested SVM and LBR virtualization to prioritize remediation.

Monitoring Recommendations

  • Monitor hypervisor host logs for KVM warnings or guest VM crash events tied to LBR state handling.
  • Track kernel package update status across virtualization fleets using configuration management telemetry.
  • Subscribe to the upstream stable kernel mailing list to receive timely backport notifications.

How to Mitigate CVE-2026-46071

Immediate Actions Required

  • Apply the kernel updates that include the upstream commits 9efe2356, a3f0981a, and b53ab516 once available from your Linux distribution.
  • Prioritize patching of AMD-based KVM hosts that run nested virtualization workloads.
  • Restrict who can create or configure nested guests until patched kernels are deployed.

Patch Information

The fix is available in the upstream Linux kernel stable tree. The relevant commits move vmcb_mark_dirty() out of svm_copy_lbrs() to its callers and stop marking VMCB_LBR dirty in vmcb12. Distribution-specific patched packages should be obtained from official vendor repositories.

Workarounds

  • Disable nested virtualization on AMD KVM hosts by loading the kvm_amd module with nested=0 until a patched kernel is installed.
  • Disable LBR virtualization for guests where nested SVM is required but LBR features are not.
  • Limit untrusted workloads from running on hosts that expose nested SVM to guests.
bash
# Disable nested virtualization for the AMD KVM module
echo "options kvm_amd nested=0" | sudo tee /etc/modprobe.d/kvm-amd-nested.conf
sudo modprobe -r kvm_amd && sudo modprobe kvm_amd

# Verify nested virtualization is disabled
cat /sys/module/kvm_amd/parameters/nested

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.