Linux: KVM: SEV: Free have_run_cpus during VM destruction even if VM is no longer SEV
What fixes it
- 6aef7cf800098749ff5d660222efaf6e01e98c09LinuxCVE List
- 9784e5ca91b37b387f3f414af4340c54f7a63566LinuxCVE List
- 12c1f6e03f944e399bd2c88441dca5dc702b95a5LinuxCVE 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: SEV: Free have_run_cpus during VM destruction even if VM is no longer SEV
Unconditionally free SEV's "have run CPUs" cpumask in the VM destroy path, i.e. even for what appear to be non-SEV VMs, as an SEV VM becomes a non-SEV VM if its state is intra-host migrated. Alternatively, the mask could be freed in sev_migrate_from() when "converting" the source VM, but that gets annoying because ideally KVM would nullify the mask to guard against UAF, and nullifying the mask would need be conditioned on CPUMASK_OFFSTACK=y.
Freeing the mask during sev_migrate_from() is also not robust against other KVM bugs, though that's kind of a moot point since any such bugs would show up even if sev->active is never set. I.e. KVM must get that side of things correct. But, that's not a great reason to add more code just to make things marginally less robust.
Text from CVE List
Affected versions 8
- Linuxaffected: 6f38f8c574642a822f2e85f079fa29a49176c49c before 6aef7cf800098749ff5d660222efaf6e01e98c09CVE List
- Linuxaffected: 6f38f8c574642a822f2e85f079fa29a49176c49c before 9784e5ca91b37b387f3f414af4340c54f7a63566CVE List
- Linuxaffected: 6f38f8c574642a822f2e85f079fa29a49176c49c before 12c1f6e03f944e399bd2c88441dca5dc702b95a5CVE List
- Linuxaffected: 6.17CVE List
- Linuxunaffected: all versions before 6.17CVE List
- Linuxunaffected: 6.18.55 through 6.18.*CVE List
- Linuxunaffected: 7.2.9 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List