Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Hi! I've prepared next release of the qemu debian package, with a few bugfixes, and am asking if it's okay to upload these changes to unstable (targetting buster). The change includes 3 security fixes which should go anyway, and 2 "other" fixes which are questionable, hence the pre-approval bugreport/question. All changes are "easy" ones, and are mostly one-liners and are easy for review. All bugfixes has been appied upstream too. Is it okay for the changes to go to buster? Thanks, /mjt diff -Nru qemu-3.1+dfsg/debian/changelog qemu-3.1+dfsg/debian/changelog --- qemu-3.1+dfsg/debian/changelog 2019-03-27 14:24:06.000000000 +0300 +++ qemu-3.1+dfsg/debian/changelog 2019-05-27 07:49:25.000000000 +0300 @@ -1,3 +1,23 @@ +qemu (1:3.1+dfsg-8) unstable; urgency=high + + * sun4u-add-power_mem_read-routine-CVE-2019-5008.patch + fixes a null-pointer dereference in sparc/sun4u emulated hw + Closes: #927439, CVE-2019-5008 + * enable-md-no.patch & enable-md-clear.patch + mitigation for MDS (Microarchitectural Data Sampling) issues + Closes: #929067, + CVE-2018-12126, CVE-2018-12127, CVE-2018-12130, CVE-2019-11091 + * qxl-check-release-info-object-CVE-2019-12155.patch + fixes null-pointer deref in qxl cleanup code + Closes: #929353, CVE-2019-12155 + * aarch32-exception-return-to-switch-from-hyp-mon.patch + fixes booting U-Boot in UEFI mode on aarch32 + Closes: #927763 + * stop qemu-system-common pre-depending on adduser + Closes: #929261 + + -- Michael Tokarev <m...@tls.msk.ru> Mon, 27 May 2019 07:49:25 +0300 + qemu (1:3.1+dfsg-7) unstable; urgency=high [ Michael Tokarev ] diff -Nru qemu-3.1+dfsg/debian/control qemu-3.1+dfsg/debian/control --- qemu-3.1+dfsg/debian/control 2019-03-11 14:35:35.000000000 +0300 +++ qemu-3.1+dfsg/debian/control 2019-05-27 07:49:25.000000000 +0300 @@ -191,7 +191,6 @@ Package: qemu-system-common Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 Multi-Arch: foreign -Pre-Depends: adduser Replaces: qemu-system-data (<< 1:3.1+dfsg-1~), qemu-utils (<< 1:3.1+dfsg-3~) Breaks: qemu-system-data (<< 1:3.1+dfsg-1~), qemu-utils (<< 1:3.1+dfsg-3~) Depends: ${misc:Depends}, ${shlibs:Depends}, diff -Nru qemu-3.1+dfsg/debian/control-in qemu-3.1+dfsg/debian/control-in --- qemu-3.1+dfsg/debian/control-in 2019-03-11 14:19:34.000000000 +0300 +++ qemu-3.1+dfsg/debian/control-in 2019-05-27 07:49:25.000000000 +0300 @@ -196,7 +196,6 @@ Package: qemu-system-common Architecture: amd64 arm arm64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sparc sparc64 x32 Multi-Arch: foreign -Pre-Depends: adduser Replaces: qemu-system-data (<< 1:3.1+dfsg-1~), qemu-utils (<< 1:3.1+dfsg-3~) Breaks: qemu-system-data (<< 1:3.1+dfsg-1~), qemu-utils (<< 1:3.1+dfsg-3~) Depends: ${misc:Depends}, ${shlibs:Depends}, diff -Nru qemu-3.1+dfsg/debian/patches/aarch32-exception-return-to-switch-from-hyp-mon.patch qemu-3.1+dfsg/debian/patches/aarch32-exception-return-to-switch-from-hyp-mon.patch --- qemu-3.1+dfsg/debian/patches/aarch32-exception-return-to-switch-from-hyp-mon.patch 1970-01-01 03:00:00.000000000 +0300 +++ qemu-3.1+dfsg/debian/patches/aarch32-exception-return-to-switch-from-hyp-mon.patch 2019-05-27 07:46:35.000000000 +0300 @@ -0,0 +1,56 @@ +From: Alexander Graf <ag...@suse.de> +Date: Mon, 21 Jan 2019 10:23:11 +0000 +Subject: target/arm: Allow Aarch32 exception return to switch from Mon->Hyp +Commit-Id: 2d2a4549cc29850aab891495685a7b31f5254b12 +Bug-Debian: http://bugs.debian.org/927763 + +In U-boot, we switch from S-SVC -> Mon -> Hyp mode when we want to +enter Hyp mode. The change into Hyp mode is done by doing an +exception return from Mon. This doesn't work with current QEMU. + +The problem is that in bad_mode_switch() we refuse to allow +the change of mode. + +Note that bad_mode_switch() is used to do validation for two situations: + + (1) changes to mode by instructions writing to CPSR.M + (ie not exception take/return) -- this corresponds to the + Armv8 Arm ARM pseudocode Arch32.WriteModeByInstr + (2) changes to mode by exception return + +Attempting to enter or leave Hyp mode via case (1) is forbidden in +v8 and UNPREDICTABLE in v7, and QEMU is correct to disallow it +there. However, we're already doing that check at the top of the +bad_mode_switch() function, so if that passes then we should allow +the case (2) exception return mode changes to switch into Hyp mode. + +We want to test whether we're trying to return to the nonexistent +"secure Hyp" mode, so we need to look at arm_is_secure_below_el3() +rather than arm_is_secure(), since the latter is always true if +we're in Mon (EL3). + +Signed-off-by: Alexander Graf <ag...@suse.de> +Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> +Message-id: 20190109152430.32359-1-ag...@suse.de +[PMM: rewrote commit message] +Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> +--- + target/arm/helper.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/target/arm/helper.c b/target/arm/helper.c +index f00c141ef9..9bf8fbd8f9 100644 +--- a/target/arm/helper.c ++++ b/target/arm/helper.c +@@ -6297,7 +6297,7 @@ static int bad_mode_switch(CPUARMState *env, int mode, CPSRWriteType write_type) + return 0; + case ARM_CPU_MODE_HYP: + return !arm_feature(env, ARM_FEATURE_EL2) +- || arm_current_el(env) < 2 || arm_is_secure(env); ++ || arm_current_el(env) < 2 || arm_is_secure_below_el3(env); + case ARM_CPU_MODE_MON: + return arm_current_el(env) < 3; + default: +-- +2.11.0 + diff -Nru qemu-3.1+dfsg/debian/patches/enable-md-clear.patch qemu-3.1+dfsg/debian/patches/enable-md-clear.patch --- qemu-3.1+dfsg/debian/patches/enable-md-clear.patch 1970-01-01 03:00:00.000000000 +0300 +++ qemu-3.1+dfsg/debian/patches/enable-md-clear.patch 2019-05-20 13:08:32.000000000 +0300 @@ -0,0 +1,68 @@ +>From a57fa50701c6a0fbe5ac7dbcc314c3c970bff899 Mon Sep 17 00:00:00 2001 +From: Paolo Bonzini <pbonz...@redhat.com> +Date: Fri, 1 Mar 2019 21:40:52 +0100 +Subject: target/i386: define md-clear bit +Bug-Debian: http://bugs.debian.org/929067 + +md-clear is a new CPUID bit which is set when microcode provides the +mechanism to invoke a flush of various exploitable CPU buffers by invoking +the VERW instruction. Add the new feature, and pass it down to +Hypervisor.framework guests. + +Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> + +[Backported to qemu 3.1 - sbeattie] + +--- + The last hunk is only needed for OS X, but anyway this is going + to be the patch that will be committed upstream. + +CVE-2018-12126, CVE-2018-12127, CVE-2018-12130, CVE-2019-11091 + + target/i386/cpu.c | 2 +- + target/i386/cpu.h | 1 + + target/i386/hvf/x86_cpuid.c | 3 ++- + 3 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/target/i386/cpu.c b/target/i386/cpu.c +index d990070c59..16da90562c 100644 +--- a/target/i386/cpu.c ++++ b/target/i386/cpu.c +@@ -1075,7 +1075,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = { + .feat_names = { + NULL, NULL, "avx512-4vnniw", "avx512-4fmaps", + NULL, NULL, NULL, NULL, +- NULL, NULL, NULL, NULL, ++ NULL, NULL, "md-clear", NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, "pconfig", NULL, + NULL, NULL, NULL, NULL, +diff --git a/target/i386/cpu.h b/target/i386/cpu.h +index 26412f15eb..cbfab1a421 100644 +--- a/target/i386/cpu.h ++++ b/target/i386/cpu.h +@@ -692,6 +692,7 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS]; + + #define CPUID_7_0_EDX_AVX512_4VNNIW (1U << 2) /* AVX512 Neural Network Instructions */ + #define CPUID_7_0_EDX_AVX512_4FMAPS (1U << 3) /* AVX512 Multiply Accumulation Single Precision */ ++#define CPUID_7_0_EDX_MD_CLEAR (1U << 10) /* Microarchitectural Data Clear */ + #define CPUID_7_0_EDX_PCONFIG (1U << 18) /* Platform Configuration */ + #define CPUID_7_0_EDX_SPEC_CTRL (1U << 26) /* Speculation Control */ + #define CPUID_7_0_EDX_ARCH_CAPABILITIES (1U << 29) /*Arch Capabilities*/ +diff --git a/target/i386/hvf/x86_cpuid.c b/target/i386/hvf/x86_cpuid.c +index 9874a46e92..f76ba50424 100644 +--- a/target/i386/hvf/x86_cpuid.c ++++ b/target/i386/hvf/x86_cpuid.c +@@ -103,7 +103,8 @@ uint32_t hvf_get_supported_cpuid(uint32_t func, uint32_t idx, + } + + ecx &= CPUID_7_0_ECX_AVX512BMI | CPUID_7_0_ECX_AVX512_VPOPCNTDQ; +- edx &= CPUID_7_0_EDX_AVX512_4VNNIW | CPUID_7_0_EDX_AVX512_4FMAPS; ++ edx &= CPUID_7_0_EDX_AVX512_4VNNIW | CPUID_7_0_EDX_AVX512_4FMAPS | \ ++ CPUID_7_0_EDX_MD_CLEAR; + } else { + ebx = 0; + ecx = 0; +-- +2.20.1 + diff -Nru qemu-3.1+dfsg/debian/patches/enable-md-no.patch qemu-3.1+dfsg/debian/patches/enable-md-no.patch --- qemu-3.1+dfsg/debian/patches/enable-md-no.patch 1970-01-01 03:00:00.000000000 +0300 +++ qemu-3.1+dfsg/debian/patches/enable-md-no.patch 2019-05-27 07:48:08.000000000 +0300 @@ -0,0 +1,29 @@ +From: Paolo Bonzini <pbonz...@redhat.com> +Subject: target/i386: add MDS-NO feature +Bug-Debian: http://bugs.debian.org/929067 + +Microarchitectural Data Sampling is a hardware vulnerability which allows +unprivileged speculative access to data which is available in various CPU +internal buffers. + +Some Intel processors use the ARCH_CAP_MDS_NO bit in the IA32_ARCH_CAPABILITIES +MSR to report that they are not vulnerable, make it available to guests. + +Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> +-- +CVE-2018-12126, CVE-2018-12127, CVE-2018-12130, CVE-2019-11091 + +diff --git a/target/i386/cpu.c b/target/i386/cpu.c +index 722c5514d4..558347e6c3 100644 +--- a/target/i386/cpu.c ++++ b/target/i386/cpu.c +@@ -1184,7 +1184,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = { + .type = MSR_FEATURE_WORD, + .feat_names = { + "rdctl-no", "ibrs-all", "rsba", "skip-l1dfl-vmentry", +- "ssb-no", NULL, NULL, NULL, ++ "ssb-no", "mds-no", NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + diff -Nru qemu-3.1+dfsg/debian/patches/qxl-check-release-info-object-CVE-2019-12155.patch qemu-3.1+dfsg/debian/patches/qxl-check-release-info-object-CVE-2019-12155.patch --- qemu-3.1+dfsg/debian/patches/qxl-check-release-info-object-CVE-2019-12155.patch 1970-01-01 03:00:00.000000000 +0300 +++ qemu-3.1+dfsg/debian/patches/qxl-check-release-info-object-CVE-2019-12155.patch 2019-05-27 07:48:22.000000000 +0300 @@ -0,0 +1,35 @@ +Commit-Id: d52680fc932efb8a2f334cc6993e705ed1e31e99 +From: Prasad J Pandit <p...@fedoraproject.org> +Date: Thu, 25 Apr 2019 12:05:34 +0530 +Subject: qxl: check release info object (CVE-2019-12155) +Bug-Debian: http://bugs.debian.org/929353 + +When releasing spice resources in release_resource() routine, +if release info object 'ext.info' is null, it leads to null +pointer dereference. Add check to avoid it. + +Reported-by: Bugs SysSec <bugs-sys...@rub.de> +Signed-off-by: Prasad J Pandit <p...@fedoraproject.org> +Message-id: 20190425063534.32747-1-ppan...@redhat.com +Signed-off-by: Gerd Hoffmann <kra...@redhat.com> +--- + hw/display/qxl.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/hw/display/qxl.c b/hw/display/qxl.c +index c8ce5781e03..632923add23 100644 +--- a/hw/display/qxl.c ++++ b/hw/display/qxl.c +@@ -777,6 +777,9 @@ static void interface_release_resource(QXLInstance *sin, + QXLReleaseRing *ring; + uint64_t *item, id; + ++ if (!ext.info) { ++ return; ++ } + if (ext.group_id == MEMSLOT_GROUP_HOST) { + /* host group -> vga mode update request */ + QXLCommandExt *cmdext = (void *)(intptr_t)(ext.info->id); +-- +2.11.0 + diff -Nru qemu-3.1+dfsg/debian/patches/series qemu-3.1+dfsg/debian/patches/series --- qemu-3.1+dfsg/debian/patches/series 2019-03-27 14:16:54.000000000 +0300 +++ qemu-3.1+dfsg/debian/patches/series 2019-05-27 07:48:22.000000000 +0300 @@ -9,3 +9,8 @@ i2c-ddc-fix-oob-read-CVE-2019-3812.patch slirp-check-sscanf-result-when-emulating-ident-CVE-2019-9824.patch device_tree-don-t-use-load_image-CVE-2018-20815.patch +sun4u-add-power_mem_read-routine-CVE-2019-5008.patch +aarch32-exception-return-to-switch-from-hyp-mon.patch +enable-md-no.patch +enable-md-clear.patch +qxl-check-release-info-object-CVE-2019-12155.patch diff -Nru qemu-3.1+dfsg/debian/patches/sun4u-add-power_mem_read-routine-CVE-2019-5008.patch qemu-3.1+dfsg/debian/patches/sun4u-add-power_mem_read-routine-CVE-2019-5008.patch --- qemu-3.1+dfsg/debian/patches/sun4u-add-power_mem_read-routine-CVE-2019-5008.patch 1970-01-01 03:00:00.000000000 +0300 +++ qemu-3.1+dfsg/debian/patches/sun4u-add-power_mem_read-routine-CVE-2019-5008.patch 2019-05-27 07:46:35.000000000 +0300 @@ -0,0 +1,42 @@ +From: Prasad J Pandit <p...@fedoraproject.org> +Date: Fri, 4 Jan 2019 15:19:10 +0530 +Subject: sun4u: add power_mem_read routine +Commit-Id: ad280559c68360c9f1cd7be063857853759e6a73 +Bug-Debian: http://bugs.debian.org/927439 + +Define skeleton 'power_mem_read' routine. Avoid NULL dereference. + +Reported-by: Fakhri Zulkifli <mohdfakhrizulki...@gmail.com> +Signed-off-by: Prasad J Pandit <p...@fedoraproject.org> +Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> +--- + hw/sparc64/sun4u.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c +index 37ecc14c6d..518d695de3 100644 +--- a/hw/sparc64/sun4u.c ++++ b/hw/sparc64/sun4u.c +@@ -214,6 +214,11 @@ typedef struct PowerDevice { + } PowerDevice; + + /* Power */ ++static uint64_t power_mem_read(void *opaque, hwaddr addr, unsigned size) ++{ ++ return 0; ++} ++ + static void power_mem_write(void *opaque, hwaddr addr, + uint64_t val, unsigned size) + { +@@ -224,6 +229,7 @@ static void power_mem_write(void *opaque, hwaddr addr, + } + + static const MemoryRegionOps power_mem_ops = { ++ .read = power_mem_read, + .write = power_mem_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .valid = { +-- +2.11.0 + unblock qemu/1:3.1+dfsg-8 -- System Information: Debian Release: 9.9 APT prefers stable APT policy: (990, 'stable'), (500, 'stable-debug'), (500, 'oldstable'), (199, 'testing'), (50, 'unstable'), (40, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.9.0-8-amd64 (SMP w/8 CPU cores) Locale: LANG=ru_RU.utf8, LC_CTYPE=ru_RU.utf8 (charmap=UTF-8), LANGUAGE=ru_RU.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system)