Debian: Security update for xen

Multiple denial of service vulnerabilities have been discovered in the xen hypervisor. One of the issue could even lead to privilege escalation from guest to host. A VM that controls a PCIE device directly can cause it to issue DMA requests to invalid addresses. Although these requests are denied by the I/OMMU, the hypervisor needs to handle the interrupt and clear the error from the I/OMMU, and this can be used to live-lock a CPU and potentially hang the host. A guest which sets a VCPU with an inappropriate deadline can cause an infinite loop in Xen, blocking the affected physical CPU indefinitely.

When set_p2m_entry fails, Xen’s internal data structures (the p2m and m2p tables) can get out of sync. This failure can be triggered by unusual guest behaviour exhausting the memory reserved for the p2m table. If it happens, subsequent guest-invoked memory operations can cause Xen to fail an assertion and crash. The HVMOP_pagetable_dying hypercall does not correctly check the caller’s pagetable state, leading to a hypervisor crash. Due to inappropriate duplicate use of the same loop control variable, passing bad arguments to GNTTABOP_get_status_frames can cause an infinite loop in the compat hypercall handler.

Downgrading the grant table version of a guest involves freeing its status pages. This freeing was incomplete - the page(s) are freed back to the allocator, but not removed from the domain’s tracking list. This would cause list corruption, eventually leading to a hypervisor crash. The handler for XENMEM_exchange accesses guest memory without range checking the guest provided addresses, thus allowing these accesses to include the hypervisor reserved range. guest_physmap_mark_populate_on_demand(), before carrying out its actual operation, checks that the subject GFNs are not in use. If that check fails, the code prints a message and bypasses the gfn_unlock() matching the gfn_lock() carried out before entering the loop.

Allowing arbitrary extent_order input values for XENMEM_decrease_reservation, XENMEM_populate_physmap, and XENMEM_exchange can cause arbitrarily long time being spent in loops without allowing vital other code to get a chance to execute. This may also cause inconsistent state resulting at the completion of these hypercalls.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
- -------------------------------------------------------------------------
Debian Security Advisory DSA-2582-1 security@debian.org
http://www.debian.org/security/ Yves-Alexis Perez
December 07, 2012 http://www.debian.org/security/faq
- -------------------------------------------------------------------------
Package : xen
Vulnerability : several
Problem type : local
Debian-specific: no
CVE ID : CVE-2011-3131 CVE-2012-4535 CVE-2012-4537 CVE-2012-4538
CVE-2012-4539 CVE-2012-5510 CVE-2012-5513 CVE-2012-5514
CVE-2012-5515
Debian Bug :
Multiple denial of service vulnerabilities have been discovered in the xen
hypervisor. One of the issue (CVE-2012-5513) could even lead to privilege
escalation from guest to host.
Some of the recently published Xen Security Advisories (XSA 25 and 28) are not
fixed by this update and should be fixed in a future release.
CVE-2011-3131 (XSA 5): DoS using I/OMMU faults from PCI-passthrough guest
A VM that controls a PCI[E] device directly can cause it to issue DMA
requests to invalid addresses. Although these requests are denied by the
I/OMMU, the hypervisor needs to handle the interrupt and clear the error from
the I/OMMU, and this can be used to live-lock a CPU and potentially hang the
host.
CVE-2012-4535 (XSA 20): Timer overflow DoS vulnerability
A guest which sets a VCPU with an inappropriate deadline can cause an
infinite loop in Xen, blocking the affected physical CPU indefinitely.
CVE-2012-4537 (XSA 22): Memory mapping failure DoS vulnerability
When set_p2m_entry fails, Xen's internal data structures (the p2m and m2p
tables) can get out of sync. This failure can be triggered by unusual guest
behaviour exhausting the memory reserved for the p2m table. If it happens,
subsequent guest-invoked memory operations can cause Xen to fail an assertion
and crash.
CVE-2012-4538 (XSA 23): Unhooking empty PAE entries DoS vulnerability
The HVMOP_pagetable_dying hypercall does not correctly check the
caller's pagetable state, leading to a hypervisor crash.
CVE-2012-4539 (XSA 24): Grant table hypercall infinite loop DoS vulnerability
Due to inappropriate duplicate use of the same loop control variable,
passing bad arguments to GNTTABOP_get_status_frames can cause an
infinite loop in the compat hypercall handler.
CVE-2012-5510 (XSA 26): Grant table version switch list corruption vulnerability
Downgrading the grant table version of a guest involves freeing its status
pages. This freeing was incomplete - the page(s) are freed back to the
allocator, but not removed from the domain's tracking list. This would cause
list corruption, eventually leading to a hypervisor crash.
CVE-2012-5513 (XSA 29): XENMEM_exchange may overwrite hypervisor memory
The handler for XENMEM_exchange accesses guest memory without range checking
the guest provided addresses, thus allowing these accesses to include the
hypervisor reserved range.
.
A malicious guest administrator can cause Xen to crash. If the out of address
space bounds access does not lead to a crash, a carefully crafted privilege
escalation cannot be excluded, even though the guest doesn't itself control
the values written.
CVE-2012-5514 (XSA 30): Broken error handling in guest_physmap_mark_populate_on_demand()
guest_physmap_mark_populate_on_demand(), before carrying out its actual
operation, checks that the subject GFNs are not in use. If that check fails,
the code prints a message and bypasses the gfn_unlock() matching the
gfn_lock() carried out before entering the loop.
.
A malicious guest administrator can then use it to cause Xen to hang.
CVE-2012-5515 (XSA 31): Several memory hypercall operations allow invalid extent order values
Allowing arbitrary extent_order input values for XENMEM_decrease_reservation,
XENMEM_populate_physmap, and XENMEM_exchange can cause arbitrarily long time
being spent in loops without allowing vital other code to get a chance to
execute. This may also cause inconsistent state resulting at the completion
of these hypercalls.
For the stable distribution (squeeze), these problems have been fixed in
version 4.0.1-5.5.
For the testing distribution (wheezy), these problems have been fixed in
version 4.1.3-6.
For the unstable distribution (sid), these problems have been fixed in
version 4.1.3-6.
We recommend that you upgrade your xen packages.
Further information about Debian Security Advisories, how to apply
these updates to your system and frequently asked questions can be
found at: http://www.debian.org/security/
Mailing list: debian-security-announce@lists.debian.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
iQEcBAEBCgAGBQJQwg38AAoJEG3bU/KmdcCltWAH/0/AVD1NVvpzTz3gl5dYIwHm
kgUJIOtD0S1uESgs9KMtW+q3VzyRXBB17VzEh5la+jBkUbyc98juRViiGMi2JGai
mJxuNzxlXWRYO0TI5wO0WEjhItbxZK1PCGIssfcQ9oIDgGwooTUOAKxQx08nJ7mJ
fKtlcop9MRYNoDu8n7KHq3EwmuQNzwpEZYPVgl/uemRoL8eWzKRr34ZC4i5eBgLR
9FB/Xk61Bp944PslTUb7aZI2SK4166j5sMQPrKgr/UygPTJmBd1Fz8GtPhTxYVUh
41aMX+pJLCHdxuPhmb8zGTig7bk8RkdcfktXw8U4p3xE8HuZV1nyYz65z5qyKIY=
=cI9m
-----END PGP SIGNATURE-----