From: Bandan Das <bsd@redhat.com>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: qemu-devel <qemu-devel@nongnu.org>, dvyukov@google.com
Subject: Re: [Qemu-devel] Internship idea: virtio-blk oss-fuzz support
Date: Thu, 10 Jan 2019 08:40:41 -0500 [thread overview]
Message-ID: <jpgsgy0aaw6.fsf@linux.bootlegged.copy> (raw)
In-Reply-To: <CAJSP0QUV39fK4L8MwQ-rGiR0ejUm0HCyKFqARh-SKRTuDPKOXg@mail.gmail.com> (Stefan Hajnoczi's message of "Wed, 9 Jan 2019 17:34:29 +0000")
Hi Stefan,
Stefan Hajnoczi <stefanha@gmail.com> writes:
> Hi folks,
> I'd like to start fuzzing emulated devices in QEMU. Here is an
> internship project idea I'm proposing to do this.
>
> Any thoughts? Want to co-mentor this in Google Summer of Code or Outreachy?
>
> Stefan
>
> '''Summary:''' Integrate oss-fuzz into QEMU so that the virtio-blk
> device can be fuzz tested.
>
> oss-fuzz offers a fuzz testing service to open source projects. This
> means random inputs are continuously tested against the program in
> order to find crashes and other bugs. Fuzz testing complements
> hand-written test suites by exploring the input space of a program and
> therefore the code paths that may be taken.
>
> The goal of this project is to integrate oss-fuzz into QEMU so that
> the virtio-blk-pci device can be fuzzed at both the VIRTIO and PCI bus
> level. virtio-blk-pci is a PCI device, which means it is connected to
> the virtual machine's PCI bus and has a certain set of registers that
> can be programmed by the guest. Furthermore, it is a VIRTIO device -
> this is the specification the describes most of the functionality of
> virtio-blk. Bugs exist at both the PCI and VIRTIO levels, so it's
> important to fuzz both of them.
>
> Fuzzing emulated devices involves accessing their hardware registers
> randomly to make the device respond. QEMU has a device testing
> interface called "qtest" that accepts read/write and other commands
> over a socket and is ideal for writing device-level tests. You may
> find that oss-fuzz works better integrated directly into the QEMU
> program instead of as a separate qtest program, so you can consider
> adding a new command-line option to QEMU for running in oss-fuzz mode.
This sounds very interesting and if successful can easily be a stepping stone
to other sections. I would be interested in co-mentoring specifically focusing
on the PCI code.
One of the things I remember getting into trouble with when I was trying to hack
on this, especially fuzzing Qemu as a whole is what would the run environment
be like ? Would Qemu attempt to run a regular guest in oss-fuzz mode or only
a certain part of Qemu (emulated devices for example) be somehow run without
interacting with other dependent components ?
Bandan
>
> This project involves learning about VIRTIO and PCI devices, as well
> as figuring out how to integrate oss-fuzz into QEMU so that it can
> effective explore the code paths in virtio-blk device emulation code.
> You will enjoy this project if you want to learn how device emulation
> works and are interested in fuzzers.
>
> '''Links:'''
> * [https://github.com/google/oss-fuzz/blob/master/docs/ideal_integration.md
> oss-fuzz integration overview]
> * [https://github.com/google/fuzzer-test-suite/blob/master/tutorial/libFuzzerTutorial.md
> libfuzzer tutorial]
> * [http://docs.oasis-open.org/virtio/virtio/v1.0/cs04/virtio-v1.0-cs04.html
> VIRTIO specification]
> * [https://wiki.osdev.org/PCI PCI bus overview]
>
> '''Details:'''
> * Skill level: intermediate
> * Language: C
> * Mentor: Stefan Hajnoczi <stefanha@redhat.com>
next prev parent reply other threads:[~2019-01-10 13:46 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 [this message]
2019-01-10 14:01 ` Dmitry Vyukov
2019-01-10 16:07 ` Max Moroz
2019-01-10 23:25 ` Paolo Bonzini
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=jpgsgy0aaw6.fsf@linux.bootlegged.copy \
--to=bsd@redhat.com \
--cc=dvyukov@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.