The GNTTABOP_transfer operation allows one guest to transfer a page to another guest. The internal processing of this, however, does not include zapping the previous type of the page being transferred. This makes it possible for a PV guest to transfer a page previously used as part of a segment descriptor table to another guest while retaining the “contains segment descriptors” property.
If the destination guest is a PV one of different bitness, it may gain access to segment descriptors it is not normally allowed to have, like 64-bit code segments in a 32-bit PV guest.
If the destination guest is a HVM one, that guest may freely alter the page contents and then hand the page back to the same or another PV guest.
In either case, if the destination PV guest then inserts that page into one of its own descriptor tables, the page still having the designated type results in validation of its contents being skipped.
A malicious pair of guests may be able to access all of system memory, allowing for all of privilege escalation, host crashes, and information leaks.
All Xen versions are vulnerable.
Only x86 systems are affected. ARM systems are not vulnerable.