Skip to main content
← All vulnerabilities
CVE-2026-46014

KVM: SVM: Add missing save/restore handling of LBR MSRs

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 6.6.160, 6.12.114, 6.18.27, 7.0.4
None on Exploit-DB, Metasploit or GitHub

Summary

In the Linux kernel, the following vulnerability has been resolved: KVM: SVM: Add missing save/restore handling of LBR MSRs MSR_IA32_DEBUGCTLMSR and LBR MSRs are currently not enumerated by KVM_GET_MSR_INDEX_LIST, and LBR MSRs cannot be set with KVM_SET_MSRS. So save/restore is completely broken. Fix it by adding the MSRs to msrs_to_save_base, and allowing writes to LBR MSRs from userspace only (as they are read-only MSRs) if LBR virtualization is enabled. Additionally, to correctly restore L1's LBRs while L2 is running, make sure the LBRs are copied from the captured VMCB01 save area in svm_copy_vmrun_state(). Note, for VMX, this also fixes a flaw where MSR_IA32_DEBUGCTLMSR isn't reported as an MSR to save/restore. Note #2, over-reporting MSR_IA32_LASTxxx on Intel is ok, as KVM already handles unsupported reads and writes thanks to commit b5e2fec0ebc3 ("KVM: Ignore DEBUGCTL MSRs with no effect") (kvm_do_msr_access() will morph the unsupported userspace write into a nop). [sean: guard with lbrv checks, massage changelog]

Timeline

  1. CVE published
  2. Record last updated

Affected versions

  • Linux Linux

    From 24e09cbf480a72f9c952af4ca77b159503dca44b · fixed in bca0597272f9712b1f8ebd38b184db1dc2902ff7; From 24e09cbf480a72f9c952af4ca77b159503dca44b · fixed in 4428a0a8643b0acf4ed7b8ea3e5975023bf4aafb; From 24e09cbf480a72f9c952af4ca77b159503dca44b · fixed in 2b922a42b531a82d7881add14a7698dcdc5e1f0a; From 24e09cbf480a72f9c952af4ca77b159503dca44b · fixed in 13a89ada5dcfc2539514c83ba5a2c61157f1ec6c; From 24e09cbf480a72f9c952af4ca77b159503dca44b · fixed in 3700f0788da6acf73b2df56690f4b201aa4aefd2

  • Linux Linux

    2.6.26

  • KernelLinux

    From 2.6.26 · fixed in 6.6.160; From 6.7.0 · fixed in 6.12.114; From 6.13.0 · fixed in 6.18.27; From 6.19.0 · fixed in 7.0.4

References 5

git.kernel.org