From: Paolo Bonzini <pbonzini@redhat.com>
To: Max Moroz <mmoroz@google.com>, Dmitry Vyukov <dvyukov@google.com>,
Oliver Chang <ochang@google.com>,
Jonathan Metzman <metzman@google.com>
Cc: Stefan Hajnoczi <stefanha@gmail.com>, Bandan Das <bsd@redhat.com>,
qemu-devel <qemu-devel@nongnu.org>,
Andrey Konovalov <andreyknvl@google.com>,
Kostya Serebryany <kcc@google.com>
Subject: Re: [Qemu-devel] Internship idea: virtio-blk oss-fuzz support
Date: Fri, 11 Jan 2019 00:25:32 +0100 [thread overview]
Message-ID: <e4af7025-fa8c-1078-62de-f77a11a79fc0@redhat.com> (raw)
In-Reply-To: <CABiizEQ-O-Ro9cH3xqzZUB=c5k+oYJ-gdR7ssfbbn5kU_8GcAA@mail.gmail.com>
On 10/01/19 17:07, Max Moroz via Qemu-devel wrote:
> +Oliver and Jonathan
>
> I'm a little confused. Do you want to fuzz QEMU or to fuzz something else
> using QEMU? In case of the latter, there was some discussion on OSS-Fuzz
> and (I think) even a build support was (sort of) added:
> https://github.com/google/oss-fuzz/issues/1754
We want to fuzz QEMU.
The input is a sequence of operations on a PCI device or on guest
memory, and you try and crash QEMU by passing it crazy operations.
The qtest mode that Stefan mentioned provides something like a "JTAG
over ASCII" where a testcase can inject elementary I/O operations into
QEMU. However, that is certainly too much for AFL to fuzz effectively;
it would have to "learn" the qtest protocol, how to drive the PCI host
bridge, how to setup a PCI device, and only then it would be able to
find bugs. So one idea would be to build another layer on top of qtest,
that accepts higher-level operations and builds the qtest ASCII input
from those.
However, compared to LLVM/Clang that were the motivation for
libprotobuf-mutator, in our case the underlying operands to the
operations are still binary. So it may also be possible to use the
usual AFL binary mutator, and encode the operations in a way that has
very high entropy. This way AFL can just throw crap at the qtest input
generator, and the resulting input qtest will always represent some kind
of interaction with a PCI device.
Thanks,
Paolo
> In any case, it would probably be "integrate QEMU into OSS-Fuzz" and not
> vice versa, since OSS-Fuzz is an infrastructure and you can't integrate it
> into QEMU.
next prev parent reply other threads:[~2019-01-10 23:25 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-09 17:34 [Qemu-devel] Internship idea: virtio-blk oss-fuzz support Stefan Hajnoczi
2019-01-10 10:46 ` Dmitry Vyukov
2019-01-10 13:40 ` Bandan Das
2019-01-10 14:01 ` Dmitry Vyukov
2019-01-10 16:07 ` Max Moroz
2019-01-10 23:25 ` Paolo Bonzini [this message]
2019-01-11 6:49 ` Stefan Hajnoczi
2019-01-11 15:04 ` Max Moroz
2019-01-11 15:33 ` Paolo Bonzini
2019-01-11 15:41 ` Max Moroz
2019-01-11 16:16 ` Paolo Bonzini
2019-01-11 19:09 ` Jonathan Metzman
2019-01-11 20:27 ` Paolo Bonzini
2019-01-11 22:56 ` Jonathan Metzman
2019-01-14 9:24 ` Stefan Hajnoczi
2019-01-18 7:51 ` Bandan Das
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e4af7025-fa8c-1078-62de-f77a11a79fc0@redhat.com \
--to=pbonzini@redhat.com \
--cc=andreyknvl@google.com \
--cc=bsd@redhat.com \
--cc=dvyukov@google.com \
--cc=kcc@google.com \
--cc=metzman@google.com \
--cc=mmoroz@google.com \
--cc=ochang@google.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).