Your submission was sent successfully! Close

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

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()
Priority

Medium

CVSS 3 base score: 6.5

Status

Package Release Status
linux
Launchpad, Ubuntu, Debian
bionic
Released (4.15.0-96.97)
eoan Not vulnerable
(v4.15 kernels only)
precise 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

Fixed by 7b0e827c6970e8ca77c60ae87592204c39e41245
Introduced by

f024ee098476a3e620232e4a78cfac505f121245

Fixed by 009c872a8bc4d38f487a9bd62423d019e4322517
Introduced by

f024ee098476a3e620232e4a78cfac505f121245

Fixed by 6f597c6b63b6f3675914b5ec8fcd008a58678650
linux-aws
Launchpad, Ubuntu, Debian
bionic Not vulnerable
(ppc kernels only)
eoan Not vulnerable
(v4.15 kernels only)
precise Does not exist

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

precise 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

precise Does not exist

trusty Does not exist

upstream
Released (4.18~rc1)
xenial Not vulnerable
(ppc kernels only)
linux-azure
Launchpad, Ubuntu, Debian
bionic Not vulnerable
(v4.15 kernels only)
eoan Not vulnerable
(v4.15 kernels only)
precise Does not exist

trusty Not vulnerable
(ppc kernels only)
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

precise Does not exist

trusty Does not exist

upstream
Released (4.18~rc1)
xenial Does not exist

linux-azure-edge
Launchpad, Ubuntu, Debian
bionic Not vulnerable
(v4.15 kernels only)
eoan Does not exist

precise Does not exist

trusty Does not exist

upstream
Released (4.18~rc1)
xenial Not vulnerable
(ppc kernels only)
linux-gcp
Launchpad, Ubuntu, Debian
bionic Not vulnerable
(v4.15 kernels only)
eoan Not vulnerable
(v4.15 kernels only)
precise Does not exist

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

precise 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

precise 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

precise 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

precise 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)
eoan Does not exist

precise Does not exist

trusty Does not exist

upstream
Released (4.18~rc1)
xenial Does not exist

linux-hwe
Launchpad, Ubuntu, Debian
bionic Not vulnerable
(v4.15 kernels only)
eoan Does not exist

precise 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

precise Does not exist

trusty Does not exist

upstream
Released (4.18~rc1)
xenial Ignored
(was needs-triage now end-of-life)
linux-kvm
Launchpad, Ubuntu, Debian
bionic Not vulnerable
(ppc kernels only)
eoan Not vulnerable
(v4.15 kernels only)
precise Does not exist

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

precise Not vulnerable
(v4.15 kernels only)
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

precise 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)
precise Does not exist

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

precise 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)
precise Does not exist

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)
precise Does not exist

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

precise 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

precise 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)
precise Does not exist

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

precise 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

precise Does not exist

trusty Does not exist

upstream
Released (4.18~rc1)
xenial Not vulnerable
(ppc kernels only)