Linux: KVM: x86: Re-pend GET_NESTED_STATE_PAGES if getting said pages fails
What fixes it
- 525694a6021ec6c8f7ce1f38acdf2dd77698fec1LinuxCVE List
- 942192dbcd3a06695ef6b31cf10a41a21cf014d8LinuxCVE List
- 10180a277549339020b08000206092c07e0bff5aLinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
KVM: x86: Re-pend GET_NESTED_STATE_PAGES if getting said pages fails
Re-pend GET_NESTED_STATE_PAGES before exiting to userspace if getting the nested pages fails in the KVM_RUN path. If userspace re-runs the vCPU, and vmcs02 holds valid PFNs from the *previous* run of L2, then KVM could re-enter L2 with stale, unpinned PFNs mapped into e.g. the vAPIC page.
Note, both SVM and VMX (as of commit 11722439fb20 ("KVM: nVMX: Ensure KVM_REQ_GET_NESTED_STATE_PAGES is cleared on VM-Exit") ensure the request is cleared on VM-Exit (including the "forced" case), i.e. there is no risk of double-mapping due to emulated VMLAUNCH/VMRESUME/VMRUN *and* the request trying to map the nested pages.
Text from CVE List
Affected versions 8
- Linuxaffected: 671ddc700fd08b94967b1e2a937020e30c838609 before 525694a6021ec6c8f7ce1f38acdf2dd77698fec1CVE List
- Linuxaffected: 671ddc700fd08b94967b1e2a937020e30c838609 before 942192dbcd3a06695ef6b31cf10a41a21cf014d8CVE List
- Linuxaffected: 671ddc700fd08b94967b1e2a937020e30c838609 before 10180a277549339020b08000206092c07e0bff5aCVE List
- Linuxaffected: 5.4CVE List
- Linuxunaffected: all versions before 5.4CVE List
- Linuxunaffected: 6.18.56 through 6.18.*CVE List
- Linuxunaffected: 7.2.10 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List