CVE-2020-8834

Published: 06 April 2020

KVM in the Linux kernel on Power8 processors has a conflicting use of HSTATE_HOST_R1 to store r1 state in kvmppc_hv_entry plus in kvmppc_{save,restore}_tm, leading to a stack corruption. Because of this, an attacker with the ability run code in kernel space of a guest VM can cause the host kernel to panic. There were two commits that, according to the reporter, introduced the vulnerability: f024ee098476 ("KVM: PPC: Book3S HV: Pull out TM state save/restore into separate procedures") 87a11bb6a7f7 ("KVM: PPC: Book3S HV: Work around XER[SO] bug in fake suspend mode") The former landed in 4.8, the latter in 4.17. This was fixed without realizing the impact in 4.18 with the following three commits, though it's believed the first is the only strictly necessary commit: 6f597c6b63b6 ("KVM: PPC: Book3S PR: Add guest MSR parameter for kvmppc_save_tm()/kvmppc_restore_tm()") 7b0e827c6970 ("KVM: PPC: Book3S HV: Factor fake-suspend handling out of kvmppc_save/restore_tm") 009c872a8bc4 ("KVM: PPC: Book3S PR: Move kvmppc_save_tm/kvmppc_restore_tm to separate file")

From the Ubuntu security team

Gustavo Romero and Paul Mackerras discovered that the KVM implementation in the Linux kernel for PowerPC processors did not properly keep guest state separate from host state. A local attacker in a KVM guest could use this to cause a denial of service (host system crash).

Priority

Medium

CVSS 3 base score: 6.5

Status

Package Release Status
linux
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver)
Released (4.15.0-96.97)
Ubuntu 16.04 ESM (Xenial Xerus) Not vulnerable
(v4.15 kernels only)
Ubuntu 14.04 ESM (Trusty Tahr) Not vulnerable
(v4.15 kernels only)
Patches:
Introduced by f024ee098476a3e620232e4a78cfac505f121245
Fixed by 7b0e827c6970e8ca77c60ae87592204c39e41245
Introduced by f024ee098476a3e620232e4a78cfac505f121245
Fixed by 009c872a8bc4d38f487a9bd62423d019e4322517
Introduced by f024ee098476a3e620232e4a78cfac505f121245
Fixed by 6f597c6b63b6f3675914b5ec8fcd008a58678650
linux-aws
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(ppc kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Not vulnerable
(v4.15 kernels only)
Ubuntu 14.04 ESM (Trusty Tahr) Not vulnerable
(v4.15 kernels only)
linux-aws-5.0
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-aws-hwe
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Does not exist

Ubuntu 16.04 ESM (Xenial Xerus) Not vulnerable
(ppc kernels only)
Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-azure
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Not vulnerable
(ppc kernels only)
Ubuntu 14.04 ESM (Trusty Tahr) Not vulnerable
(ppc kernels only)
linux-azure-5.3
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-azure-edge
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Not vulnerable
(ppc kernels only)
Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-gcp
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Not vulnerable
(ppc kernels only)
Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-gcp-5.3
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-gcp-edge
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-gke-4.15
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(ppc kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-gke-5.0
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-gke-5.3
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-hwe
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus)
Released (4.15.0-96.97~16.04.1)
Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-hwe-edge
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Ignored
(was needs-triage now end-of-life)
Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-kvm
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(ppc kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Not vulnerable
(v4.15 kernels only)
Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-lts-trusty
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Does not exist

Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-lts-xenial
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Does not exist

Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Not vulnerable
(v4.15 kernels only)
linux-oem
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(ppc kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Not vulnerable
(v4.15 kernels only)
Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-oem-5.4
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Does not exist

Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-oem-osp1
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-oracle
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(ppc kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Not vulnerable
(ppc kernels only)
Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-oracle-5.0
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-oracle-5.3
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(v4.15 kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-raspi2
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(ppc kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Not vulnerable
(ppc kernels only)
Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-raspi2-5.3
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(ppc kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Does not exist

Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

linux-snapdragon
Launchpad, Ubuntu, Debian
Upstream
Released (4.18~rc1)
Ubuntu 18.04 LTS (Bionic Beaver) Not vulnerable
(ppc kernels only)
Ubuntu 16.04 ESM (Xenial Xerus) Not vulnerable
(ppc kernels only)
Ubuntu 14.04 ESM (Trusty Tahr) Does not exist

Notes

AuthorNote
sbeattie
appears to only affect Power8 hardware and not Power9,
possibly because transaction memory in Power9 needs a software assist
to function.
from reporter, introduced in f024ee098476 and exacerbated by
87a11bb6a7f7.
sbeattie
Addressed by: 7b0e827c6970e8ca77c60ae87592204c39e41245 KVM: PPC: Book3S HV: Factor fake-suspend handling out of kvmppc_save/restore_tm 009c872a8bc4d38f487a9bd62423d019e4322517 KVM: PPC: Book3S PR: Move kvmppc_save_tm/kvmppc_restore_tm to separate file 6f597c6b63b6f3675914b5ec8fcd008a58678650 KVM: PPC: Book3S PR: Add guest MSR parameter for kvmppc_save_tm()/kvmppc_restore_tm()

References

Bugs