When Xen sends requests to a device model, the next expected action
inside Xen is tracked using a state field. The requests themselves
are placed in a memory page shared with the device model, so that the
device model can communicate to Xen its progress on the request. The
state field is in the request itself, where the device model may write
to it. Xen correctly rejects invalid state values, but failed to reject
invalid transitions between states. As a result, a device model which
switches a request between two states at the right times can drive Xen
into an unbounded loop.
A malicious unprivileged device model can cause a Denial of Service
(DoS) affecting the entire host. Specifically, it may prevent use of a
physical CPU for an indeterminate period of time.
All Xen versions are vulnerable.
Only x86 systems are affected. ARM systems are not affected.
Only HVM guests can expose this vulnerability. PV and PVH guests cannot
expose this vulnerability, but note that the domains being able to
leverage the vulnerability are PV or PVH ones, running the device model.
This vulnerability is only applicable to Xen systems using stub domains.
Running only PV or PVH guests will avoid this issue.
(The security of a Xen system using stub domains is still better than
with a qemu-dm running as an unrestricted dom0 process. Therefore
users with these configurations should not switch to an unrestricted
Name: the Xen project
Upstream: Jan Beulich (SUSE)
Created xen tracking bugs for this issue:
Affects: fedora-all [bug 1576680]