KVM: nVMX: Put vmcs12 pages if nested VM-Enter fails due to invalid guest state
- 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.114, 6.18.40, 7.1.5
- 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
Summary
In the Linux kernel, the following vulnerability has been resolved: KVM: nVMX: Put vmcs12 pages if nested VM-Enter fails due to invalid guest state Put all vmcs12 pages if KVM synthesizes a nested VM-Exit due to invalid guest while emulating VMLAUNCH or VMRESUME. The invalid guest state path doesn't use nested_vmx_vmexit() as that API is intended to be used if and only if L2 is active, and the open coded equivalent neglects to put the vmcs12 pages. Failure to put the vmcs12 pages leaks any pinned pages (and/or mappings) if L1 retries VMLAUNCH/VMRESUME. Note, the !from_vmenter scenario doesn't suffer the same problem, as vmx_get_nested_state_pages() only gets/pins/maps the vmcs12 pages if L2 is active, i.e. if a "full" VM-Exit is guaranteed before KVM will retry getting vmcs12 pages.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 96c66e87deeeb3cc78a3b82a1de8e365eec206c1 · fixed in a7bf4f5b19965e4466040ad6b24919c1ed326a84; From 96c66e87deeeb3cc78a3b82a1de8e365eec206c1 · fixed in f42669f931a6f45e5918cf5e99989b9a6c65e655; From 96c66e87deeeb3cc78a3b82a1de8e365eec206c1 · fixed in 7996013b85687034d2e820cef94d6404192e3a3d; From 96c66e87deeeb3cc78a3b82a1de8e365eec206c1 · fixed in 2c87a087c20632d68920272173b5d7c47f9bcf70; From 96c66e87deeeb3cc78a3b82a1de8e365eec206c1 · fixed in 2f2312c422fd2695da772cecb30c69994b795964
- Linux Linux
5.2
- KernelLinux
From 5.2.0 · fixed in 6.6.160; From 6.7.0 · fixed in 6.12.114; From 6.13.0 · fixed in 6.18.40; From 6.19.0 · fixed in 7.1.5