KernelScan.io

HIGH

kvm nSVM VMMCALL Bypass

CVE-2026-46076

CVSS 7.9 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:H

KernelScan AI5.5MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: KVM: nSVM: Raise #UD if unhandled VMMCALL isn't intercepted by L1 Explicitly synthesize a #UD for VMMCALL if L2 is active, L1 does NOT want to intercept VMMCALL, nested_svm_l2_tlb_flush_enabled() is true, and the hypercall is something other than one of the supported Hyper-V hypercalls. When all of the above conditions are met, KVM will intercept VMMCALL but never forward it to L1, i.e. will let L2 make hypercalls as if it were L1. The TLFS says a whole lot of nothing about this scenario, so go with the architectural behavior, which says that VMMCALL #UDs if it's not intercepted. Opportunistically do a 2-for-1 stub trade by stub-ifying the new API instead of the helpers it uses. The last remaining "single" stub will soon be dropped as well. [sean: rewrite changelog and comment, tag for stable, remove defunct stubs]

02

Engine v0.2.0

Risk summary

Nested virtualization environments using KVM's nSVM with Hyper-V L2 TLB flush enabled are at risk. L2 guests can execute hypercalls as if they were L1, bypassing proper privilege separation between nested virtualization levels.

Affectedarch/x86/kvm/svm/svm.c (KVM nSVM)

Vulnerability analysis

The root cause is in KVM's nested SVM (nSVM) VMMCALL handling when Hyper-V L2 TLB flush is enabled. When L2 is active, L1 doesn't want to intercept VMMCALL, nested_svm_l2_tlb_flush_enabled() returns true, and the hypercall isn't a supported Hyper-V hypercall, KVM intercepts the VMMCALL but never forwards it to L1. This allows L2 to make hypercalls as if it were L1, violating the nested virtualization privilege model. The fix adds explicit validation in vmmcall_interception() to synthesize a #UD exception for unhandled VMMCALLs from L2, enforcing the architectural behavior that VMMCALL should fault if not properly intercepted. This is reachable locally by L2 guests in nested virtualization setups.

03

BranchFixed inPatch commit
6.126.12.86924d721fae95
6.186.18.27009c0f726abe
7.07.0.45fb4a5f36156
mainline7.1-rc1c36991c6f8d2