On 2/27/20 1:20 AM, Peter Krempa wrote:
On Wed, Feb 26, 2020 at 20:39:26 -0600, Eric Blake wrote:
> There are many existing qcow2 images that specify a backing file but
> no format. This has been the source of CVEs in the past, but has
> become more prominent of a problem now that libvirt has switched to
> -blockdev. With older -drive, at least the probing was always done by
> qemu (so the only risk of a changed format between successive boots of
> a guest was if qemu was upgraded and probed differently). But with
> newer -blockdev, libvirt must specify a format; if libvirt guesses raw
> where the image was formatted, this results in data corruption visible
> to the guest; conversely, if libvirt guesses qcow2 where qemu was
> using raw, this can result in potential security holes, so modern
> libvirt instead refuses to use images without explicit backing format.
>
> The change in libvirt to reject images without explicit backing format
> has pointed out that a number of tools have been far too reliant on
> probing in the past. It's time to set a better example in our own
> iotests of properly setting this parameter.
>
> iotest calls to create, rebase, convert, and amend are all impacted to
> some degree. It's a bit annoying that we are inconsistent on command
> line - while all of those accept -o backing_file=...,backing_fmt=...,
> the shortcuts are different: create and rebase have -b and -F, convert
> has -B but no -F, and amend has no shortcuts.
>
> Signed-off-by: Eric Blake <eblake(a)redhat.com>
> ---
[...]
> 113 files changed, 414 insertions(+), 338 deletions(-)
>
> diff --git a/tests/qemu-iotests/017 b/tests/qemu-iotests/017
> index 0a4b854e6520..585512bb296b 100755
> --- a/tests/qemu-iotests/017
> +++ b/tests/qemu-iotests/017
> @@ -66,7 +66,7 @@ echo "Creating test image with backing file"
> echo
>
> TEST_IMG=$TEST_IMG_SAVE
> -_make_test_img -b "$TEST_IMG.base" 6G
> +_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
>
My understanding of the intricacies of the qemu-iotest suite is not good
enoug to be able to review this patch. Specifically $IMGFMT in this
instance is also used in the '-f' switch of qemu-img in _make_test_img
and I don't know if it's expected for the backing file to share the
format.
That's fine; I'm hoping a qemu expert reviews as well.
$IMGFMT allows an iotest to be run on multiple formats (qcow2, qed,
vmdk); most tests in this patch series either hard-coded the base image
to be 'raw' (in which case I added -F raw) or to be the same type as the
wrapper image under test (in which case it is -F $IMGFMT). We have very
few tests that would try to mix-and-match other formats, such as a qcow2
on top of qed.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization:
qemu.org |
libvirt.org