KVM: nSVM: Raise #UD if unhandled VMMCALL isn't intercepted by L1
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.6.160, 6.12.86, 6.18.27, 7.0.4
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: partial
Summary
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]
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- Linux Linux
From 3f4a812edf5cb0a50e65fbdfafdb3e688da18f16 · fixed in fcef67506c0234935cb0fb026740a637edb58d7c; From 3f4a812edf5cb0a50e65fbdfafdb3e688da18f16 · fixed in 924d721fae95687acedbaf624a094ed0e8b67104; From 3f4a812edf5cb0a50e65fbdfafdb3e688da18f16 · fixed in 009c0f726abeaa67aad1d96b883bdce01d405ce2; From 3f4a812edf5cb0a50e65fbdfafdb3e688da18f16 · fixed in 5fb4a5f361565f5b629d8a8fe5288ce8463c5727; From 3f4a812edf5cb0a50e65fbdfafdb3e688da18f16 · fixed in c36991c6f8d2ab56ee67aff04e3c357f45cfc76c
- Linux Linux
6.2
- KernelLinux
From 6.2.0 · fixed in 6.6.160; From 6.7.0 · fixed in 6.12.86; From 6.13.0 · fixed in 6.18.27; From 6.19.0 · fixed in 7.0.4