CVE-2020-8834
Published: 6 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).
Notes
Author | Note |
---|---|
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() |
Priority
Status
Package | Release | Status |
---|---|---|
linux Launchpad, Ubuntu, Debian |
bionic |
Released
(4.15.0-96.97)
|
eoan |
Not vulnerable
(v4.15 kernels only)
|
|
trusty |
Not vulnerable
(v4.15 kernels only)
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Not vulnerable
(v4.15 kernels only)
|
|
Patches: Introduced by f024ee098476a3e620232e4a78cfac505f121245 Introduced by f024ee098476a3e620232e4a78cfac505f121245 Introduced by f024ee098476a3e620232e4a78cfac505f121245 |
||
linux-aws Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(ppc kernels only)
|
eoan |
Not vulnerable
(v4.15 kernels only)
|
|
trusty |
Not vulnerable
(v4.15 kernels only)
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Not vulnerable
(v4.15 kernels only)
|
|
linux-aws-5.0 Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(v4.15 kernels only)
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
linux-aws-hwe Launchpad, Ubuntu, Debian |
bionic |
Does not exist
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Not vulnerable
(ppc kernels only)
|
|
linux-azure Launchpad, Ubuntu, Debian |
upstream |
Released
(4.18~rc1)
|
bionic |
Not vulnerable
(v4.15 kernels only)
|
|
eoan |
Not vulnerable
(v4.15 kernels only)
|
|
trusty |
Not vulnerable
(ppc kernels only)
|
|
xenial |
Not vulnerable
(ppc kernels only)
|
|
linux-azure-edge Launchpad, Ubuntu, Debian |
trusty |
Does not exist
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Not vulnerable
(ppc kernels only)
|
|
bionic |
Not vulnerable
(v4.15 kernels only)
|
|
eoan |
Does not exist
|
|
linux-gcp Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(v4.15 kernels only)
|
eoan |
Not vulnerable
(v4.15 kernels only)
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Not vulnerable
(ppc kernels only)
|
|
linux-gcp-5.3 Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(v4.15 kernels only)
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
linux-gcp-edge Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(v4.15 kernels only)
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
linux-gke-4.15 Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(ppc kernels only)
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
linux-gke-5.0 Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(v4.15 kernels only)
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
linux-gke-5.3 Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(v4.15 kernels only)
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
eoan |
Does not exist
|
|
linux-hwe Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(v4.15 kernels only)
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Released
(4.15.0-96.97~16.04.1)
|
|
linux-hwe-edge Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(v4.15 kernels only)
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Ignored
(end of life, was needs-triage)
|
|
linux-kvm Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(ppc kernels only)
|
eoan |
Not vulnerable
(v4.15 kernels only)
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Not vulnerable
(v4.15 kernels only)
|
|
linux-lts-trusty Launchpad, Ubuntu, Debian |
bionic |
Does not exist
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
linux-lts-xenial Launchpad, Ubuntu, Debian |
bionic |
Does not exist
|
eoan |
Does not exist
|
|
trusty |
Not vulnerable
(v4.15 kernels only)
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
linux-oem Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(ppc kernels only)
|
eoan |
Not vulnerable
(ppc kernels only)
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Not vulnerable
(v4.15 kernels only)
|
|
linux-oem-5.4 Launchpad, Ubuntu, Debian |
bionic |
Does not exist
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
linux-oem-osp1 Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(v4.15 kernels only)
|
eoan |
Not vulnerable
(v4.15 kernels only)
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
linux-oracle Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(ppc kernels only)
|
eoan |
Not vulnerable
(v4.15 kernels only)
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Not vulnerable
(ppc kernels only)
|
|
linux-oracle-5.0 Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(v4.15 kernels only)
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
linux-raspi2 Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(ppc kernels only)
|
eoan |
Not vulnerable
(ppc kernels only)
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Not vulnerable
(ppc kernels only)
|
|
linux-raspi2-5.3 Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(ppc kernels only)
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
linux-snapdragon Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(ppc kernels only)
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Not vulnerable
(ppc kernels only)
|
|
linux-azure-5.3 Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(v4.15 kernels only)
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
|
linux-oracle-5.3 Launchpad, Ubuntu, Debian |
bionic |
Not vulnerable
(v4.15 kernels only)
|
eoan |
Does not exist
|
|
trusty |
Does not exist
|
|
upstream |
Released
(4.18~rc1)
|
|
xenial |
Does not exist
|
Severity score breakdown
Parameter | Value |
---|---|
Base score | 6.5 |
Attack vector | Local |
Attack complexity | Low |
Privileges required | Low |
User interaction | None |
Scope | Changed |
Confidentiality | None |
Integrity impact | None |
Availability impact | High |
Vector | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:N/A:H |