Bug 1377789 (CVE-2016-7777, xsa190) - CVE-2016-7777 xsa190 xen: CR0.TS and CR0.EM not always honored for x86 HVM guests (XSA-190)
Summary: CVE-2016-7777 xsa190 xen: CR0.TS and CR0.EM not always honored for x86 HVM gu...
Keywords:
Status: CLOSED WONTFIX
Alias: CVE-2016-7777, xsa190
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Red Hat Product Security
QA Contact:
URL:
Whiteboard:
Depends On: 1381576
Blocks:
TreeView+ depends on / blocked
 
Reported: 2016-09-20 15:21 UTC by Adam Mariš
Modified: 2021-02-17 03:18 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2016-10-04 13:09:30 UTC
Embargoed:


Attachments (Terms of Use)
xen-unstable, Xen 4.7.x (4.05 KB, patch)
2016-09-20 15:23 UTC, Adam Mariš
no flags Details | Diff
Xen 4.6.x (3.94 KB, patch)
2016-09-20 15:24 UTC, Adam Mariš
no flags Details | Diff
Xen 4.5.x, Xen 4.4.x (3.94 KB, patch)
2016-09-20 15:24 UTC, Adam Mariš
no flags Details | Diff
xen-unstable, Xen 4.7.x (5.51 KB, patch)
2016-09-30 12:27 UTC, Adam Mariš
no flags Details | Diff
Xen 4.5.x, Xen 4.4.x (5.10 KB, patch)
2016-09-30 12:28 UTC, Adam Mariš
no flags Details | Diff
Xen 4.6 patch (5.10 KB, patch)
2016-09-30 12:29 UTC, Adam Mariš
no flags Details | Diff

Description Adam Mariš 2016-09-20 15:21:47 UTC
ISSUE DESCRIPTION
=================

Instructions touching FPU, MMX, or XMM registers are required to raise
a Device Not Available Exception (#NM) when either CR0.EM or CR0.TS are
set.  (Their AVX or AVX-512 extensions would consider only CR0.TS.)
While during normal operation this is ensured by the hardware, if a
guest modifies instructions while the hypervisor is preparing to
emulate them, the #NM delivery could be missed.

Guest code in one task may thus (unintentionally or maliciously) read
or modify register state belonging to another task in the same VM.

IMPACT
======

A malicious unprivileged guest user may be able to obtain or corrupt
sensitive information (including cryptographic material) in other
programs in the same guest.

VULNERABLE SYSTEMS
==================

All versions of Xen expose the vulnerabilty to their x86 HVM guests.

In order to exploit the vulnerability, the attacker needs to be able to
trigger the Xen instruction emulator.

On Xen 4.7 the emulator can only be triggered: by user mode tasks which
have been given access to memory-mapped IO; in guests which have been
migrated between systems with CPUs from different vendors; or in guests
which have been configured with a CPU vendor different from the host's.

On Xen 4.6 and earlier, all HVM guests can trigger the emulator by
attempting to execute an invalid opcode, exposing the vulnerability.

The vulnerability is only exposed to x86 HVM guests.

The vulnerability is not exposed to x86 PV or ARM guests.

MITIGATION
==========

On Xen 4.7, not migrating across CPU vendors will avoid this
vulnerability.  (Unless the guest grants mmio access to unprivileged
tasks, or has been configured with a specific CPU vendor, eg using the
xl "cpuid" configuraton option.)

External References:

http://xenbits.xen.org/xsa/advisory-190.html

Acknowledgements:

Name: the Xen project

Comment 1 Adam Mariš 2016-09-20 15:23:45 UTC
Created attachment 1202945 [details]
xen-unstable, Xen 4.7.x

Comment 2 Adam Mariš 2016-09-20 15:24:07 UTC
Created attachment 1202946 [details]
Xen 4.6.x

Comment 3 Adam Mariš 2016-09-20 15:24:31 UTC
Created attachment 1202947 [details]
Xen 4.5.x, Xen 4.4.x

Comment 4 Adam Mariš 2016-09-30 12:27:55 UTC
Created attachment 1206248 [details]
xen-unstable, Xen 4.7.x

Comment 5 Adam Mariš 2016-09-30 12:28:37 UTC
Created attachment 1206249 [details]
Xen 4.5.x, Xen 4.4.x

Comment 6 Adam Mariš 2016-09-30 12:29:30 UTC
Created attachment 1206250 [details]
Xen 4.6 patch

Comment 7 Adam Mariš 2016-10-04 13:08:47 UTC
Created xen tracking bugs for this issue:

Affects: fedora-all [bug 1381576]


Note You need to log in before you can comment on or make changes to this bug.