The emulation of the outs instruction for 64-bit PV guests uses an
uninitialized variable as the segment base for the source data if an FS: or
GS: segment override is used, and if the segment descriptor the respective
non-null selector in the corresponding selector register points to cannot be
read by the emulation code (this is possible if the segment register was
loaded before a more recent GDT or LDT update, i.e. the segment register
contains stale data).
A malicious guest might be able to get hold of contents of the hypervisor
stack, through the fault address passed to the page fault handler if the outs
raises such a fault (which is mostly under guest control). Other methods for
indirectly deducing information also exist.
A malicious 64-bit PV guest might conceivably gain access to sensitive data
relating to other guests.
Acknowledgements:
Red Hat would like to thank the Xen project for reporting this issue.