Bug 1905648 (CVE-2020-29483)

Summary: CVE-2020-29483 xen: Xenstore: guests can disturb domain cleanup (XSA-325)
Product: [Other] Security Response Reporter: Guilherme de Almeida Suckevicz <gsuckevi>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED UPSTREAM QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: jforbes, m.a.young, robinlee.sysu, security-response-team
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-12-15 22:19:52 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1908087    
Bug Blocks: 1903644    

Description Guilherme de Almeida Suckevicz 2020-12-08 18:29:02 UTC
Xenstored and guests communicate via a shared memory page using a
specific protocol. When a guest violates this protocol, xenstored will
drop the connection to that guest.

Unfortunately this is done by just removing the guest from xenstored's
internal management, resulting in the same actions as if the guest had
been destroyed, including sending an @releaseDomain event.

@releaseDomain events do not say guest has been removed.  All watchers
of this event must look at the states of all guests to find the guest
which has been removed.  When an @releaseDomain is generated due to
domain xenstored protocol violation, As the guest is still running, so
the watchers will not react.

Later, when the guest is actually destroyed, xenstored will no longer
have it stored in its internal data base, so no further @releaseDomain
event will be sent. This can lead to a zombie domain; memory mappings
of that guest's memory will not be removed, due to the missing
event. This zombie domain will be cleaned up only after another domain
is destroyed, as that will trigger another @releaseDomain event.

If the device model of the guest which violated the Xenstore protocol
is running in a stub-domain, a use-after-free case could happen in
xenstored, after having removed the guest from its internal data base,
possibly resulting in a crash of xenstored.

Comment 1 Guilherme de Almeida Suckevicz 2020-12-15 20:00:06 UTC
External References:

https://www.openwall.com/lists/oss-security/2020/12/15/4

Comment 2 Guilherme de Almeida Suckevicz 2020-12-15 20:00:19 UTC
Created xen tracking bugs for this issue:

Affects: fedora-all [bug 1908087]

Comment 3 Product Security DevOps Team 2020-12-15 22:19:52 UTC
This CVE Bugzilla entry is for community support informational purposes only as it does not affect a package in a commercially supported Red Hat product. Refer to the dependent bugs for status of those individual community products.