[Pkg-libvirt-maintainers] Bug#701649: Fix for stable

Guido Günther agx at sigxcpu.org
Sat Mar 9 18:54:42 UTC 2013


Hi,
sorry for the delay but attached is the diff for the stable update. This
addrsses #701649 (CVE-2013-1766) as well as #699224 (kind of
CVE-2013-0170). Is this enough for the security team to issue the DSA?
Let me know if I can help further.
Cheers,
 -- Guido
-------------- next part --------------
diff --git a/debian/README.Debian b/debian/README.Debian
index b8c97e0..02c0a49 100644
--- a/debian/README.Debian
+++ b/debian/README.Debian
@@ -56,6 +56,9 @@ Access Control
 Access to the libvirt socket is controlled by membership in the "libvirt" group.
 If you want to manage VMs as non root you need to add a user to that group.
 
+System QEMU/KVM processes are run as user and group libvirt-qemu. This can be
+adjusted via /etc/libvirt/qemu.conf.
+
 QEMU/KVM: Dropping Capabilties
 ==============================
 Network interfaces of type "ethernet" use a script like /etc/qemu-ifup to set up
diff --git a/debian/changelog b/debian/changelog
index bd3ec0d..719b74e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,17 @@
+libvirt (0.8.3-5+squeeze4) stable-security; urgency=low
+
+  * [9d7846f] CVE-2013-1766: Use libvirt-qemu as group to run qemu/kvm
+    instances.  This makes sure we don't chown files to groups possibly used
+    by other programs. (Closes: #701649)
+
+ -- Guido G?nther <agx at sigxcpu.org>  Sat, 09 Mar 2013 17:03:01 +0100
+
+libvirt (0.8.3-5+squeeze3) stable-security; urgency=low
+
+  * [0bbbca1] Add missing return on error path (Closes: #699224)
+
+ -- Guido G?nther <agx at sigxcpu.org>  Fri, 22 Feb 2013 20:32:53 +0100
+
 libvirt (0.8.3-5+squeeze2) stable-security; urgency=low
 
   * [ac67c93] CVE-2011-1486: Make error reporting in libvirtd thread safe
diff --git a/debian/libvirt-bin.NEWS b/debian/libvirt-bin.NEWS
index ee32190..c6c40f6 100644
--- a/debian/libvirt-bin.NEWS
+++ b/debian/libvirt-bin.NEWS
@@ -1,3 +1,12 @@
+libvirt (0.8.3-5+squeeze4) experimental; urgency=low
+
+  For qemu:///system KVM/QEMU processes now run as group libvirt-qemu. This
+  makes sure image files and volumes aren't accessible by users in the more
+  general and previously used kvm group. To change this behaviour adjust the
+  group option in /etc/libvirt/qemu.conf.
+
+ -- Guido G?nther <agx at sigxcpu.org>  Tue, 26 Feb 2013 06:30:48 +0100
+
 libvirt (0.8.3-2) unstable; urgency=low
 
   Disk format probing is disabled now by default for security reasons
diff --git a/debian/libvirt-bin.postinst b/debian/libvirt-bin.postinst
index ea85ad2..fed481b 100644
--- a/debian/libvirt-bin.postinst
+++ b/debian/libvirt-bin.postinst
@@ -17,17 +17,16 @@ set -e
 # for details, see http://www.debian.org/doc/debian-policy/ or
 # the debian-policy package
 
-
 case "$1" in
     configure)
     	if ! getent group libvirt >/dev/null; then
     		addgroup --system libvirt
 	fi
 
-	# user and group libvirt runs qemu/kvm instances with
 	if ! getent group kvm >/dev/null; then
 		addgroup --quiet --system kvm
 	fi
+	# user and group libvirt runs qemu/kvm instances with
 	if ! getent passwd libvirt-qemu >/dev/null; then
 		adduser --quiet \
 			--system \
@@ -40,6 +39,10 @@ case "$1" in
 			-gecos "Libvirt Qemu" \
 			libvirt-qemu
 	fi
+	if ! getent group libvirt-qemu >/dev/null; then
+		addgroup --quiet --system libvirt-qemu
+		adduser libvirt-qemu libvirt-qemu
+	fi
 
 	# libvirt from 0.6.0 on is safe to restart with running vms:
 	if [ -n "$2" ] &&  dpkg --compare-versions "$2" ge 0.6.0; then
diff --git a/debian/libvirt-bin.postrm b/debian/libvirt-bin.postrm
index d6e9b99..086fda3 100644
--- a/debian/libvirt-bin.postrm
+++ b/debian/libvirt-bin.postrm
@@ -24,7 +24,14 @@ case "$1" in
     	if getent group libvirt >/dev/null; then
     		delgroup libvirt || true
 	fi
-	
+
+    	if getent passwd libvirt-qemu >/dev/null; then
+    		deluser libvirt-qemu || true
+	fi
+
+    	if getent group libvirt-qemu >/dev/null; then
+    		delgroup libvirt-qemu || true
+	fi
     ;;
     remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
     ;;
diff --git a/debian/patches/0016-Add-missing-return-on-error-path.patch b/debian/patches/0016-Add-missing-return-on-error-path.patch
new file mode 100644
index 0000000..2da0deb
--- /dev/null
+++ b/debian/patches/0016-Add-missing-return-on-error-path.patch
@@ -0,0 +1,20 @@
+From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx at sigxcpu.org>
+Date: Fri, 22 Feb 2013 20:06:25 +0100
+Subject: Add missing return on error path
+
+---
+ daemon/libvirtd.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
+index 711360b..9b88aac 100644
+--- a/daemon/libvirtd.c
++++ b/daemon/libvirtd.c
+@@ -1820,6 +1820,7 @@ readmore:
+         if (remoteDecodeClientMessageHeader(msg) < 0) {
+             VIR_FREE(msg);
+             qemudDispatchClientFailure(client);
++            return;
+         }
+ 
+         /* Check if any filters match this message */
diff --git a/debian/patches/series b/debian/patches/series
index e98d06b..1c3ce85 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -13,3 +13,4 @@
 security/0013-Add-missing-checks-for-read-only-connections.patch
 security/0014-Make-error-reporting-in-libvirtd-thread-safe.patch
 security/0015-Fix-integer-overflow-in-VirDomainGetVcpus.patch
+0016-Add-missing-return-on-error-path.patch
diff --git a/debian/rules b/debian/rules
index 159797d..63559e5 100755
--- a/debian/rules
+++ b/debian/rules
@@ -25,7 +25,7 @@ DEB_CONFIGURE_EXTRA_FLAGS :=     \
 	--disable-rpath          \
 	--with-qemu              \
 	--with-qemu-user=libvirt-qemu  \
-	--with-qemu-group=kvm    \
+	--with-qemu-group=libvirt-qemu \
 	--with-openvz            \
 	--with-avahi             \
 	--with-sasl              \


More information about the Pkg-libvirt-maintainers mailing list